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.
Consent
The append-only record of who agreed to be messaged, how, and at what grade — the audit artifact you can show a regulator. Only first-party-verified and merchant-attested count as sendable.
Consent grade
Grade C never counts as opt-in. The gate collapses unverified_third_party to unknown, so those 2,320 contacts are never messaged.
Grade A + B · opted-in
Grade C or opted-out
On a suppression list
| Source system | |||||
|---|---|---|---|---|---|
| +1228•••2036 | A · First-party verified | Opt-out | SMS keyword | first-party | Aug 28, 2026, 12:16 PM |
| +1200•••1000 | A · First-party verified | Opt-in | Web form | first-party | Aug 28, 2026, 8:00 AM |
| +1229•••2073 | B · Merchant attested | Opt-in | Import | shopify | Aug 27, 2026, 1:23 PM |
| +1201•••1037 | A · First-party verified | Opt-in | SMS keyword | first-party | Aug 27, 2026, 9:07 AM |
| +1230•••2110 | A · First-party verified | Opt-in | Web form | first-party | Aug 26, 2026, 2:30 PM |
| +1202•••1074 | A · First-party verified | Opt-in | Account settings | first-party | Aug 26, 2026, 10:14 AM |
| +1231•••2147 | A · First-party verified | Opt-in | SMS keyword | first-party | Aug 25, 2026, 3:37 PM |
| +1203•••1111 | B · Merchant attested | Opt-in | Import | lightspeed | Aug 25, 2026, 11:21 AM |
| +1232•••2184 | A · First-party verified | Opt-in | Account settings | first-party | Aug 24, 2026, 4:44 PM |
| +1204•••1148 | B · Merchant attested | Opt-in | Import | square | Aug 24, 2026, 12:28 PM |
1–10 of 54
| Reason | Source | |||
|---|---|---|---|---|
| +1500•••3101 | org | Replied STOP | sms_stop | Aug 27, 2026, 9:15 AM |
| +1501•••3138 | org | Carrier filtering feedback (30007) | carrier_feedback | Aug 26, 2026, 10:15 AM |
| +1502•••3175 | global | Litigation / known complainant | manual | Aug 25, 2026, 11:15 AM |
| +1503•••3212 | brand | Hard bounce — invalid handset | carrier_feedback | Aug 24, 2026, 12:15 PM |
| +1504•••3249 | org | Spam complaint | carrier_feedback | Aug 23, 2026, 1:15 PM |
| +1505•••3286 | campaign | Manual exclusion (VIP list) | manual | Aug 22, 2026, 2:15 PM |
| +1506•••3323 | org | Imported do-not-contact | import | Aug 21, 2026, 3:15 PM |
| +1507•••3360 | org | Replied STOP | sms_stop | Aug 20, 2026, 4:15 PM |
| +1508•••3397 | org | Carrier filtering feedback (30007) | carrier_feedback | Aug 19, 2026, 5:15 PM |
| +1509•••3434 | global | Litigation / known complainant | manual | Aug 18, 2026, 6:15 PM |
| +1510•••3471 | brand | Hard bounce — invalid handset | carrier_feedback | Aug 17, 2026, 9:15 AM |
| +1511•••3508 | org | Spam complaint | carrier_feedback | Aug 16, 2026, 10:15 AM |
| +1512•••3545 | campaign | Manual exclusion (VIP list) | manual | Aug 15, 2026, 11:15 AM |
| +1513•••3582 | org | Imported do-not-contact | import | Aug 14, 2026, 12:15 PM |
| +1514•••3619 | org | Replied STOP | sms_stop | Aug 13, 2026, 1:15 PM |
| +1515•••3656 | org | Carrier filtering feedback (30007) | carrier_feedback | Aug 12, 2026, 2:15 PM |
| +1516•••3693 | global | Litigation / known complainant | manual | Aug 11, 2026, 3:15 PM |
| +1517•••3730 | brand | Hard bounce — invalid handset | carrier_feedback | Aug 10, 2026, 4:15 PM |
| +1518•••3767 | org | Spam complaint | carrier_feedback | Aug 9, 2026, 5:15 PM |
| +1519•••3804 | campaign | Manual exclusion (VIP list) | manual | Aug 8, 2026, 6:15 PM |
| +1520•••3841 | org | Imported do-not-contact | import | Aug 7, 2026, 9:15 AM |
| +1521•••3878 | org | Replied STOP | sms_stop | Aug 6, 2026, 10:15 AM |
| +1522•••3915 | org | Carrier filtering feedback (30007) | carrier_feedback | Aug 5, 2026, 11:15 AM |
| +1523•••3952 | global | Litigation / known complainant | manual | Aug 4, 2026, 12:15 PM |
Quiet hours
Next release Aug 30, 2026, 9:00 PM. Deferred recipients send automatically — they are never dropped.
Prototype · mock data conforming to the locked consent model.