Public reference for A2P 10DLC carrier reviewers and TCR. Documents the end-to-end consent flow that gates outbound SMS to BookieSlip subscribers.
| Program name | Prime Time SMS alerts |
|---|---|
| Brand | BookieSlip, Inc. (TCR brand B2T77DT) |
| Use case | Mixed (Notifications + Marketing) — Low Volume |
| Sender | Toll-free / 10DLC number attached to Messaging Service |
| Frequency | Up to 1 message per recipient per day, max |
| Send schedule | 6:00 PM ET on weekdays, 11:00 AM ET on weekends |
| Audience | Authenticated paid subscribers (Pro / Premium tiers) who have verified their phone number AND explicitly enabled the toggle |
| Opt-out | Reply STOP (also STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, REVOKE) |
| Help | Reply HELP or INFO; or email support@bookieslip.com |
BookieSlip is an authenticated subscription product, so the SMS opt-in UI lives behind login on the Notifications tab of the user's Account Settings. No end user is added to the program without completing all five gated steps below, in order, with active consent at every step:
app.bookieslip.com/signup includes a "I confirm I am 21
years of age or older" checkbox that is unchecked by default. Submit
is blocked client-side AND server-side until the box is checked.
The age-gate timestamp is persisted as User.age_verified_at
and is a precondition for any communication preferences UI.
Account → Notifications, the user enters their
mobile number, BookieSlip sends a one-time passcode via Twilio
Verify, and the user enters the 6-digit code. phone_verified_at
is stamped server-side. Until this field is non-null, the Prime Time
toggle is grayed out and disabled.
sms_primetime_alerts_opt_in_at = NOW() with the
user's IP and user-agent for TCPA evidence. The user is NOT added
to the next outbound batch until this row exists.
Every toggle is OFF by default. Active consent is required at each step. There is no pre-checked option, no bundled consent, and no "agree to all" mechanic.
Sign up
Email [input]
Password [input]
[Submit disabled until checked]
Verify your phone
We'll text a 6-digit code to verify it's really you.
Mobile number +1 ___ ___ ____
Send code
By entering your number, you agree we may text you a one-time code. Standard message and data rates may apply.
This is a faithful HTML reproduction of the React component
SmsPreferencesCard rendered at
https://app.bookieslip.com/account on the Notifications tab.
Source code:
SmsPreferencesCard.tsx
.
We'll text ••• ••• 1234 when Prime Time picks drop (6pm ET weekdays, 11am ET weekends).
When a user toggles ON, the backend (views_sms_prefs.py)
enforces these gates and records:
| Gate | Behavior |
|---|---|
| Phone verified? | If phone_verified_at IS NULL, returns HTTP 409
PHONE_NOT_VERIFIED. UI funnels user back to phone-OTP flow. |
| Previously opted out via STOP? | If sms_opt_out_at IS NOT NULL, returns HTTP 409
SMS_OPT_OUT_LOCKED. Re-opt-in requires support ticket. |
| On a paid tier? | Audience filter excludes free-tier users at send time. Free users cannot opt into this program. |
On successful toggle, the User row is updated:
sms_primetime_alerts_opt_in = TRUEsms_primetime_alerts_opt_in_at = NOW() (server-stamped consent timestamp)Retention: 4 years from opt-in OR opt-out, whichever is later (TCPA statute of limitations).
Inbound messages are routed to a Twilio webhook at
https://api.bookieslip.com/api/v1/notifications/sms/inbound/
which:
PgSmsNotification for audit (4-year retention).sms_opt_out_at = NOW() and flips both
sms_marketing_opt_in AND
sms_primetime_alerts_opt_in to FALSE.Every outbound message in this campaign starts with:
BookieSlip:
And ends with:
Reply STOP to opt out.
Message frequency: up to 1 message per day.
Message and data rates may apply. Standard message and
data rates from your mobile carrier may apply to each message.
BookieSlip does not charge a separate fee for SMS notifications.
Mobile numbers are not shared with third parties.