A customer asked something and went quiet. A follow-up is a message sent into that silence, which makes it the easiest thing in the product to get embarrassingly wrong. Most of the machinery here exists to decide not to send one.
Content isn't written at schedule time. It's generated when the step fires, from the conversation as it stands then - which is why a follow-up reflects knowledge you added after the original reply.
On WhatsApp and Instagram, free-form messages only work inside 24 hours of the customer's last message. Splice enforces that when scheduling, not when sending:
No templates means silence after 24 hours
A scheduled step is a plan, not a promise. When its moment arrives, it's re-validated against the world as it is now - because a lot can change between scheduling and firing.
| Condition at fire time | Why it cancels |
|---|---|
| The agent is inactive | A paused agent shouldn't speak. The step is cancelled, not deferred. |
| The lead is Active Client, Closed or Lost | Chasing a customer you already serve, or someone who said no, is worse than staying quiet. |
| The conversation no longer needs one | The customer replied, or it was resolved in the meantime. |
| The channel can't carry it | Follow-ups exist for email, WhatsApp and Instagram. A live channel gets nothing. |
| Automation was paused on the conversation | Per-conversation settings win over the agent's defaults. |
Cancelled steps don't come back
The last check is the subtlest. A follow-up that ignores what was agreed on a call reads as nobody having listened, so the drafted message is compared against the last meeting's outcome before it goes:
| Situation | Outcome | What you see |
|---|---|---|
| The draft contradicts a decision from the call | Escalate | Needs review - contradicts call. |
| Someone on your team owes the next step, and the draft doesn't acknowledge it | Skip | Paused - waiting on your next step. |
| The agent owes the next step, but the draft doesn't reference it | Hold for context | Held rather than sent, with the reason. |
| A meeting happened but the transcript hasn't arrived | Ask for context | Paste call notes to re-score. |
| Nothing conflicts | Send | Normal auto-send rules apply. |
Each of these lowers the confidence of that specific draft rather than blocking it globally, so the existing threshold does the actual holding.
A follow-up that survives every check is treated like any other reply: high enough confidence plus the channel toggle means it sends, otherwise it waits in the inbox as a draft. There is no separate follow-up auto-send setting to forget about.
For the settings, see Follow-up Automation.