Running the gate and resolving the audience…
Preview mode.Supabase isn't connected, so sign-in is disabled. Set NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY to enable it. Data sources —dashboard: sample data · campaigns & approvals: sample data.
Running the gate and resolving the audience…
Preview mode. No database is connected, so this screen is backed by the in-app mock that conforms to the SendOne contract. Set DATABASE_URL (and run db:migrate + db:seed) to review real campaigns through the live compliance gate. No messages are sent.
Campaign approval
The gate refused this send. Resolve the blocking checks below, then re-run the preview.
1 · Message preview

🔥 FLASH SALE! 40% OFF EVERYTHING $$$ — today only!!! Show this text at checkout for an EXTRA 10% off. Don't miss out!
US carriers require clear opt-out instructions (e.g. “Reply STOP to opt out”) in promotional messages. Add it before sending.
3 · Estimated cost
2 · Audience
4 · Gate status
The gate refused this send whole — nothing goes out until each is resolved and the preview is re-run.
1,200 recipients have no recorded opt-in and were excluded.
To fixCapture consent for these contacts or remove them from the segment.
60 recipients are on the org suppression list and were excluded.
To fixReview the suppression list if any were added in error.
The body uses a prohibited promotional pattern ('$$$') for regulated SMS and is missing required opt-out (STOP) language.
To fixAdd 'Reply STOP to opt out' and remove the '$$$' pattern, then re-run the preview.
Projected spend $213.62 exceeds the $200.00 daily cap by $13.62. The send is refused whole — spend caps never truncate an audience.
To fixRaise the daily spend cap or reduce the audience, then re-run the preview.
340 recipients previously replied STOP and were excluded.
To fixNone needed — honoring opt-outs is required. They stay excluded.
4 passing · 5 blocking · 1 n/a
1,200 recipients have no recorded opt-in and were excluded.
Next: Capture consent for these contacts or remove them from the segment.
60 recipients are on the org suppression list and were excluded.
Next: Review the suppression list if any were added in error.
No recipients are currently in a quiet-hours window.
The body uses a prohibited promotional pattern ('$$$') for regulated SMS and is missing required opt-out (STOP) language.
Next: Add 'Reply STOP to opt out' and remove the '$$$' pattern, then re-run the preview.
Brand and campaign are registered with the carrier.
This screen records the approval. It is evaluated again at send time.
Projected send rate is within the account's throughput limit.
Projected spend $213.62 exceeds the $200.00 daily cap by $13.62. The send is refused whole — spend caps never truncate an audience.
Next: Raise the daily spend cap or reduce the audience, then re-run the preview.
340 recipients previously replied STOP and were excluded.
Next: None needed — honoring opt-outs is required. They stay excluded.
6,760 of the brand's 50,000 daily message cap.
This send is blocked by the gate. Resolve the blocking checks below, then re-run the preview.