ChannelsWhen Selda holds a send

When Selda holds a send

You press send and one lead does not go. This page is the whole list of reasons that can happen, and the only question worth asking about each one: who decided?

  • You decided — Selda is enforcing something you set. It stays.
  • A limit — a ceiling or a plan contract. Not an opinion about this lead.
  • A setting — Selda formed a judgement. You own that judgement: nine switches, all on by default, and most of them can be clicked past for one lead without turning the rule off.
  • A fact — there is nothing to send, or nowhere to send it.

Selda never invents a reason and never hides one. A held lead shows its reason in words, with who decided it and what you can do next. An unrecognised code renders an honest “cannot put this into words”, never a raw enum.

Where the switches are

The Brain → When Selda holds a send. One screen, not one per channel: every rule below governs LinkedIn exactly as much as email.

The daily cap is deliberately not there. It lives in Settings → Channels, because it is a property of the sending mailbox or profile rather than a judgement Selda formed. See Email and LinkedIn.

You decided

Enforced, because you are the one who said so. The fix is to change your own instruction.

ReasonWhat happened
sandboxThe workspace is in the free sandbox. Nothing sends until it goes live.
workspace_stoppedYou stopped the workspace.
campaign_pausedYou paused this campaign.
removed_from_campaignYou took this lead out.
not_armedThe step is not armed to send yet.
original_not_sentA follow-up cannot go before the message it follows.
you_repliedYou answered this person yourself, so Selda stood down. Resumable per lead.

A limit

Not a judgement about the lead. Nothing to override, because the answer is elsewhere.

ReasonWhat happened
daily_capThe mailbox or profile has sent its allowance for today. It resumes tomorrow.
plan_cannot_sendThe plan does not include sending on this channel.
outbound_disabledOutbound is switched off for this workspace.

Selda’s judgement, and therefore your setting

Nine settings, every one on by default, so the shipped behaviour is what it has always been. Turning one off is your call, and two of them carry a legal warning and an explicit acknowledgement rather than a casual toggle.

SettingHolds whenPer-lead override
stopOnReplyThe recipient replied (recipient_replied)yes
stopOnMeetingBookedA meeting is on the calendar (meeting_booked)yes
stopOnBounceThe address bounced (excluded)no
respectOptOutThey asked not to be contacted (do_not_contact)no, and it carries a legal warning
stopOnSuppressedThe address or domain is suppressed (suppressed)no, and it carries a legal warning
holdOnClosedDayA public holiday or outside your sending hours (deferred_closed_day, deferred_outside_hours)yes
holdPreSendCheckThe pre-send check raised something (pre_send_check)yes
holdOnTakenSlotThe meeting time the message offers is already taken (offered_time_taken)yes
stopOnNothingNewThe follow-up would repeat what the last one said (nothing_new_to_say)yes
An enforced wrong judgement is unrecoverable; a recommended one costs a click. That is the whole argument for this table existing. A reply-detection that is wrong about one lead used to kill every follow-up to them silently. Now it shows the lead, says what it concluded, and lets you disagree.

A fact

Nothing to decide. Most of these have a fix, and the fix is never a switch.

ReasonWhat happenedThe fix
no_connected_inboxNo mailbox or profile is connectedConnect one in Settings → Channels
channel_disconnectedConnected here, gone at the providerReconnect it
greeting_recipient_mismatchThe greeting names one person and the address is someone else’sOne word in the greeting, or the right address on the row
already_contactedYou have written to this person beforeResumable per lead, if reaching them again is what you meant
send_failedThe provider refused it. The error is shown as it came backDepends on the error
no_pending_followup · no_pending_stepsThere is no next step waitingNothing is wrong

greeting_recipient_mismatch is the one Selda-side hold with no setting and no override, and it is the exception that proves the rule. A message whose greeting and whose address name two different people is a fact about the artifact, not an opinion about the situation, and it is the one outcome on this path that cannot be taken back. Nobody is denied anything: name the recipient in the greeting, or put their address on the row, and it clears.

Nothing to send

Not holds at all. They appear for completeness, because a lead that did not move should always say why.

ReasonWhat happened
completedThe sequence finished
stoppedThe sequence was stopped
already_sentThis exact message is already in their inbox. Sending again is the one thing this prevents
send_in_progressAnother pass is inside the send right now. It retries

Every code on this page is in convex/lib/sendStopPolicy.ts, and convex/lib/__tests__/sendStopsAreDocumented.test.ts fails if a code is added there and not described here, or described here and not in the catalog.