Build the Compliant Welcome Text: Instacart's SMS Opt-In
Objective: Draft a compliant SMS welcome message and a 4-message monthly cadence plan that includes every required TCPA disclosure and stays inside the frequency cap.
You're the retention marketer at Instacart launching a new SMS program and need to ship a welcome text that passes legal review on the first pass.
Write the welcome message with frequency disclosure, rates disclosure, and STOP/HELP instruction, then plan 4 monthly sends that respect the 10am-8pm local-time window and lead with the brand name.
Before you start
What you'll need
Free path (everything below is enough to finish)
Free, and a LEN() formula catches the 160-character limit before anything ships
Paid upgrades (optional, faster/deeper)
Handles the double opt-in confirmation reply and stores the consent record the lesson requires
No access? Log consent manually in a spreadsheet with timestamp and IP columns
The process
2 steps
Step 01 of 02
The lesson's Step 1 requires the welcome message to include rate/frequency ('up to 4 msgs/month'), 'msg and data rates may apply', and a STOP/HELP instruction, on top of a double opt-in with stored timestamp, IP, and disclosure text.
Your draft welcome text says 'Thanks for joining Instacart texts! Reply STOP to opt out.' What's missing before this can ship?
Procedure
- Draft the welcome message text under 160 characters
- Check off each required element: brand name, frequency disclosure, rates disclosure, STOP/HELP
- Rewrite until all four checklist items are present in the same message
DRAFT (fails checklist): 'Thanks for joining Instacart texts! Reply STOP to opt out.' FIXED: 'Instacart: You're in! Up to 4 msgs/month. Msg & data rates may apply. Reply STOP to cancel, HELP for help.'
Healthy
The welcome message contains brand name, frequency, rates disclosure, and STOP/HELP, all four, in one text.
Unhealthy
Shipping a welcome text with only a STOP instruction and no frequency or rates disclosure.
What this means
Missing even one disclosure element is a documented TCPA compliance gap, not a style choice.
So what do I do about it?
| Symptom | Action | Effort |
|---|---|---|
| Welcome draft only has a STOP line | Add frequency and 'msg and data rates may apply' before the message ships | 5 min |
Step 02 of 02
The lesson's Step 4 says lock-screen copy needs the brand name first, one link, one CTA, conversational tone, and a hard cap of 160 characters or fewer.
Your promo draft is 210 characters with two links. What has to go?
Procedure
- Add a LEN() formula next to each draft to check character count
- Cut to one link and one CTA per message
- Move the brand name to the first word of the message
DRAFT (210 chars, 2 links): 'Hey there! Big news from our team, check out our new arrivals here [link1] and also don't miss our sale page [link2]...' FIXED (98 chars, 1 link): 'Instacart: New arrivals are live. Shop before they're gone: [link]'
Healthy
The final message is under 160 characters, leads with the brand name, and has exactly one link.
Unhealthy
A 200+ character message with two links and the brand name buried in the middle.
What this means
SMS has no preview pane to rescue a buried CTA, the first 20 characters decide whether it gets read.
So what do I do about it?
| Symptom | Action | Effort |
|---|---|---|
| A draft runs over 160 characters | Cut to one CTA and move the brand name to the front before sending | 5 min |
Final deliverable
A compliant welcome message text (under 160 characters, all 4 disclosure elements present) plus a 4-message monthly send calendar.
See a reference example
Zomato, SMS welcome draft (excerpt) Welcome: 'Zomato: You're in! Up to 4 msgs/month. Msg & data rates may apply. Reply STOP to cancel, HELP for help.' (97 chars) Month plan: Week 1 welcome, Week 2 order-triggered only, Week 3 one promo (1 link), Week 4 one promo (1 link)
Success criteria
You're done when you can:
- Welcome message includes all 4 required disclosure elements
- Every draft message is under 160 characters with exactly one link
- Monthly plan stays at or under 4 sends