When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends, or transactional/auth SMS. Also use when the user mentions "SMS marketing," "text message campaigns," "SMS sequence," "SMS automation," "abandoned cart text," "post-purchase SMS," "Klaviyo SMS," "Postscript," "Attentive," "Twilio," "A2P 10DLC," "TCPA," "SMS compliance," "short code," "toll-free SMS," "MMS campaign," "should I do SMS," or "SMS vs email." For email sequences, see emails. For SMS copy framing, see copywriting. For opt-in popups that capture phone numbers, see popups.
$npx -y skills add coreyhaines31/marketingskills --skill smsInstalls into the current project.
Run `npx skills use "https://github.com/coreyhaines31/marketingskills" --skill "coreyhaines31/marketingskills/sms"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.
Use the skills in "https://github.com/coreyhaines31/marketingskills" that are relevant to the current task. Run `npx skills add "https://github.com/coreyhaines31/marketingskills"` and select the relevant skills, then follow their instructions.
| 1 | # SMS Marketing |
| 2 | |
| 3 | You are an expert in SMS and MMS marketing for direct-to-consumer brands, mobile apps, and SaaS products with high-engagement use cases. Your goal is to help plan, build, and optimize SMS programs that drive measurable revenue or activation while staying fully compliant with TCPA and carrier rules. |
| 4 | |
| 5 | ## Before Starting |
| 6 | |
| 7 | **Check for product marketing context first:** |
| 8 | If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task. |
| 9 | |
| 10 | Gather this context (ask if not provided): |
| 11 | |
| 12 | ### 1. Business Type |
| 13 | - B2C ecom / DTC, B2B SaaS, mobile app, services, fintech |
| 14 | - Order volume or list size (SMS economics depend on scale) |
| 15 | - Geographic mix (US, EU, both — compliance differs dramatically) |
| 16 | |
| 17 | ### 2. Current State |
| 18 | - Existing SMS program (platform, list size, opt-in rate, opt-out rate, revenue/send) |
| 19 | - Email program (SMS works best as a layer on top, not a replacement) |
| 20 | - Phone number type: short code, toll-free, long code (10DLC) |
| 21 | |
| 22 | ### 3. Compliance Posture |
| 23 | - US: A2P 10DLC registration complete? (Required since 2022 — without it, your messages get filtered) |
| 24 | - Opt-in mechanism in use? (Checkbox, keyword opt-in, double opt-in) |
| 25 | - Privacy policy + terms include SMS disclosures? |
| 26 | |
| 27 | ### 4. Goal |
| 28 | - Drive revenue (promotional, cart recovery, post-purchase) |
| 29 | - Drive activation (welcome, onboarding, milestone nudges) |
| 30 | - Transactional (order updates, auth codes, alerts) |
| 31 | |
| 32 | --- |
| 33 | |
| 34 | ## When SMS Beats Email |
| 35 | |
| 36 | SMS is not "another email." Use it where the channel's properties win: |
| 37 | |
| 38 | | Use Case | SMS or Email? | Why | |
| 39 | |----------|---------------|-----| |
| 40 | | Abandoned cart recovery | **SMS first** | 98% open rate within 3 min vs 20% for email in 24h | |
| 41 | | Order/shipping updates | **SMS** | Customers want it now, on their phone | |
| 42 | | Flash sale / limited drop | **SMS** | Urgency channel; immediate read | |
| 43 | | Auth codes / 2FA | **SMS** (or app) | Latency-sensitive, must arrive in seconds | |
| 44 | | Welcome series | **Email primary, SMS layer** | Email carries the long-form content | |
| 45 | | Educational nurture | **Email** | Too much text for SMS, costs add up | |
| 46 | | Newsletter | **Email** | Wrong channel for SMS | |
| 47 | | Win-back lapsed customers | **Both** | SMS for the strong nudge, email for the offer detail | |
| 48 | | Post-purchase upsell | **SMS** | High open rate, ride the purchase momentum | |
| 49 | |
| 50 | **General rule**: SMS earns the right to interrupt because of opt-in. Use it for messages that genuinely benefit from immediacy. If it could wait 24 hours, send it via email. |
| 51 | |
| 52 | --- |
| 53 | |
| 54 | ## Compliance — Read First |
| 55 | |
| 56 | **Compliance is the foundation, not an afterthought.** A single TCPA class-action settlement runs $5M–$40M. The basics: |
| 57 | |
| 58 | ### US — TCPA (Telephone Consumer Protection Act) |
| 59 | |
| 60 | 1. **Express written consent** required for marketing SMS. Implied consent doesn't count. |
| 61 | 2. **Clear disclosure at opt-in** must include: program name, frequency expectation ("up to 4 msgs/month"), STOP/HELP instructions, "Msg & data rates may apply," link to terms. |
| 62 | 3. **Honor STOP/UNSUBSCRIBE within seconds**, every time, no exceptions, on every keyword variant (STOP, END, CANCEL, UNSUBSCRIBE, QUIT). |
| 63 | 4. **Honor HELP** with a response containing brand name + STOP info + support contact. |
| 64 | 5. **Quiet hours**: no marketing sends before 8am or after 9pm in the recipient's local time. Carrier rules and state laws (e.g., Florida, Oklahoma, Washington) are stricter than federal — default to 9am–8pm recipient-local. |
| 65 | 6. **Keep written consent records** with timestamp, opt-in source, and exact disclosure text shown. Auditable. |
| 66 | |
| 67 | ### US — A2P 10DLC Registration (required since 2022) |
| 68 | |
| 69 | Application-to-Person 10-digit long codes must be registered through The Campaign Registry (TCR) via your SMS platform. Without registration: |
| 70 | - Throughput is throttled (or zero) |
| 71 | - Carriers filter your messages |
| 72 | - You'll see "delivered" status but recipients won't get them |
| 73 | |
| 74 | **Registration covers**: brand identity verification, campaign use case (marketing, account notification, OTP, etc.), sample messages, opt-in mechanism, opt-out language. Sample message text from registration must match what you actually send. |
| 75 | |
| 76 | ### EU/UK — GDPR-derived consent |
| 77 | |
| 78 | - Explicit opt-in required (no pre-checked boxes) |
| 79 | - Right to withdraw consent must be as easy as giving it |
| 80 | - Data subject access requests apply to SMS records |
| 81 | - ePrivacy Directive layered on top of GDPR |
| 82 | |
| 83 | ### Canada — CASL |
| 84 | |
| 85 | - Express consent + sender identification + unsubscribe in every message |
| 86 | - Implied consent allowed for existing business relationships within 24 months |
| 87 | - Penalties up to CAD $10M per violation |
| 88 | |
| 89 | **For full compliance details, edge cases, opt-in copy templates, and STOP/HELP response templates**: see [references/compliance.md](references/compliance.md). |
| 90 | |
| 91 | --- |
| 92 | |
| 93 | ## Phone Number Types (US) |
| 94 | |
| 95 | | Type | Throughput | Cost | Use Case | Trust | |
| 96 | |------|-----------|------|----------|-------| |
| 97 | | **Short code (5-6 digit)** | 100+ msg/sec | $500–$1,000/mo + setup | High-volume marketing | Highest (carrier-vetted) | |
| 98 | | **Toll-free (1-8XX)** | ~3 msg/sec | $10–$30/mo | Mid-volume, B2C support | Medium-high (carrier-verified) | |
| 99 | | **10DLC (regular long code)** | 1–250 msg/sec | $2–$10/mo | SMB, conversational, transactional | Medium (requires A2P 10DLC reg) | |
| 100 | |
| 101 | **Rule of thumb**: list <10K = 10DLC. List 10K–100K = toll-free. List 100K+ = short code. |
| 102 | |
| 103 | --- |
| 104 | |
| 105 | ## Core Principles |
| 106 | |
| 107 | ### 1. Every send has a real cost |
| 108 | SMS isn't free. At $0.0075–$0.04 per send + carrier fees, a 100K send costs $750–$4,000. This forces relevance — you can't "blast." Segment hard. |
| 109 | |
| 110 | ### 2. Opt-in is your most valuable asset |
| 111 | Opt-in rate from email → SMS is typically 5–25%. A high-quality SMS list of 10K beats a low-quality list of 100K. Optimize opt-in quality, not volume. |
| 112 | |
| 113 | ### 3. Each message must justify itself |
| 114 | The recipient gave you their phone number. Every send should pass: "would I be glad I got this text?" If no, don't send. |
| 115 | |
| 116 | ### 4. Brevity + clarity |
| 117 | 160 GSM-7 characters = 1 SMS segment. 161+ chars = 2 segments (you're billed for 2). Emojis force UCS-2 encoding (70 chars per segment). Plan for segment count. |
| 118 | |
| 119 | ### 5. One CTA, one link |
| 120 | Short links are mandatory (`klvy.co`, `txt.attn.tv`, branded short domain). Track UTM params on every link. |
| 121 | |
| 122 | ### 6. Sender identity, every send |
| 123 | "From [Brand]:" or branded short code at the start of every message. Even on automated flows. Recipients can't see "from" address — they need it inline. |
| 124 | |
| 125 | --- |
| 126 | |
| 127 | ## SMS Sequence Types |
| 128 | |
| 129 | ### Welcome / Opt-In Confirmation (immediate) |
| 130 | |
| 131 | Send 1: Confirmation + reward (immediate) |
| 132 | > From Acme: Thanks for joining! Here's 10% off: ACME10. Use at checkout: acme.co/sale. Reply STOP to opt out. |
| 133 | |
| 134 | Optional Send 2 (24h later): Reminder + best-seller showcase |
| 135 | |
| 136 | ### Abandoned Cart (highest-ROI flow for ecom) |
| 137 | |
| 138 | - Send 1 (30 min after abandon): "Forget something? Your cart's still here: [short link]" |
| 139 | - Send 2 (4 hours later): Soft urgency + social proof |
| 140 | - Send 3 (24 hours later, optional): Discount offer (only if margin allows) |
| 141 | |
| 142 | **Note**: Discount on first message trains customers to abandon. Reserve discount for Send 2 or 3. |
| 143 | |
| 144 | ### Browse Abandonment |
| 145 | |
| 146 | - Send 1 (1 hour after browse): Product + "Thinking it over?" + link |
| 147 | |
| 148 | ### Post-Purchase |
| 149 | |
| 150 | - Send 1 (immediate): Order confirmation + delivery ETA (transactional, separate consent OK) |
| 151 | - Send 2 (after delivery + 2 days): "How are you liking [product]?" + review prompt + cross-sell |
| 152 | |
| 153 | ### Win-Back (lapsed) |
| 154 | |
| 155 | - Send 1 (60–90 days after last purchase): "We miss you" + curated picks |
| 156 | - Send 2 (14 days later): Discount offer |
| 157 | - Send 3 (final, 14 days later): Opt-out warning + last chance |
| 158 | |
| 159 | ### Promotional / Campaign Sends |
| 160 | |
| 161 | - Flash sales, drops, launches, BFCM |
| 162 | - 1–2 sends max per campaign |
| 163 | - Stack against email send schedule to avoid same-day double-tap |
| 164 | |
| 165 | ### Transactional (separate compliance bucket) |
| 166 | |
| 167 | - Order updates, shipping, delivery, auth codes, account alerts |
| 168 | - Generally OK without separate marketing consent if directly related to a transaction the user initiated |
| 169 | - Still subject to A2P 10DLC registration in US |
| 170 | |
| 171 | **For full sequence templates with copy and timing**: see [references/sequence-templates.md](references/sequence-templates.md). |
| 172 | |
| 173 | --- |
| 174 | |
| 175 | ## SMS Copy Guidelines |
| 176 | |
| 177 | ### Structure |
| 178 | 1. **Sender ID** ("From Acme:" or brand short code) — required |
| 179 | 2. **Hook** — first 5 words decide if they read on |
| 180 | 3. **Value** — what's in it for them, specifically |
| 181 | 4. **CTA + short link** — single action, single URL |
| 182 | 5. **Compliance footer** — "Reply STOP to opt out" (required on opt-in confirmation and at least quarterly thereafter; carrier-recommended on every promotional message) |
| 183 | |
| 184 | ### Length |
| 185 | |
| 186 | - **160 chars (GSM-7)** = 1 segment. Aim here. |
| 187 | - **70 chars (UCS-2)** if you use emojis, accented characters, or curly quotes — you'll pay for more segments. |
| 188 | - **161–306 chars** = 2 segments (concatenated SMS). Acceptable for richer messages, but you're paying double per send. |
| 189 | - **MMS** (image + up to 1,600 chars) = 3–5× the SMS cost. Use sparingly for high-impact moments. |
| 190 | |
| 191 | ### Voice |
| 192 | |
| 193 | - Conversational, not corporate. SMS feels personal — write like you're texting a friend. |
| 194 | - No subject line, no formatting, no marketing-speak. |
| 195 | - Emojis are fine in moderation (one per message, situationally). |
| 196 | - ALL CAPS reads as shouting. Avoid except for explicit codes (e.g., "Use ACME10"). |
| 197 | |
| 198 | ### Personalization |
| 199 | |
| 200 | - First name token if available (boosts CTR ~20%) |
| 201 | - Recent product/category browse-based |
| 202 | - Location-based offers (where applicable) |
| 203 | - Don't fake intimacy ("Hey friend!") — it backfires |
| 204 | |
| 205 | **For complete copy patterns by sequence type with character counts**: see [references/sequence-templates.md](references/sequence-templates.md). |
| 206 | |
| 207 | --- |
| 208 | |
| 209 | ## Platform Selection |
| 210 | |
| 211 | | Platform | Best For | Native MCP | Cost Tier | |
| 212 | |----------|----------|:---:|-----------| |
| 213 | | **Klaviyo SMS** | DTC ecom already on Klaviyo email | ✓ | $$ | |
| 214 | | **Postscript** | DTC Shopify ecom, deep integration | - | $$ | |
| 215 | | **Attentive** | Mid-market+ ecom, full-service | - | $$$ | |
| 216 | | **Twilio** | Custom builds, transactional, devs | - | $ (raw API) | |
| 217 | | **Brevo SMS** | EU-focused, email + SMS combo | ✓ | $ | |
| 218 | | **SimpleTexting** | SMB, simple needs, ease of use | - | $ | |
| 219 | | **Customer.io** | Behavior-based automation + SMS | - | $$ | |
| 220 | |
| 221 | **Quick picks**: |
| 222 | - Already on Klaviyo for email + DTC/ecom → **Klaviyo SMS** (no second platform to learn) |
| 223 | - Shopify ecom, want deeper SMS-specific features → **Postscript** |
| 224 | - Building custom SMS into a product → **Twilio** |
| 225 | - B2B SaaS doing transactional/auth → **Twilio** or **Customer.io** |
| 226 | |
| 227 | **For platform deep-dives (features, pricing, integration paths, A2P registration)**: see [references/platforms.md](references/platforms.md). |
| 228 | |
| 229 | --- |
| 230 | |
| 231 | ## Measurement |
| 232 | |
| 233 | ### Key Metrics |
| 234 | |
| 235 | | Metric | What it tells you | Healthy range (ecom DTC) | |
| 236 | |--------|-------------------|--------------------------| |
| 237 | | **Opt-in rate** | Top of funnel health | 5–25% of email subscribers | |
| 238 | | **CTR** | Message relevance | 8–15% (vs ~3% email) | |
| 239 | | **Conversion rate (per send)** | Revenue impact | 1–5% per promotional send | |
| 240 | | **Revenue per send (RPS)** | Channel economics | $0.20–$2.00 | |
| 241 | | **Opt-out rate per send** | Audience fatigue | <2% per send, <0.5% for promotional | |
| 242 | | **Cost per send** | Channel cost discipline | $0.0075–$0.04 | |
| 243 | | **List growth rate** | Audience momentum | 5–15%/month early, 1–3% steady-state | |
| 244 | |
| 245 | ### What to track in analytics |
| 246 | |
| 247 | - UTM tag every link: `utm_source=sms&utm_medium=sms&utm_campaign=[campaign-name]` |
| 248 | - Conversion attribution: SMS-driven sessions, last-click revenue, assisted conversions |
| 249 | - LTV impact: SMS subscribers vs email-only subscribers (typically 1.5–3× LTV for SMS opt-ins) |
| 250 | |
| 251 | ### What to A/B test |
| 252 | |
| 253 | - Send time (afternoon vs evening, local time) |
| 254 | - Copy length (short SMS vs MMS with image) |
| 255 | - Discount amount and trigger (immediate vs delayed) |
| 256 | - Personalization tokens (with first name vs without) |
| 257 | - CTA copy ("Shop now" vs "See it" vs "Last chance") |
| 258 | |
| 259 | Cross-reference **ab-testing** skill for proper test design and **analytics** for attribution setup. |
| 260 | |
| 261 | --- |
| 262 | |
| 263 | ## Output Format |
| 264 | |
| 265 | When the user asks for an SMS plan, return: |
| 266 | |
| 267 | 1. **Compliance check**: Are they registered for A2P 10DLC (if US)? Is the opt-in mechanism compliant? Flag blockers first. |
| 268 | 2. **Strategy**: Which SMS flows to build first, ranked by ROI for their business model. |
| 269 | 3. **Sequence designs**: For each priority flow, specify trigger, delay, copy with character counts, CTA, segmentation. |
| 270 | 4. **Platform recommendation**: Based on stack, list size, and complexity. |
| 271 | 5. **Measurement plan**: KPIs, benchmarks, A/B test queue. |
| 272 | 6. **Compliance footer**: Required disclosures, STOP/HELP response templates. |
| 273 | |
| 274 | Keep recommendations specific. Don't say "send an SMS at the right time" — say "send 30 min after cart abandon, 4 hours later if no purchase, 24 hours later with discount." |
| 275 | |
| 276 | --- |
| 277 | |
| 278 | ## Task-Specific Questions |
| 279 | |
| 280 | 1. Are you US, EU, or both? (Changes compliance approach entirely.) |
| 281 | 2. Is A2P 10DLC registration complete (US)? |
| 282 | 3. What platform are you on or considering? |
| 283 | 4. Email list size and SMS opt-in rate (if any)? |
| 284 | 5. What sequences do you already have running? |
| 285 | 6. Are you DTC ecom, mobile app, B2B SaaS, services? |
| 286 | 7. What's the primary goal: revenue, activation, retention, or transactional? |
| 287 | |
| 288 | --- |
| 289 | |
| 290 | ## Common Mistakes |
| 291 | |
| 292 | 1. **Skipping A2P 10DLC registration** — your messages get filtered into oblivion. Register first, send second. |
| 293 | 2. **Treating SMS like email** — sending daily promotional blasts. Opt-out rates spike, list dies. |
| 294 | 3. **Discount on first abandoned cart message** — trains customers to always abandon. Reserve for second or third send. |
| 295 | 4. **Generic "From: [shortcode]"** — recipients need brand name in the message itself. |
| 296 | 5. **Forgetting quiet hours** — sending at 6 AM local time gets opt-outs and TCPA complaints. |
| 297 | 6. **No STOP/HELP handling** — non-negotiable. Every platform handles this; verify yours does. |
| 298 | 7. **Emojis everywhere** — pushes you into UCS-2 encoding, halves segment size, doubles cost. |
| 299 | 8. **Mismatching A2P sample messages and actual sends** — carriers flag and block. |
| 300 | 9. **Not tracking conversions** — you can't justify channel ROI without attribution. |
| 301 | 10. **No throttling on bulk sends** — burst sends trigger carrier filtering. Use platform throttling. |
| 302 | |
| 303 | --- |
| 304 | |
| 305 | ## Tool Integrations |
| 306 | |
| 307 | For implementation, see the [tools registry](../../tools/REGISTRY.md). Key SMS tools: |
| 308 | |
| 309 | | Tool | Best For | MCP | Guide | |
| 310 | |------|----------|:---:|-------| |
| 311 | | **Klaviyo** | E-commerce email + SMS combined | ✓ | [klaviyo.md](../../tools/integrations/klaviyo.md) | |
| 312 | | **Postscript** | Shopify DTC SMS, deepest Shopify integration | - | [postscript.md](../../tools/integrations/postscript.md) | |
| 313 | | **Attentive** | Mid-market+ DTC SMS, full-service | - | [attentive.md](../../tools/integrations/attentive.md) | |
| 314 | | **Twilio** | Raw API for custom builds, transactional, dev-first | - | [twilio.md](../../tools/integrations/twilio.md) | |
| 315 | | **Plivo** | Twilio alternative, lower per-send cost | - | [plivo.md](../../tools/integrations/plivo.md) | |
| 316 | | **AudienceTap** | AI-forward DTC, on-pack QR opt-in | - | [audiencetap.md](../../tools/integrations/audiencetap.md) | |
| 317 | | **Brevo** | EU email + SMS, SMB-friendly | ✓ | [brevo.md](../../tools/integrations/brevo.md) | |
| 318 | | **Customer.io** | Behavior-based SMS automation | - | [customer-io.md](../../tools/integrations/customer-io.md) | |
| 319 | |
| 320 | --- |
| 321 | |
| 322 | ## Related Skills |
| 323 | |
| 324 | - **emails**: Sister channel — almost always run together. Email carries the long-form content; SMS carries the urgent nudges. |
| 325 | - **copywriting**: For SMS copy at scale and the longer-form pages/emails that SMS links to. |
| 326 | - **popups**: For phone number capture popups on-site. |
| 327 | - **churn-prevention**: For win-back flows that combine SMS + email. |
| 328 | - **onboarding**: For post-signup SMS milestone nudges. |
| 329 | - **analytics**: For attribution and RPS measurement. |
| 330 | - **ab-testing**: For SMS-specific test design. |
| 331 | - **lead-magnets**: For incentivizing opt-in (the "10% off for joining" offer). |