- The first sends to a new audience. Check a few real messages before you let the rest go.
- Sensitive content. Collections, account changes, or anything where a wrong variable would hurt.
- Compliance review. When your process needs a named person to sign off on each outbound message.
Turn it on
1
Open the send step
In the journey builder, select a Send message step (WhatsApp, template
mode) or a Send email step.
2
Pick a draft mode
Under Delivery, change the select from Send now to Draft and wait
or Draft and continue. Each option shows a one-line description of what
happens to the customer. With Draft and wait the step gains a third exit,
Rejected, next to Sent and Capped, not sent. Draft and
continue adds no exit: the run always carries on through Sent.
3
Wire the Rejected exit (optional, Draft and wait only)
Connect Rejected to whatever should happen when a reviewer says no: a
different message, a wait and another try, or an exit. Leave it unconnected
and the person’s run ends quietly.
4
Publish
Publish the journey as usual. From then on, every send from that step waits
for review.
Draft and continue
Draft and continue queues each message in Drafts and lets the person’s run move on right away, as if the message had gone out. Use it to check a sample of a journey’s messages without holding anyone back, for example while you move campaigns from another tool: send events to Boom, review what the journeys would send for a few days, delete the queue, then switch the steps to Send now.- Send sends that one message, exactly as previewed. The person’s journey does not change: they already moved on.
- Delete discards the message. Nothing is sent and nothing else changes.
- Queued drafts show a Queued label in the list, and their run history says “Queued for review”, then whether the message was sent, deleted or expired.
- Reports count a queued message as sent only once it actually goes out.
- A Wait for reply right after a queued WhatsApp message starts its timer before the message is sent, so publishing shows a warning. Replies still reach the run; give the wait a timeout longer than your review takes.
- The step’s send window still applies: an approved message outside it shows “Sends at …” and goes out when the window opens.
Expiring drafts
Under the Delivery select of a draft step, tick Discard drafts nobody reviews in and set the number of days (1 to 30, 3 by default) to expire drafts nobody decided in time. An expired draft is never sent. With Draft and wait, the run then continues through Rejected; with Draft and continue, nothing else changes. Off by default: a draft waits until someone decides it.Review drafts
Drafts are reviewed inside the campaign or initiative they belong to. Open it and choose Drafts in its sidebar, under Operational, after Executions. The sidebar shows how many drafts are pending (up to “99+”). The initiative page shows an N drafts waiting button, and the journey builder toolbar shows the same count as a badge. Both open the Drafts tab.By template
The tab opens By template: pending drafts grouped by what you are actually approving, one row per template version at each step. A row shows the template (and, if the template has changed since, which version these drafts were made from), the step, how many are pending, and how many have waited more than 24 hours. Click a group, or move with J and K, to see one example message from it, rendered exactly as it would be sent, plus a warning if the template was edited after the drafts were created. Approve N… and Reject N… decide the whole group. The confirmation, just above the example, gives the count, how many have waited more than 24 hours, and that drafts arriving later are not included. The same 5 second undo applies. The group then shows how many were sent and, if any could not be, how many, with a link that opens them in One by one. Approve all… in this view lists each group and its count before you confirm.Odd values
Some messages would go out wrong: a name that came through empty, or an amount of zero. For a WhatsApp group, Variables in this group lists each template variable with how many distinct values it takes and how many drafts have it empty or at zero (a value such as$0.00 or 0,00 MXN). The To review column in
the group list shows how many drafts in each group have at least one.
These drafts are left out of Approve N… and Approve all… by default. The confirmation says
how many stay behind for review, and Include the N with odd values adds them
back. Click a count, or Review them one by one, to open just those drafts in
One by one (the To review chip; remove it to see the rest). In the
preview, an odd value is shaded amber with a solid underline, an empty one reads
Empty in the variables list, and a notice names each odd variable.
Odd values are checked for WhatsApp only. Email drafts do not store their
variables yet, so for email, check the example.
One by one
Switch to One by one to review drafts individually. It can be narrowed to a single group (the Template: … chip; remove it to see every draft again). The list shows every draft with its recipient, step, status and age, plus the first line of its message (the WhatsApp text or the email subject). A pending draft older than 24 hours is marked in amber, because its content was fixed when it was drafted. Use Filter to narrow it by status, channel, journey version, step or when it was created, and Refresh to pick up new ones. Click a row to see the preview: the exact message that will be sent, with the template, the variables, and for email the From, Reply-To and subject. In a WhatsApp preview, the values filled into the template are lightly shaded with a dotted underline, so you can check each one. On a narrower screen the preview opens as a drawer from the bottom, only when you tap a row. The preview also shows how old the draft is, and warns Template edited since drafted if the template changed after the draft was made. For email, Show full email opens the whole message. A draft that has been decided shows who approved or rejected it, and when. You can decide:- One draft, with Approve or Reject in its preview. There is no confirmation step, and the preview moves to the next pending draft right away.
- A selection, by ticking rows and choosing Approve selected or Reject selected. Approving, or rejecting more than one, asks you to confirm the count first, just above the list.
- Everything matching the current filter, with Approve all…, or Reject all pending… in the ⋯ menu. Drafts created after you opened the page are not included, so you never approve something you have not had the chance to see. The confirmation shows how many messages will go out and how many have waited more than 24 hours. Approving leaves out WhatsApp drafts with odd values unless you tick them in. Rejecting everything confirms in red and says that nothing will be sent.
Five seconds to undo
Every decision waits 5 seconds before Boom acts on it. The preview, and a notice at the bottom of the screen, count down (Sending to Ana in 5s) with an Undo button. Undo inside those 5 seconds and nothing happens: the draft stays pending and nothing was sent. You can keep reviewing other drafts while one counts down. If you leave the page during the countdown, the decision is dropped and the draft stays pending. After the countdown, an approved draft shows Sending…, then Sent, or Could not send with what happened and what to do, for example that Meta no longer approves the template. A draft that could not be sent stays in the list with that reason. If someone else decided the draft first, the preview says who and when instead. Once you click into the list or a preview, the keyboard works too: the arrow keys move through the list, Space ticks a row and Enter opens it. J and K move between drafts, A approves, R rejects, and Esc closes the preview. Holding a key down does nothing extra, and A is ignored for a moment after the preview moves on, so a double press cannot approve two people. Screen readers hear the open draft’s name and its position in the list. When you reject, you can add an optional reason. It is kept on the draft as the reviewer’s note.What happens next
Approve sends the message you previewed, exactly as it is. Boom does not render it again, so a template edit made after the draft was created does not change what goes out. The journey’s send window and your channel’s rate limits still apply, so a large approval goes out at the same pace as live traffic. The run then continues on Sent. Reject sends nothing. The run takes the Rejected exit, or ends if nothing is connected to it. A rejected draft costs no credits: credits are only used when a message is actually sent. For a Draft and continue step the run never waited, so Send only sends the message and Delete only discards it.Checked again at delivery
Some things can change while a draft waits. These are checked again when an approved draft is delivered, and the draft is not sent if any fails. The Rejected exit is only for a reviewer’s rejection, so it never catches these. Each one takes the path below:- Do Not Contact. A person who opted out in the meantime is skipped. On WhatsApp the run ends. On email the run continues on Sent, the same as an email step that skips an opted-out person without drafts.
- The template. A WhatsApp template no longer approved by Meta, or an email template no longer published, stops the send and the run ends.
- The sender. A WhatsApp number or email sender that is no longer available stops the send and the run ends.
- The journey. If the journey was stopped, the draft is not sent and the run ends.
- Smart Sending. The message limit is checked at delivery, not when the draft is created. An approved draft that would go over the limit is not sent: the run takes Capped, not sent, or ends if that path is not connected. Re-enroll the person later if the message is still needed.
- A reply (WhatsApp only). If the person replies while an approved WhatsApp draft is waiting for its send window, the draft is skipped and the run continues on Sent. Email drafts have no send window, so this never applies to them.
Gift card rewards
Reward steps in journeys are in early access. Contact Boom support to turn them
on for your organization.
- how the gift card reaches the customer: a link sent on WhatsApp with your reward template, or an email;
- Who qualifies: the step’s rule, a Qualifies mark and a short reason, in Boom’s words rather than a quote from the customer;
- the last few messages of the conversation, with Open in inbox. These need access to the inbox; without it the preview says so.
The Rewards page and the budget
Each campaign or initiative with a reward step has a Rewards page in its sidebar, under Extra. Before the journey has a reward step it explains how rewards work and offers Add a reward step, which opens the journey builder with a new Send reward step placed and open (on a published journey it first offers to start a draft). Once there is a step, the page shows:- Sent: what the initiative has paid in gift cards, and how many.
- Waiting for approval: rewards pending in Drafts, with a link to them.
- Budget: an optional spending cap for the initiative, with how much of it is used. Set or change it with Set or Edit (this needs permission to send rewards). The budget is in one currency, the same as the reward steps.
- The journey’s reward steps, each with Edit in journey.
- Sent rewards: every reward with its status (Delivered, Processing, Not delivered, Not sent or Rejected in review), who approved it and when.
Limits
- Supported steps. WhatsApp template messages and email. Free-text WhatsApp, SMS, Instagram and Messenger sends cannot be drafted.
- Transactional messages: all or nothing. A transactional message holds every message or none, with Review before sending under its Options, not per step. While one waits, that customer’s next event sends nothing unless the Transactional sends One per field value.
- Several runs at once. On a journey with several runs per person, a send that waits for a send window cannot be drafted.
- Drafts only expire when the step says so. Unless Discard drafts nobody reviews in is ticked on the step, a draft waits until someone decides it, however long that takes.
- A waiting draft keeps the person in the journey. While their Draft and wait draft is pending, the same person cannot be enrolled again in that journey. Approve or reject it first. A Draft and continue draft does not hold the run.
- Transactional messages and campaigns hold their runs. Their Review before sending works like Draft and wait.
- Stopping the journey cancels its drafts. Pending drafts move to Canceled and those runs end.
- Drafts can be turned off for an organization. When they are, the Delivery option is gone from the builder, and a journey with a drafted step cannot be published. Drafts already waiting stay on the Drafts tab and can still be approved or rejected. A waiting draft is never sent without approval. Contact Boom support to turn drafts off or back on.
Permissions
Two permissions control drafts, in the app and over MCP alike. Approving a reward also takes a third, because it spends money.
Someone who can approve drafts but lacks
org:rewards:send can still reject a
reward, but sees no approve button on it, and Approve all… approves only the
messages. Over MCP, approving a reward without it is refused and nothing is
decided.
Someone with read but not update sees the list and previews, without checkboxes
or approve and reject buttons. Over MCP, drafts_list, drafts_get and
drafts_count need read and drafts_decide needs update, so a Member can review what is waiting
but only an Owner or Admin can send it. See
roles and permissions.
Over MCP
An AI agent connected over MCP can review drafts too:drafts_listlists drafts, with a preview of each, filtered by initiative, status and more. It returnsasOf, the server time of the read.drafts_getreturns one draft by id: its full preview, and who decided it, when and why.drafts_countcounts the pending drafts a filter matches. Pass theasOffromdrafts_listascreatedToto get the exact number a filter decide would change.drafts_decideapproves or rejects drafts by id, or everything matching a filter. Approving sends real messages. A filter decide needs theasOffromdrafts_listand anexpectedCountfromdrafts_count. If the number of matching drafts has changed, it is refused and nothing is decided. To decide one template version at one step, the same group the Drafts tab shows, filter byworkflowId,nodeId,templateIdandtemplateUpdatedAt, taking the last two from adrafts_listrow.- Every filter takes
kind:"message"for WhatsApp and email sends,"reward"for gift cards (orchannel: "REWARD"). A reward’s preview has the amount, currency, delivery, recipient, the step’s rule and the reason the customer qualifies. Approving a reward withdrafts_decideorders a real gift card. - If the initiative has a rewards budget,
drafts_decidechecks rewards against it before approving anything, and refuses the whole request when it can’t approve all of it. Nothing is decided and the drafts stay pending:reward_budget_exceeded: approving would take the initiative past its budget. Raise the budget on the initiative’s Rewards page, or approve fewer.reward_budget_currency_mismatch: a reward pays in another currency than the budget.reward_draft_unreadable: a reward under a budget can’t be read, so its amount can’t be checked. Reject that draft.reward_budget_unverifiable: some of the initiative’s past spend can’t be counted in the budget’s currency. Contact support, or remove the budget.reward_budget_batch_too_large: too many rewards to check at once. Approve them in smaller groups.reward_budget_busy: another approval for the same initiative is in progress. Try again in a moment.
- Every filter takes
odd:"only"for WhatsApp drafts with an empty or zero variable value,"exclude"for all the others (to approve a group without them, as the Drafts tab does).
delivery: "draft" on a
SEND_MESSAGE (template mode) or SEND_EMAIL node. See journeys.
There is no REST endpoint for deciding drafts. Approving a send has to name the
person who approved it, and an organization API key identifies the integration,
not a person. See one uniform surface.
If you use webhooks, a run that ended because its draft was
rejected reports journey_run.ended with reason: completed. To tell it apart,
read the participant’s step history: the send step’s emittedSignal is
REJECTED (also for a draft that expired, with output.decision: "expired").
A Draft and continue step records QUEUED; once its draft is decided, the
step’s output.draftResolution.status says whether it was sent.
Related
Journeys
Build the workflow whose send steps you draft.
Smart Sending
The message limit an approved draft is checked against.
Use MCP
Review and decide drafts from an AI tool.
Webhooks
How a rejected draft shows up on
journey_run.ended.