Send gate
The human gate on the send layer: review the drafts your runs produced, set the channel and recipient, and approve one to dispatch, with a per-tenant kill-switch.
Review prepared work first
Read the full message beside its approval scope, and edit it there if it needs work. Save edit stores the message; approving with an unsaved change is refused and says so, because the send uses the saved text. A changed subject goes with the approval. Confirm the recipient, content and scope before approving. Changing the message, subject, recipient or channel clears that confirmation. Refresh before approving if the draft was edited elsewhere.
The approval queue comes first. Sending settings, ad exports and Instantly campaign controls are in a disclosure below it. Review the message, recipient and exact scope before approving.
Dispatch Queue is the approval surface for outbound. Your scheduled runs draft messages; this page is where a human reviews one, sets the channel and recipient, and approves it to dispatch. Every attempt runs through the same deterministic dispatcher the rest of the platform uses, and every attempt, sent or held, is recorded to the sends ledger shown at the bottom of the page.
What the draft card shows
To repeats the recipient as you type it. Evidence is what is on record behind the message: what your recurring plan or first launch recorded about that address (how it was found and whether anything has checked that mail reaches it), the research sources the draft cited, and the business brief revision it was written from. When none of that is recorded it says Not recorded; it never reads as a pass.
Account schedule sits under the card. Target names the account the draft is about and any account schedule saved for it on the Team page. Send checks lists the checks the send path runs when you approve: channel configuration, support hold, reply or bounce stop, exclusion policy hold, address verdict, duplicate claim, the send layer switch, a paused mailbox or campaign, the mailbox's cold cap, the daily send cap, recipient and message, and channel credentials. The list comes from the same code that makes the checks, and a test fails if the two drift apart, so the card never names a check that is not made. The reply stop and the exclusion check apply to email addresses. View an uncertain send opens Receipts.
Execution tool picks what an approved email goes out through. It lists only what you have connected, Gmail first, then Outlook, then Instantly campaign when your Instantly connection has an API key, a campaign and a sending account saved. The approval sends through the one you chose; if it is disconnected by the time you approve, nothing is sent and the card says so. With nothing connected it is greyed out and approving is refused with the setup step. It does not apply to LinkedIn, which has a copy button instead (see below).
Approve chooses the scope. This message only approves the one saved message once you tick the review box and press Confirm approval. This reviewed sequence shows your daily prospecting plan's follow-up sequence as a table with its approval state, and Approve sequence records the same approval as the plan page. It covers the plan's contacts only and does not send the message on the card. With no plan, or with this version already approved, the button is greyed out and says why.
The send-layer kill-switch
Sending is off by default, per tenant. Open Sending settings and campaign controls to find the kill-switch: with it off, approving a draft records the attempt and reports it as held, but nothing is sent. Turn it on only when you are ready to send for real. This means you can wire up and review the whole flow, approvals included, before a single message leaves, and turn everything off instantly if something looks wrong.
Beside the switch is the daily cap. Until you set one it is 50 sends a day, marked as the default. Your mail goes out from your own mailbox, and a personal mailbox that jumps from a few messages a day to hundreds is what spam filters look for; 50 leaves room for your approved sends while staying far below what Gmail and Outlook allow. Type a number and save to set your own, higher or lower. Clear the field and save to go back to the default.
Require a verified address before sending sits under the switch. Every address carries a verdict (see Contact Enrichment). An invalid address, one a verifier could not confirm, and one on a catch-all domain you have not approved are always held: the approval is refused with address_invalid, address_unknown or address_unverified and the reason. With this box ticked, an address no verifier has checked is held too, with address_unverified. It is off for workspaces created before 1 November 2026 and on for workspaces created after, until you change it.
If too much mail from the mailbox an approval would send from bounced in the last 14 days, that mailbox is paused and the approve button is disabled, with the reason when you hover it. Check the recipient, then choose I checked this address beside the button to send that one draft. Every other new draft stays held until you resume the mailbox in Connections. A reply in a thread where the person has answered you still goes out.
Sending health
Each mailbox you send from is watched on its own, beside the checks on each message. The Sending health strip, below the approval queue, has one row per mailbox: its address and domain, the three DNS chips, its sending age, today's cold sends against its cap, its 14-day bounce rate, and a state of Healthy, Warning or Paused. Click a DNS chip to see the record we read and what to change. When a mailbox or campaign is paused, a notice at the top of the page says which one and why, and its row has a Resume button that asks you to confirm first. When the sending domain is your company's own domain (from Settings, Brand and Company) and it sent more than 20 cold messages today, the row suggests a secondary domain; that notice never blocks a send. An Instantly sending account, when Instantly is connected, has its own row: its DNS chips, the age and warm-up state Instantly reports, and its campaign's bounce rate counted against accepted enrolments. Instantly paces its own sending, so it has no cap here. When the bounce rule pauses the saved Instantly campaign, it is also paused on Instantly's side, through the same recorded action path as the Pause control.
DNS records. Once a day the platform reads your sending domain's SPF, DKIM and DMARC records and grades each one. Pass means the record is there and strict: one SPF record ending in -all or ~all, a DKIM key, a DMARC policy of quarantine or reject. Weak means it is there but lets failing mail through: SPF ending in ?all or +all, two SPF records, or DMARC at p=none. Missing means there is no record. Unknown means we could not tell: DNS did not answer, or no DKIM key sits at the selectors we try (google, selector1, selector2). A custom selector is fine, so unknown is never reported as missing. A weak or missing record is a warning; it never pauses sending.
The cold cap per mailbox. Each mailbox can send 25 cold messages a day by default, inside your account's daily cap. A mailbox with fewer than 14 days of sending behind it gets 10, because a new address that jumps to full volume is what spam filters look for. A reply inside a thread where the person has answered you is not cold and never counts. A draft over the cap is held, recorded as held, and can go tomorrow.
The bounce line. When the bounces from one mailbox, or from one campaign, reach your line over the last 14 days, it pauses on its own. The line is 2% unless you set it between 1% and 5%, and it applies once 50 messages went out in the window. Below 50, three bounces that are at least 5% of what went out still pause it. A campaign is one skill's stream of drafts, so a bad list in one campaign stops that campaign and leaves your other sends alone. The check runs right after the hourly reply sweep records a bounce.
Settings. Under Sending settings and campaign controls, the Send layer block has the daily cold cap per mailbox and the bounce line. Leave either blank to use the default (25 a mailbox, 2%). The account's daily cap stays in force on top of both.
Resuming. A pause never lifts on its own, even when the rate falls. Fix or remove the bounced addresses, then resume; the record keeps who resumed it and when, and bounces from before the resume stop counting.
Approving a draft
Each draft carries content, not a destination, so you choose the channel (email or LinkedIn) and enter the recipient when you approve it. The dispatcher gates the send in order: approval, then the send-layer toggle, then the channel configuration, then the send. The result is shown inline on the draft, one of sent, held (send layer off), held (provider not configured), or an error, so you always know exactly what happened. The result appears under the Approve button in the approval scope panel; the result of saving an edit appears under Save edit in the message panel.
When the recipient you enter replied to an earlier message sent from your Outlook or Gmail mailbox, and the draft was written after that reply, the draft is your answer. The approval scope then reads Replies in the same conversation, and approving sends it as a reply to the original message, so it lands in the same thread in their inbox rather than as a new email. Through Gmail the reply keeps the thread's subject (Re: and the original subject), because Gmail adds a message to a thread only when the subjects match; the subject you type is used only when the thread's subject was never read. If the original conversation can no longer be found in your send history, nothing is sent and the reason shows under Approve. A draft to someone with no reply on record goes out as a new message.
A channel with no way to deliver at all, such as LinkedIn or an email address with no mailbox connected behind it, is refused at the click rather than accepted and then held. The message names the reason and the one setup step that fixes it (connect a mailbox or Instantly, or copy the draft yourself for LinkedIn), and the refused attempt is still written to the ledger so it is not missing from the history.
Approving the same draft twice, from a double click or a second tab, does not send twice. The first approval takes the draft, and a second one that arrives while the first is still in flight is told to check the Sent folder rather than being sent again; once the first has an outcome, the second approval is shown that same outcome and says plainly that nothing went out a second time.
Working for a client
When you act for a client from the client switcher, this page reads and writes that client's drafts, sends, mailboxes and send layer, under their do-not-contact list and sending domains. The approve button reads Send for and the client's name, and the result line names the client and notes that the send is logged with your name. As a Drafter the button is off and the card says sending needs an approver at that client; you can still edit the message. Resuming a paused mailbox, turning on the send layer, Instantly actions and CRM writes take an Approver as well. See Client workspaces.
Running an Instantly campaign action
The Instantly panel uses the campaign and sending account saved on Connections. Enrollment starts from one queued draft and one recipient. The first click stores an exact review receipt. The second click executes only that saved receipt. Editing the draft or changing the connection invalidates the review.
Pause and resume apply only to the saved campaign. Removing a recipient requires the request receipt from an accepted enrollment and a separate confirmation. If Instantly times out or returns an uncertain result, the panel holds every equivalent request instead of trying it again. Instantly remains a preview connection until these operations pass a controlled live run.
Honest about what is live
Email goes out through the Google account you connected under Settings, Connections. Your address is the From line, your domain carries the reputation, and the reply lands in your own thread. That path is capped at 200 messages an hour per account, which is far above working a queue by hand and far below a script.
Cold email can also go out through your own Instantly workspace. Instantly sends campaigns, not single messages, so approving a draft with Instantly as the execution tool enrols the recipient as one lead in the campaign saved on your Instantly connection. The approved message rides on the lead: the body in Instantly's personalization field and the subject in a custom variable named si_subject. Set the first step of that campaign to use {{personalization}} as its body and {{si_subject}} as its subject. Before enrolling, we read the campaign, and if any variant of its first step does not use both, nothing is enrolled and the card says why, because Instantly would otherwise send its own text instead of the message you approved.
A sent result from Instantly means Instantly accepted the enrolment; the campaign's schedule decides the minute the email leaves, and the result line says so. Every gate on this page still applies first: your approval, the send layer switch, the daily cap, the reply, bounce and exclusion stops. A retried approval reuses the first request, so the same draft is never enrolled twice, and an uncertain answer from Instantly is held for reconciliation rather than tried again. Instantly stays a preview connection until a paid workspace's first sends are confirmed in the ledger.
Why LinkedIn is copy-only
Choose LinkedIn as the channel and the approve button is replaced by Copy message. It copies the saved message to your clipboard; you paste it into LinkedIn and send it yourself. Nothing is sent from here and nothing is recorded as sent. The reason is not that we have not got round to it.
The LinkedIn tool we route through is a campaign platform, and its API has no endpoint that sends a message. You add a person to a campaign that is already running, and that campaign's own sequence, written inside their tool, does the outreach. There is no way to hand it the words drafted here and have those words go out.
So enrolling somebody there and reporting your draft as sent would tell you a message went out that never did, while a different message reached your prospect. Copying it is the honest path, and the note beside the button says exactly this. An approval sent for LinkedIn by another route is still refused with the same reason and written to the ledger.
The obvious workaround is a hosted LinkedIn login that drives your account directly. We are not building that. It is automation against a platform whose terms forbid it, and it is not a risk to take on your behalf.
Exporting as ad copy
The queue can hand you your approved drafts as a CSV in the shape an ad platform's bulk importer wants: Google responsive search ads, LinkedIn single-image ads, or Meta feed ads. Pick the platform and download it.
It touches no ad account. We do not create a campaign, set a budget or spend anything. You get a file and you upload it, which keeps the approval gate the shape it has everywhere else here: a person is still the last step before words reach a stranger.
Nothing is rewritten. The headline is your draft's subject and the description is its first sentence, unaltered. An exporter that tightened a headline to make it fit would be putting words you never read in front of your buyer, on the way out of the queue that exists to stop exactly that.
Copy that is too long is flagged, not cut. Every row carries a status in the first column and, when something is over, how many characters over it is. A headline sliced mid-word still gets served, so silent truncation would ship the defect rather than report it. Fix the flagged rows before you upload, or upload them and let the platform decide: Google refuses an over-length headline at import, while LinkedIn and Meta accept it and clip it in the feed, which is worse because it looks right in the editor.
Only drafts still in the queue are exported. Something you dismissed is not copy you approved, and putting it into an ad account would be the same mistake as sending it.
Character counts are approximate. Platforms count emoji and non-Latin script differently from each other, and the file says so.
Exporting an ads audience
Under the ad copy export, Export ads audience gives you the companies to show those ads to, as a company list an ad platform can match. It is built from your target accounts on Market, the same list your outreach works from, so ads and outreach point at one list instead of two.
Accounts already in a conversation are left out. Every account goes through your exclusion policy first. An account where a sequence is running (a send in the last 21 days with no reply or bounce yet), where someone replied with interest in the last 14 days, that you excluded, or that is already a customer is not in the file. The preview counts each reason and lists every account it left out, so you can see why before you download.
Tier 3 is out unless you tick it. Tier 1 and Tier 2 are in, and so are accounts that have not been tiered yet, because most lists start that way. The file is ordered by tier, then by fit score.
Small lists still download. Most platforms need about 300 matched companies before a campaign can run, and not every company in a file matches. Below that the preview says so, and you can add a tier or download anyway.
Pick the layout: a generic company CSV (name, domain, country, tier) or the LinkedIn company list template's column names. It touches no ad account and spends nothing; you upload the file. Each download is recorded, so the Coverage section on Market can count those accounts as "in an exported audience". That means the account was in a file you exported, not that anyone saw an ad. If your records could not be fully read, the file is not offered until they can, because a missed reply could leave an account mid-conversation in the file.
When a colleague already replied
When someone at an account replies with interest, a referral or "later", on email or on LinkedIn, everyone else at that account is held for 14 days: from being picked as a contact, from drafting, and from sending. The draft card says who replied, on which channel and on what day, and when the hold ends. The person who replied is not held, because their thread is the conversation. A reply whose intent could not be read holds the account too; only a reply read as not interested or unclear releases it.
The sending check covers email. A LinkedIn message is not held at sending, because a LinkedIn handle cannot be matched to the person who replied, and holding it would also stop the reply to them.
Approving a held draft is refused with the same reason, and the attempt is recorded as held in the ledger below. To contact someone there anyway for one launch, add an exception for the account on that launch; it lifts the hold there and nowhere else.
What came back
An hour after a send, and hourly after that for thirty days, the platform reads the thread your message landed in and records what arrived. The Reply column on the ledger carries one of four states: no reply yet, replied, auto-reply, or bounced.
Those last three are kept apart on purpose. An out-of-office and a dead address are not answers, and folding them into one reply count is how a reply rate stops describing anything. A reply also goes onto the event bus, so the rest of the platform reacts to it the same way it reacts to a reply that arrived through a connected CRM.
An auto-reply does not close a thread out the way a real reply or a bounce does. It moves the next touch instead: the sweep reads a return date out of the message when it gives one ("back on the 28th") and waits until then, or waits a week when it does not, and the ledger row shows the new date next to the auto-reply chip. The thread is checked again the next day rather than every hour, so the same away message is not re-read thirty times before the person is back. A reply from the person, on the same thread, after the away message still ends the wait and reads as a reply.
Where your deployment has reply alerts switched on, a Gmail mailbox does not wait for the hour. Gmail tells the platform when new mail arrives, and when it is a person answering a thread you sent from here, you hear about it within a few minutes: a notification on any device where you turned on notifications, or an email to your own sign-in address if none took it. The alert carries a drafted answer and what the reply reads as. The draft waits on Home like every other draft, and nothing is sent until you approve it. A thread alerts at most once every ten minutes, so a second message straight after the first does not interrupt you again. Away messages and bounces do not alert; the hourly sweep still records those, and it keeps running as before, so a reply the alert missed still reaches the ledger within the hour. Outlook mailboxes are swept hourly only, for now.
Only threads from your own mailbox are swept, because that is the mail we can see. Nothing is read but the sender, the subject, the date and the auto-reply headers, plus the one-line preview Gmail already returns. The message body is never fetched. If your mailbox is disconnected the sweep stops and the rows keep their last state, rather than being recorded as unanswered: not being able to look is not the same as nobody writing back.
Right before anything is sent or enrolled, the address is checked against your suppressions: a contact who opted out, asked not to be contacted, or bounced is held even if the draft was written before that happened. Other rules, such as an existing customer or an open opportunity, apply when research picks people, not here, because a renewal note to a customer is ordinary work.
A reply or a bounce stops what comes next for that person, wherever it was going to come from. Approving a draft to someone who replied after the draft was written is refused with the date of the reply, so you read it first; a draft you write after the reply goes out normally. A bounced address is refused every time. The same check runs before an Instantly enrolment, and a reply to a message sent from here also stops that person's daily-prospecting follow-ups. Replies and bounces that Instantly reports count too: when Instantly tells us a lead replied to one of its campaigns, or that mail to the lead bounced, approving a draft to that exact address is refused the same way and the daily-prospecting follow-ups stop. Instantly sometimes sends the same report twice; the second copy changes nothing. A report only ever stops sends in the workspace whose Instantly connection sent it. If the check cannot be read, nothing is sent and the row says why.
When a person replies, the sweep also reads the subject and that preview for what the reply is saying. A reply that reads as interested shows Open an opportunity on its ledger row. Nothing is written until you press it. The opportunity opens on Deals with the account, the contact and the send it came from, and with no amount or close date, so it does not count as qualified until you add them. Once it is open the row links to it instead. Because only the preview is read, a long reply whose interest comes late may not be offered one; open the deal by hand then.
Conversation on any sent row opens that send's history below the ledger, in time order: the approved message and whether the provider returned a receipt, the reply and what it reads as, the stop that a reply or bounce puts on later sends to that address, any meeting a connected calendar or call linked to the opportunity by the attendee's address, and the opportunity itself. Each line comes from a stored record. A piece nobody recorded reads "Not recorded" rather than being guessed, and no sequence step number is shown because none of these records carries one.
Under the history, an open opportunity says whether it is in your CRM. When an approved CRM write named this opportunity and the CRM confirmed it, the panel shows the record id and Open in Salesforce (or Pipedrive, HubSpot, Attio) to the record itself. The link is built from the record id the CRM returned and the address your connection stored. HubSpot needs your portal id, which the panel reads from HubSpot right after it creates a deal. Attio needs a record address that only its own write returns; when the panel lacks what it needs, it names the record id with no link, so you can search for it. When no CRM write names the opportunity, the panel says it was not written to a CRM and exists only in this workspace.
Opening a reply's opportunity does not write it to your CRM. When Salesforce, HubSpot or Pipedrive is connected, the panel offers Write to Salesforce (or the CRM you connected; with more than one, Salesforce comes first, then HubSpot, then Pipedrive). That button writes nothing. It saves a proposal that shows exactly what will be created: the name (the account), the stage and, for Salesforce, a close date thirty days out unless the opportunity has its own. New Salesforce opportunities start at Prospecting, HubSpot deals at Appointment scheduled in the default pipeline, and Pipedrive deals in the first stage of your default pipeline. Approve and write is the step that creates the record, through the same approval path as every other CRM write, and the panel then shows Open in your CRM. Dismiss drops the proposal. A failed write says why and offers the button again; a write whose outcome is unknown asks you to check the CRM first, so a second click cannot make a duplicate. Attio cannot take this write yet, because its deals need an owner and a stage from your workspace's own setup. With no CRM connected, the panel says so and links to Connections, where you add one. View revenue origin opens Revenue Cockpit on this opportunity's origin: the research behind the draft, the contact, the approved send, the reply, any meeting, the opportunity and its CRM record.
Beside the history, Sales handoff holds the qualification: Not qualified, Needs discovery, or Qualified for Sales. It is stored on the opportunity, so it is available only once an opportunity is open; until then the control is disabled and says why. Choosing Qualified for Sales raises one handoff to the Sales role, which appears in the Sales console with the reply as its source. Choosing it again finds the same handoff rather than raising a second. The qualification does not change the deal's stage, amount or close date.
Routing: which channels each contact gets
When the morning queue writes a draft, it first decides the contact's route from three things: the account's tier, how many fresh signals the account has (kinds of buying signal in the last 30 days), and which of the contact's channels are verified. The Routing section lists every queued draft with those three things and the route, and four tiles count them: email and LinkedIn, email only, nurture and held.
The rules, in order.
- No verified email and no phone number: the contact is held. It gets no draft, is not scored, and never enters a sequence.
- Tier 3: nurture, with no cold send. The exception is when your brief names a motion (landgrab, lighthouse or signal-led) or the account is in a blast-first segment on Market, where one email to the long tail is the point.
- Tier 1 with two or more fresh signals, a verified email and a LinkedIn profile: email and LinkedIn, plus a call task when a phone number is on file.
- Other Tier 1 contacts: email, plus a call task when a phone number is on file.
- Tier 2, and accounts the weekly pass has not tiered yet: email only.
- A channel you have not set up is dropped, and the reason says so ("LinkedIn not connected, email only"). With nothing left, the contact is held.
What "verified" means. An email counts when the address checks would let a cold draft go to it: a verifier said valid, or you approved that catch-all or role address, or no verifier has checked it and you have not turned on "Only send to verified addresses". A catch-all address you have not approved does not count. Phone numbers are looked up for Tier 1 accounts only.
LinkedIn. No connected tool can deliver a drafted LinkedIn message (see below), so a route that qualifies for LinkedIn keeps the email and says LinkedIn is not connected. Tier 1 accounts still get their human-led task, and Tier 2 keeps the LinkedIn task for you to send yourself; those are tasks, not sends.
Routing comes before approval, never instead of it. The route is stored on the draft. Sending refuses a draft whose route is held or nurture, or that is not routed to the channel it would go out on. Approval, the kill-switch, the daily cap and every other send check still run on a routed draft. Drafts written before routing existed show a route worked out when the page loads, and are not blocked by it.
Held: no verified channel. Below the routes, every prospect at a tiered account with no verified email and no phone is listed with what we have (for example "Email: catch-all") and why it is held. "Find another address" opens Enrichment, where you can run the lookup again for that contact.
Angles
The Angles panel under the queue shows which openers drew conversations in each segment. An angle is four things a draft was built on: the segment, the signal that made the account worth working (hiring, funding, a tool change), the person's role, and the opening line. The line is reduced to its first twelve words with the person's name and company taken out and numbers replaced, so the same opener sent to two people counts as one angle.
What counts as positive. A reply that reads as interested, or one that points you to someone else. A reply that could go either way, a "not now", an out-of-office and a bounce are not positive. A send counts as decided once a reply arrives or 14 days pass without one.
The three verdicts. Every Friday each angle gets one:
- Worked: its likely positive rate, at the low end, beats the rest of its segment. Until the segment has enough other sends to compare against, the bar is 2%.
- Went nowhere: 20 or more decided sends and no positive reply, or a likely rate well under half the rest of the segment.
- Too early: fewer than 8 decided sends, or the numbers do not settle it yet. The row says how many more decided sends it needs.
Each row shows the decided sends, the positive replies and the likely positive rate as a range, so a lucky 2 of 3 does not read like a proven opener. Pick a segment from the filter when you have more than one.
What it changes. Drafting reads the ledger before it writes. The sequence drafting skill and your first-launch drafts are told which angles worked in the account's segment and which went nowhere, and each draft records the angle it used, so a deliberate retry is measured too. A draft card whose angle has a verdict says so: built on a worked angle, or a warning that the opener went nowhere, with its numbers. The warning never blocks approval.
Drafts written before the ledger existed have no angle recorded and are not scored; nothing guesses an angle from an old message. First-launch drafts placed straight into your Gmail drafts record their angle but are scored only once they go out through this queue.
Not Studio's angles. Content Studio's scored angles are topics for posts before you publish. These are outbound openers, judged after they were sent.
The CRM sees the send
Once a provider confirms a message went out, the queue logs it to whichever CRM you have connected (Salesforce, HubSpot, Pipedrive or Outreach, in that order, first connected wins) as a completed activity: the recipient, the subject, when it sent, and the account it was about. The Role and CRM columns on the ledger show which skill drafted the send and whether the log landed.
This never blocks or repeats the send. A CRM that is slow, unreachable, or not connected costs the ledger a "not logged" row, not the send itself, and a retried approval that finds the send already logged for that provider's message id does not log it a second time.
When a send's outcome is unknown
If the connection drops between the provider accepting a message and the queue hearing back, the draft is left in a state that refuses a second approval rather than guessing: a retry would risk a second email exactly when honesty matters most. Check the Sent folder of the connected mailbox for that recipient. If the message is there, the send happened and no action is needed; the ledger will show it once the record catches up. If it is not there, this is a rare case a support request resolves, not a self-serve retry, because clearing it today means removing the stuck claim record directly.
When the send layer cannot be read
The send layer is a kill switch, so the page never guesses at it. If the setting cannot be read, the panel says the state is unknown and the button offers to retry, rather than showing "Off, nothing sends". That is a claim about whether mail can leave your account, and a failed request is not evidence for it.
A toggle or daily-cap save that fails tells you so and names what is still in force, so a click that did not land never looks like one that did.
The same holds for the counts. If the draft queue cannot be read, the Drafts pending tile says Unknown rather than 0. If the routing read fails, the four routing tiles, the route list and the held list all say they did not load.
What is not shown
The design mockup drew a fuller "outbound execution" cockpit with active-campaign analytics (sends, opens, replies, deliverability), inbox rotation, and sequence detail. Those are omitted here because this surface is the dispatch approval queue, and we do not track open, reply, or deliverability metrics or run inbox rotation on it, so showing them would mean inventing the numbers. The page shows the honest core: the send-layer state, the drafts awaiting approval, and the real sends ledger. The one reply measure it does show is the Angles panel, which reads what each reply said from the sends ledger.