Skip to content

Sending

Nexus

Sending

The send loop: windows, throttles, reply routing, suppression, and how outcomes get back into qualification.

/docs/nexus/sending11 / 20

Sending is the least interesting part of this system and it is built to stay that way. It exists to deliver approved messages at a human pace, from your own mailboxes, inside hours the recipient would consider normal, and to route what comes back.

The send loop#

  1. Eligibility check

    Immediately before send, the message is re-checked: the account is still qualified, the window is still open, no reply has arrived, no suppression applies, the mailbox is healthy. Any failure drops the message rather than delaying it.

  2. Slot selection

    The next slot inside the recipient’s send window is chosen, with jitter. Messages are not sent on the minute, in batches, or at an even cadence, because none of those look like a person sending mail.

  3. Mailbox selection

    A mailbox is chosen from those assigned to the campaign, weighted by remaining daily capacity and current health. A domain that has already been contacted from one mailbox keeps that mailbox for continuity.

  4. Delivery

    Handed to your mailbox over SMTP. Nothing is rewritten on the way out: no tracking pixel, no link wrapping, no injected footer beyond the unsubscribe mechanism the law requires where it applies.

  5. Outcome capture

    Delivery result, bounce class, reply and classification are recorded against the account and fed back into the learning loop.

Send windows#

A send window is defined in the recipient’s local time, resolved from the account record, not in yours and not in the browser’s. This matters more than it sounds: a window set in your own timezone will happily deliver at three in the morning to somebody four zones away.

Default hours
08:00 – 17:00 recipient-local
Default days
Monday – Friday
Excluded
Saturday, Sunday, and recognised public holidays in the account's region
Jitter
randomised within the slot, never a fixed cadence
Timezone source
account region, falling back to the ICP's default region

Windows can be tightened per ICP — a market where nobody reads mail before nine, a region where Friday afternoon is dead. They cannot be widened past the safety bounds, which exclude nights entirely.

Throttles and caps#

Caps are per mailbox, not per campaign, because reputation is a property of the mailbox and the domain. Several campaigns sharing a mailbox share its capacity.

LimitDefaultNotes
New messages per mailbox per day50Excludes replies and warmup traffic
Total sends per mailbox per day80Including replies to inbound
Minimum gap between sends from one mailbox90 seconds, jitteredNever a fixed interval
Messages per recipient domain per day3Prevents contacting five people at one company on one morning
Concurrent campaigns per mailbox3Above this, capacity fragments and pacing degrades
New mailbox rampSee deliverabilityA new mailbox does not start at its cap
Defaults, editable per mailbox. The ramp for a new mailbox is not editable.

When capacity runs out, messages wait for the next day’s window rather than being squeezed into the end of today’s. If a campaign is persistently capacity-starved the console says so, and the fix is another mailbox, not a higher cap.

Reply detection and routing#

Replies are read from the connected mailbox, matched to the account and thread, classified, and routed. Classification is the part that matters, because a reply count is a vanity number and a classified reply is an instruction.

ClassificationSequenceRouted to
InterestedStoppedOwner, immediately; deal created if a CRM is connected
Not nowStoppedHeld with a revisit date parsed from the reply where stated
Wrong personStoppedOwner, with the named alternative contact if one was given
Not interestedStopped, account suppressedRecorded as a negative outcome against the ICP
Out of officePaused until the stated return dateNobody — the sequence resumes on its own
Auto-reply, otherUnchangedNobody
BounceStoppedSuppression list; see below

Out-of-office handling is worth a sentence: the return date is parsed where the message states one, and the sequence resumes after it. Treating an out-of-office as a reply stops sequences that should have continued; treating it as nothing sends the follow-up into an empty inbox.

Bounces and suppression#

EventEffect on the addressEffect on the domain
Hard bounceSuppressed permanentlyCounted toward the campaign bounce threshold
Soft bounce, firstRetried once after 24hNone
Soft bounce, repeatedSuppressedCounted
Spam complaintSuppressed permanentlyDomain suppressed; all campaigns halt for that domain
UnsubscribeSuppressed permanentlyDomain-wide suppression is offered and defaults to on

Suppression is workspace-wide and permanent by default. It survives campaign deletion, list changes and re-qualification: an address that asked not to be contacted stays uncontacted even if the account re-qualifies at A tier six months later.

The learning loop#

Outcomes return to the parts of the system that produced them, and each outcome is charged to a specific component rather than to a general quality score.

  • Wrong-person replies are charged to reachability and to the contact model, not to the copy. The message may have been perfect and sent to the wrong desk.
  • Not-interested replies are charged to the ICP. A cluster of them from one sector is evidence the shape is wrong.
  • Not-now replies with a date become window estimates, and they are the most accurate estimates in the system because a human supplied them.
  • Bounces are charged to contact-data quality and surface as a limited_by: reachability pattern in scoring.
  • Silence is charged to almost nothing. No reply is weak information, and treating it as strong is how systems talk themselves into changes that were noise.
An outcome as it enters the loop
{
  "id": "OUT-5512",
  "message_id": "MSG-90144",
  "account_id": "ACC-19022",
  "kind": "reply",
  "classification": "not_now",
  "revisit_at": "2026-10-01",
  "charged_to": ["window_estimate"],
  "not_charged_to": ["copy", "icp"],
  "recorded_at": "2026-08-06T14:41:02Z"
}

Read deliverability next. It covers the settings that decide whether any of this reaches an inbox, including the one default most people want to change and should not.