Retailers and restaurants text three kinds of promotions: loyalty perks, coupons and contests. They look alike on a phone screen. Under the rules they are different. A coupon is plain marketing. A loyalty program mixes marketing with account-style notices. A contest adds a layer of sweepstakes law that has nothing to do with SMS and can still cost you a lot.
This guide covers the setup for each: how people join by keyword, how to deliver codes so they get redeemed and not filtered, what a text-to-enter contest needs legally, and how to register the campaign so carriers let it through. Where money is involved, we show the math on Ready's Standard rate.
Start with the opt-in, because everything else depends on it
Every promotional text needs prior express written consent from the person receiving it. For a shop or restaurant, that consent usually comes from one of three places:
- A keyword at the counter. "Text JOIN to (555) 010-0199 for 15% off today." The customer sends the first message.
- A web or checkout form with an unchecked SMS box and the disclosure next to it.
- A tablet or POS prompt where the customer types their number.
Whatever the entry point, the disclosure language has to name your business, say the texts are recurring marketing messages, say message frequency varies (or give a number), note that message and data rates may apply, and tell people how to stop (reply STOP) and get help (reply HELP). Our opt-in examples post has wording that carriers approve.
Keep your own consent record
You need to know who records what. Ready records your opt-in attestation on every campaign you send and every API send that attests consent: who sent, to how many contacts, and when. That record gives you an audit trail for your own sending. It is not a per-contact consent record. Ready does not store the recipient's opt-in time, the wording they saw or the page URL, and a keyword reply does not create a consent record on our side. (A contact who signs up on a Ready-hosted opt-in page is the exception: Ready stores that sign-up, with the time, IP address and exact wording, and support@tryready.com can send you a copy.)
Your store has to keep that evidence. Save it from your form, your POS or a spreadsheet: the phone number, the timestamp, the exact disclosure text and the source ("counter sign, Main St store"). If a complaint ever turns into a demand letter, that record is your defense.
The confirmation text
After someone texts JOIN, send one confirmation right away. It should repeat the program name, the frequency, "Msg & data rates may apply" and the STOP and HELP instructions, and it should deliver whatever the sign told them they'd get. Inbound messages are billed like sent ones on Ready ($0.0075 per segment plus the $0.0045 carrier fee). So a keyword signup costs about two segments: the JOIN coming in and the confirmation going out.
Coupon delivery that gets redeemed and not filtered
The way you send a coupon affects both redemption and deliverability.
Single code vs unique codes. A shared code like SAVE15 is easy, and it gets posted on coupon sites within a day. Unique codes (one per contact, merged in from your POS or ecommerce platform) stop that and tell you exactly which send drove the sale. For a restaurant handing out a free appetizer, a shared code is usually fine. For a retailer offering 20% off, unique codes are worth the setup.
Links. Public link shorteners are one of the most common reasons an approved campaign still gets filtered. Use your own domain, or a branded short domain you control. If you're already registered and still seeing drops, our post on content-level filtering after approval covers the usual causes.
Expiry and terms in the text. "15% off in-store thru Sun 6/9. Excl. alcohol & gift cards." This cuts down on arguments at the register and makes the message read like a real offer instead of spam.
Worked example: what a coupon send costs
Assumptions: a 2,000-contact opted-in list, one coupon text, Ready Standard.
Version A: 150 characters, plain text. That fits in one GSM-7 segment (the limit is 160).
- 2,000 segments × $0.0075 = $15, plus 2,000 × $0.0045 in carrier fees.
Version B: the same offer at 175 characters with a 🎉. The emoji switches the whole message to unicode, where a single segment holds 70 characters and a multipart segment holds 67. At 175 characters, that's 3 segments.
- 6,000 segments × $0.0075 = $45, plus 6,000 × $0.0045 in carrier fees.
One emoji made the send 3x more expensive. With scrubbing on, Version A adds 2,000 × $0.003 = $6.
Timing. A fresh standard campaign with no brand vetting usually sends somewhere around 1 to 4 segments per second. At an assumed 2 segments per second, Version A takes about 17 minutes to go out. If your lunch special needs to land at 11:30, start sending at 11:10. If the send would fall outside permitted local hours for a recipient, Ready holds it and sends it later, and you're charged only when it actually sends.
Daily caps. T-Mobile caps daily volume by brand trust score. The lowest tier is roughly 2,000 messages a day. A 3,000-contact list sending 3-segment texts can run into that cap. Cutting the emoji, or brand vetting ($79 Standard / $179 Enhanced, one-time), are the two ways out. Vetting helps only if it moves you up a tier.
Loyalty programs: half marketing, half notice
A loyalty program sends two kinds of text. "You have 450 points" and "Your reward is ready" are close to account notifications. "Double points this weekend" is marketing. Carriers check that the texts you actually send match the use case you registered. If you register only one type and send both, you risk throttling.
For most stores, the clean setup is a Mixed or Marketing campaign that describes both kinds plainly. Include sample messages for each. Our use-case picking guide explains the tradeoffs in detail.
Practical loyalty rules:
- Get consent to marketing at enrollment, not just to "loyalty updates." Someone who signed up for a points balance did not agree to promos unless the disclosure said so.
- Set a frequency and stick to it. "Up to 4 msgs/month" on the sign-up form, followed by 12 texts a month, is how you get complaints.
- STOP means stop everything. On Ready, an inbound STOP is honored automatically and carries across all your campaigns. Don't try to keep sending "transactional" points updates to someone who opted out.
How do you run an SMS VIP loyalty program?
Put your best customers on their own opt-in list, tell them at sign-up what the VIP texts include and how often they'll come, and send only that. A VIP program works when the perks are real: early access, a private offer or a points balance they actually want to check.
Treat it like any other loyalty list for compliance. Get marketing consent at enrollment, keep to the frequency you promised, and let STOP end every text. Describe the VIP texts in your registered campaign so what you send matches what carriers approved.
Contests and sweepstakes: the legal basics
Text-to-enter contests work well, and they are also where retailers get into the most trouble. None of this is legal advice. A contest with a meaningful prize is worth an hour of a lawyer's time.
Prize + chance + consideration = an illegal lottery
A random drawing for a prize is a sweepstakes, and it's legal as long as you remove consideration: no purchase or payment required to enter. Texting can count as consideration because entrants may pay message rates. The standard fix is a free alternate method of entry: a web form, or a mail-in entry, with equal odds.
A contest judged on skill ("best photo of your meal") is a different legal category. Pure skill contests have fewer restrictions, but the judging criteria have to be real and published.
What the official rules need
Post official rules on a page you link in the entry text. They should include:
- "No purchase necessary" and the alternate method of entry
- Eligibility: age, residency and employee exclusions
- Entry period with start and end dates and time zone
- Prize description and approximate retail value
- Odds of winning ("depend on number of eligible entries")
- How and when the winner is picked and notified
- Sponsor name and address
Some states add requirements for larger prizes. New York and Florida, for example, require registration and bonding when the total prize value exceeds $5,000. Check before you announce a big prize.
An entry is not marketing consent
This is the mistake that costs the most. Texting WIN to enter a drawing does not, by itself, mean the person agreed to receive your weekly promos. If you want to market to entrants afterward, the entry disclosure has to say so, clearly, as a separate statement. Better still, use an optional "also send me deals" step. Otherwise you can send the entry confirmation and the winner notice, and that's all.
Carriers also review contests more closely. If drawings are a regular part of your texting, say so in the campaign description and sample messages rather than burying them under general marketing.
Restaurant-specific: alcohol and SHAFT
Happy hour and drink specials fall under alcohol, the "A" in SHAFT (sex, hate, alcohol, firearms, tobacco). These texts are allowed, but carriers expect age verification at opt-in, such as a 21+ confirmation, and they will reject campaigns whose sample messages push alcohol without it. If your registration came back flagged for SHAFT content, this post on the rewrite walks through what to change. Food-only promotions don't trigger any of this.
Registration and cost to get started
Promotional texting from a regular 10-digit number needs A2P 10DLC registration. Unregistered traffic gets filtered by carriers.
| Item | Cost on Ready |
|---|---|
| Registration at submit (first month) | $25 for registration, no setup fee |
| Ongoing monthly | $25/mo for registration + $2 per number |
| Per segment (sent or received) | $0.0075 + $0.0045 carrier fee |
| Standalone TCPA & DNC litigator scrub | $0.005 per contact |
| Approval time | Most approvals take 2 to 7 days |
Ready's all-in prices per segment include the carrier fee but not screening: Scrub lists and Number validation, the two switches in Settings under Compliance, each add $0.003 per segment when switched on, shown as screening on your bill, and both are off by default. Unless you turn the opt-out footer off, the first text to each contact, and one again from time to time, also gets "Reply STOP to opt out" and your business name if the message does not already have them, so a text close to the segment limit can bill one more segment.
Some details on getting started:
- The first 20 texts are free, but they are one-to-one sends only. A campaign is paid from the first text.
- The free texts end the moment you pay for registration, so use them to test your confirmation and coupon wording before you register.
- An account can send up to 500 texts a month at its normal rate before registering. After that, it has to register.
- To send, you add a card and get a number, which is $2 a month with the first month charged when you get it.
Is scrubbing worth $0.005 per contact for a list built at your own counter? It's cheap insurance. TCPA exposure runs $500 to $1,500 per text, and scrubbing a 2,000-contact list costs $10. It reduces risk. It does not make you lawsuit-proof, and compliance stays your responsibility.
The short version
- Coupons: consent first, your own link domain, no emoji unless it's worth paying for 3 segments.
- Loyalty: register the use case that matches what you send, disclose frequency, and treat STOP as final.
- Contests: no purchase necessary, written official rules, and a separate opt-in before you market to entrants.
- Records: keep your own per-contact consent records. Ready's attestation log covers your sends, not each customer's opt-in.
If you want to test a keyword confirmation and a coupon text before committing, create an account, send your 20 free one-to-one texts to your own team, then register when the wording reads right.