# Work your Lemlist replies as people, not campaign rows

> 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.

- Workflow type: app
- Services: Lemlist, HubSpot
- Categories: Sales
- Published: 2026-08-31

## What it does

- One queue of every lead who replied with interest or warmed up across all your running campaigns, with the longest unworked reply at the top.
- Someone sitting in three campaigns shows up once, with their full touch history in one place instead of three near-identical rows.
- A Prep this lead button hands the lead to a background assistant that researches the person and their company, checks whether they are already in your CRM, and writes back a call prep brief and a suggested reply.
- Stop the rest of the sequence the moment a rep takes the conversation over, or push the lead into your CRM as a contact plus a new deal in the stage the rep picks.

## What you'll need

- A Lemlist account with at least one running campaign
- A HubSpot account where your team tracks contacts and deals
- Reps who work replies as part of their morning routine, each with their own login

## Prompt

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.

## How to customize

- Choose which reply states land in the queue, interested only or interested plus warmed.
- Change the sort so the queue leads with your highest value campaigns instead of the longest wait.
- Pick which deal pipeline and stage new leads land in when a rep sends them to the CRM.
- Adjust what the prep brief covers, for example adding recent funding news or headcount growth.

## FAQ

### Does this send emails or replies for me?

No. It drafts a suggested reply that the rep reads and sends from wherever they normally reply. The app never sends anything on your behalf.

### What happens if the same person is in several campaigns?

They appear once. The app pulls every campaign record tied to their email address and merges them into a single row, so you can see every touch across every sequence before you reply.

### Will two reps end up working the same reply?

No. Each rep sees their own queue, and a lead is marked worked as soon as it has been paused or pushed to the CRM, so it stops showing up as open work.

### Does pausing a lead delete them from the campaign?

No. It stops the remaining steps in their sequence so nobody receives an automated follow up after a real conversation has already started.

### Do I need a paid HubSpot plan?

It works with HubSpot's free CRM as long as you can create contacts, deals, and notes. Free accounts have a single deal pipeline, so the stage picker will simply show that one pipeline.

Use this prompt in General Input: https://www.generalinput.com/prompts/work-your-lemlist-replies-as-people-not-campaign-rows