Templates use merge variables only — first name, county, sale date, callback number, company. No fee percentages and no dollar claims are allowed in copy: the surplus 30% is surplus-only with a per-deal override, and wholesale spread is per-deal. Every message must carry a Reply STOP footer.
Record consent before anyone is queued. A number with no opted-in ledger row never sends — the send path fails closed. STOP replies from the inbound webhook land here automatically. Source and date are required: a guess is not consent.
| Phone | State | Source | Recorded |
|---|---|---|---|
Sign in, then the ledger loads here. | |||
A campaign sends only after an explicit approval record (approver + note + timestamp) and only while the transport gate is ready. Dry-run first: it evaluates scrub, consent, quiet hours, and caps for every recipient and sends nothing.
| Name | Status | Audience | Sent / Blocked | Approved by | Actions |
|---|---|---|---|---|---|
No campaigns yet. Create one from the composer. | |||||
Stage recipients for the selected campaign. Each recipient needs the stored skip-trace flags observed for that number (DNC / litigator / trace checked) — the engine re-checks the stored flags and the consent ledger at send time, and a number with no matching stored trace entry is blocked. Nothing here imports a lead list: every recipient is entered deliberately.
| Phone | Name / County | Trace flags | Action |
|---|---|---|---|
No staged recipients. Stage at least one, then queue. | |||