# Work every cold email reply from one screen with CRM context

> See every reply from all your sending inboxes in one queue, sorted by who has waited longest, with the sender's CRM history already loaded.

- Workflow type: app
- Services: AgentMail, HubSpot, Slack Bot
- Categories: Sales
- Published: 2026-08-14

## What it does

- Pulls every reply from all of your sending inboxes into one queue, so you stop opening each inbox in turn.
- Sorts that queue by how long each person has been waiting, so the reply that is costing you a meeting sits at the top.
- Shows who the sender is, their company and any open deals from your CRM the moment you open their reply.
- Lets you reply from the same screen, saves a record of what you sent to the CRM, and hands genuinely hot replies to a rep in your team chat with one button.

## What you'll need

- An AgentMail account holding the sending inboxes you run outbound from.
- A HubSpot login with access to your contacts and deals.
- A Slack workspace, only if you want the one click handoff to a rep. The rest of the app works without it.

## Prompt

I run outbound from a lot of separate sending inboxes and I need one screen to work every reply instead of opening each inbox in turn. Build me a three pane reply console: an inbox rail on the left, the reply list in the middle, and the full thread on the right with a CRM context card above a reply composer. This is a working surface, not a report. I should be able to sit in it and clear replies one after another without leaving the page.

The left rail lists all of my AgentMail inboxes, loaded with AgentMail List Inboxes, each showing the number of replies still waiting on me, with an All inboxes entry pinned at the top. Below the inbox list, show intent filters: Interested, Meeting booked, Not interested, Out of office, Referral, and Objection, each with its own count. Selecting an inbox and selecting an intent should combine, so I can look at just the objections that landed in one sending inbox.

The middle pane is the reply list for whatever I have selected, filled with AgentMail List Messages across the inboxes in scope. Each row shows the sender name and email address, a snippet of the reply, which inbox it landed in, its intent tag, and how long it has been waiting, written plainly as something like 3h 20m waiting. Sort by wait time by default, longest wait first, because the reply sitting there longest is the one costing me the meeting. Let me flip to newest first if I want, but always come back to wait time when I reopen the app.

Clicking a row opens the full thread in the right pane using AgentMail Get Message, rendered in order with the newest message last and long quoted history collapsed behind a toggle so I can see the actual reply first.

The CRM context card sitting above the thread is the point of the whole app. The moment I open a reply, look the sender's email address up in HubSpot with Search Contacts, then pull that contact's open deals with HubSpot Search Deals. The card shows who this person is, their job title, their company and lifecycle stage, then each open deal with its stage, amount and expected close date, so I know exactly who I am talking to and where the deal stands before I answer. If no contact matches the sender, say so plainly on the card and keep everything else working rather than showing an error.

Underneath the thread is the reply composer. Sending uses AgentMail Reply To Message so the reply threads correctly and goes back out from the same inbox the message landed in, never from a different one. Straight after a successful send, log what I sent back to the CRM using HubSpot Create Note associated to that contact, capturing the text I sent, which inbox it went from and the intent tag on the reply. If there was no matching contact, skip the note and tell me quietly in the interface instead of failing the send.

When a reply is genuinely hot and belongs to a rep, one Hand off button posts the thread and the CRM summary to a channel using Slack Bot Send a Message. Let me pick the channel from a list loaded with Slack Bot List Channels and save a default channel so the common case is a single click. The posted message should carry the sender and their company, the intent, the last thing they wrote, their open deals and how long the reply has been waiting. Mark the row as handed off afterwards, showing who handed it off and when.

The intent classification is the app's own work. When a reply is first seen, read it and sort it into one of the six categories, then store that result in the app's own storage keyed by message and thread, alongside the time it first arrived, whether I have replied, and whether it has been handed off. AgentMail has no way to write labels back, so never attempt to write a category onto the email side. Reading labels as a filter when listing messages is fine, writing them is not. Let me correct a wrong category directly from the row or the thread header, and always keep my correction over the app's own guess.

Wait time is measured from when the reply arrived until now, and it should keep counting while the app is open. A reply leaves the queue once I have replied to it or handed it off, with a toggle to show handled replies again so I can find something I worked earlier. Refresh on demand and whenever I switch inboxes. Treat this as a shared team console: anyone who opens it sees the same inboxes and the same queue, and rows should show who replied or who handed off so two of us never work the same reply twice.

## How to customize

- Rename the reply categories, or add your own, to match how your team already talks about replies.
- Change the default sort or set your own threshold for a reply that has waited too long, so ageing replies stand out sooner.
- Choose which chat channel handoffs go to and what the handoff message includes.

## FAQ

### Does this work if I send from a lot of different inboxes?

Yes, that is the whole point of it. The left rail lists every sending inbox you have with a count of replies still waiting, and you can either work one inbox at a time or work all of them together in a single queue.

### Will it reply to people automatically?

No. Nothing leaves your inbox unless you write it and press send. The app gathers the replies, tells you who each person is and puts a composer in front of you, but you stay in control of every word that goes out.

### How does it decide whether a reply is interested or an objection?

The app reads each new reply as it arrives and sorts it into one of your categories, such as Interested, Meeting booked or Out of office. It keeps that category in its own records because your email tool has nowhere to store it, and you can correct any category it gets wrong.

### What happens if the person who replied is not in my CRM?

The context card simply tells you there is no matching record instead of showing an error, and everything else keeps working. You can still read the thread and reply as normal, and the app will let you know it skipped saving a copy to the CRM.

### Do I need a paid HubSpot plan for this?

No. It reads your contacts and deals and writes a note onto the contact, all of which are available on HubSpot's free CRM. If you are on a paid plan you will simply see richer deal information on the context card.

Use this prompt in General Input: https://www.generalinput.com/prompts/work-every-cold-email-reply-from-one-screen-with-crm-context