Work your Lemlist replies as people, not campaign rows

By General Input

Open one queue every morning with every interested reply across all your campaigns, deduped to one row per human, with research and CRM handoff built in.

Integrations

  • Lemlist
  • HubSpot

Type

App

Categories

  • Sales

Build me an internal app my SDRs open every morning to work our Lemlist replies as people rather than as campaign rows. Lemlist reporting is sequence-centric, so the same human shows up separately in every campaign they are enrolled in. This app is the contact-centric surface that gap implies: one row per human, not per sequence enrollment.

The main view is a single queue of every lead currently in the interested or warmed state across all running campaigns. Build it from Lemlist List Campaigns to get the running campaigns, then List Campaign Leads on each one filtered by lead state to interested and warmed. Use Get Lead by Email to collapse someone who sits in three campaigns into one row, so the rep sees the full touch history in one place instead of three near-identical entries. Sort the queue by how long the reply has gone unworked, longest wait at the top.

Each row shows the person, their company, which campaigns they are enrolled in, their state in each one, and how long the reply has been sitting. Clicking a row opens a detail panel with the merged touch history across every campaign: which sequence steps ran, on which channel, and when they replied.

Put a "Prep this lead" button on the detail panel that kicks off a background agent. The agent gathers that person's records across campaigns with Get Lead by Email, checks whether they already exist in our CRM with HubSpot Search Contacts, researches the company on the web, then writes a call prep brief and a suggested reply. Both land back in the app on that lead's detail panel so the rep can read them there, and when a matching CRM contact exists the agent also files the brief on it with HubSpot Create Note. Show the run state on the panel so the rep can tell prep is in progress and come back to it.

Two more actions live on the panel. Pause Lead calls the Lemlist Pause Lead operation to stop the remaining sequence steps the moment a rep takes the conversation over, so nobody receives an automated follow up after a real conversation has started. Send to CRM creates the record with HubSpot Create Contact and opens a deal with Create Deal, into a pipeline stage the rep picks from a dropdown populated by HubSpot List Pipelines.

Each rep should see their own queue. Store worked state in the app: a lead is marked worked once it has been paused or pushed to the CRM, so nobody double taps the same reply. Worked leads drop out of the default queue view but stay reachable behind a filter so a rep can go back and see what was done.

One important constraint to bake in: Lemlist rate limits at 20 requests per 2 seconds per API key. The queue handler should page campaign leads deliberately, one campaign at a time with paced requests, rather than fanning out across every campaign at once. Cache the assembled queue so opening the app does not refetch everything, and give the view a manual refresh control.

Related prompts

Explore more prompts
Turn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe revealsWhich companies your LinkedIn ads reach, matched to your CRMLead response desk with a running clock on every new leadApprove Lusha enrichment field by field before HubSpot saves it