SMS gets a 98% open rate. The average response time is 90 seconds. No other channel comes close β not email, not push, not social. Yet most businesses treat it like a broadcast tool, blast promotions at opted-in contacts, and then wonder why opt-out rates are climbing.
This playbook is the opposite of that. NetWebMedia runs 100% of client communication through text-based channels β no phone calls, ever. Every lead, follow-up, sale, onboarding, review request, and re-engagement happens through SMS, Instagram DM, Facebook Messenger, or a combination of all three. This document is the operational architecture behind that system: seven modules, 31 lessons, every template copy-paste ready, bilingual where it matters.
Course Modules
Compliance, Opt-In & Legal Foundation
Before a single message goes out, the legal architecture has to be airtight. TCPA violations in the US start at $500 per message and climb to $1,500 for willful violations. In 2023 the FCC closed the "lead generator loophole" β consent obtained through third-party lead gen forms no longer transfers to the business. You need explicit, individual, documented consent. Everything in this module is built around that reality.
TCPA, CTIA, and Why the Rules Changed in 2024
The Telephone Consumer Protection Act (TCPA) governs SMS marketing in the United States. The CTIA β the wireless industry's self-regulatory body β layers additional best-practice requirements on top. Together they define what "legal" looks like for any automated messaging program. The key 2024 FCC ruling (Report and Order, FCC 23-107, effective January 27, 2025) ended blanket consent β meaning a single opt-in cannot cover multiple unrelated sellers. Each brand needs its own consent record for each contact.
The Consent Stack framework has four levels. Level 1 is express written consent β the gold standard, required for marketing messages. Level 2 is express consent β acceptable for informational/transactional messages. Level 3 is prior express consent β acceptable for debt collection, healthcare, and certain service messages. Level 4 is no consent β you cannot message this contact for any commercial purpose. Every contact in your CRM needs a consent level assigned. Defaulting to "unknown" is a compliance exposure, not a neutral state.
In Chile and LATAM, the equivalent framework is the Ley 19.628 (Chile), LGPD (Brazil), and various national data-protection laws. The principle is the same: documented, specific, revocable consent. The practical difference is enforcement β US TCPA class actions are aggressive and well-funded; LATAM enforcement is growing but less litigious for now. Build to US standards and you're covered everywhere.
- Audit every existing SMS contact: document how and when consent was obtained
- Flag any contact where consent source is "unknown" β suppress from automated sends until re-consented
- Review your lead capture forms: confirm each form names your brand specifically, not a category
- Download and file a copy of FCC Report and Order FCC 23-107 for your compliance records
- Map your contact list to a Consent Stack level (1β4) and store that level as a CRM field
Building a Bulletproof Double Opt-In Flow
Single opt-in β a checkbox on a form β is legally sufficient for TCPA compliance when the language is specific and visible. It is not sufficient for deliverability. Carriers and aggregators are increasingly filtering messages from senders whose lists show high opt-out rates. Double opt-in (a confirmation message the contact must reply to) reduces opt-out rates by 40β60% in most deployments because it confirms the contact actually wants messages and that the phone number is correct. Build double opt-in as your default, not a precaution.
The 3-Touch Consent Loop works as follows. Touch 1: the contact submits a form, checks in at a location, or scans a QR code β providing their phone number and ticking a clearly-worded consent checkbox. Touch 2: within 60 seconds, an automated SMS goes out asking them to confirm by replying YES (or the equivalent keyword). Touch 3: their YES reply triggers the welcome sequence and logs consent-confirmed with a timestamp. Each touch is logged separately: form submission timestamp, confirmation request timestamp, confirmation reply timestamp. That three-record trail is your legal defense if a dispute arises.
Instagram DM and Facebook Messenger have different consent mechanics. Users who initiate a conversation with your business via DM have given implied consent for that thread. You can send automated responses within that thread. Initiating a cold DM to someone who has never messaged you is against Meta's policies β and in some jurisdictions, against the law. The rule for Meta platforms: respond to inbound, do not cold-initiate.
{{BrandName}}: Thanks for signing up! Reply YES to confirm you want texts from us. Msg&data rates may apply. Reply STOP to cancel. HELP for help.
{{NombreMarca}}: Gracias por registrarte. Responde SΓ para confirmar que quieres recibir mensajes. Pueden aplicar tarifas. Responde STOP para cancelar.
{{BrandName}}: You're in! Expect updates, exclusive offers, and fast answers here. Reply STOP anytime to opt out. HELP for help. Talk soon!
{{NombreMarca}}: Β‘Ya estΓ‘s dentro! RecibirΓ‘s actualizaciones, ofertas y respuestas rΓ‘pidas aquΓ. Responde STOP para cancelarte. Β‘Hablamos pronto!
- Build the confirmation-request message into your opt-in flow before any marketing message fires
- Create a CRM field: consent_confirmed (boolean) + consent_confirmed_at (timestamp)
- Set up automation: contacts who never reply YES within 48h get tagged "unconfirmed" and suppressed
- For Instagram/FB: configure your auto-reply to trigger only on inbound DM, never cold-initiate
- Test the full loop end-to-end with your own phone number before launching
Mandatory Keyword Commands: STOP, HELP, JOIN
Three keywords are mandatory under CTIA guidelines and recognized by every major US carrier: STOP (and its variants: STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT), HELP (and INFO), and JOIN (or START, YES). Your platform must handle all variants of each. A contact texting UNSUBSCRIBE must get the same result as one texting STOP. Failing to honor any variant is a TCPA exposure.
The Keyword Compliance Triangle defines what each keyword must do and how fast. STOP triggers an immediate opt-out confirmation message (no marketing content allowed), sets a do-not-contact flag in your CRM, and prevents any future automated messages β including transactional ones unless the contact re-opts in. HELP triggers a message that identifies the sender, provides a contact method (email or phone), and reminds them how to opt out. JOIN or START re-enables messaging for contacts who previously opted out β this requires the contact to initiate the keyword, not the brand. Response time for all three: immediate (under 5 seconds). Never delay compliance keyword responses behind a queue or rate limiter.
For LATAM deployments: Chile's SernacFinanciero and Colombia's SIC both recognize STOP as a standard opt-out. Argentina and Mexico have similar provisions under their respective consumer-protection laws. Use STOP universally. For Spanish-speaking contacts, DETENER and BASTA are common equivalents β configure your platform to recognize both. When in doubt, honor any opt-out language regardless of keyword; the legal risk of messaging an unwilling recipient always outweighs the revenue from that contact.
{{BrandName}}: You've been unsubscribed. No more texts from us. Text JOIN to re-subscribe or email {{SupportEmail}} for help.
{{NombreMarca}}: Te diste de baja. No recibirΓ‘s mΓ‘s mensajes. Escribe UNIRSE para volver o contacta {{EmailSoporte}}.
{{BrandName}} SMS Help: Msgs from {{BrandName}}. Support: {{SupportEmail}}. Msg&data rates may apply. Reply STOP to cancel. Up to {{MsgFrequency}} msgs/mo.
- Configure your SMS platform to handle: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT (all variants)
- Add Spanish variants: DETENER, BAJA, CANCELAR β map all to opt-out action
- Configure HELP to fire within 5 seconds β test it yourself right now
- Confirm CRM flag is set automatically when STOP is received β not manually, not on a delay
- Test JOIN/re-subscribe flow: opt out with your own number, then re-subscribe, confirm the flow works
Consent Documentation: What to Store and Where
TCPA litigation almost always comes down to documentation. Plaintiffs claim they never consented. Defendants who win show the paper trail. The minimum viable consent record has six fields: contact phone number, timestamp of consent, source URL or physical location where consent was collected, the exact consent language shown to the contact at time of collection, IP address (for web forms), and the agent or system that processed the opt-in. Every field matters. "They checked a box" without the timestamp and language is not a defense.
The Consent Paper Trail framework stores this data in three places simultaneously. First: your SMS platform's native consent log. Most enterprise platforms (Twilio, Attentive, Klaviyo, GHL) have this built in β verify it is turned on. Second: your CRM, with all six fields as structured data (not a text note). Third: a cold-storage backup, such as a monthly CSV export to encrypted cloud storage. The redundancy is deliberate. Platforms get acquired, change data retention policies, or have outages. Your legal defense cannot depend on a SaaS company's data availability four years from now.
For Instagram DM and Facebook Messenger: Meta provides a message-level timestamp in its API. Store the first inbound message timestamp as your implied-consent date. For any DM-based marketing campaign where you're sending promotional content (not just responding), collect explicit consent via a landing page linked from the DM, with the same documentation standards as SMS.
- Add these six CRM fields: consent_source, consent_language, consent_timestamp, consent_ip, consent_platform, consent_agent
- Verify your SMS platform's consent logging is active β pull a test record to confirm data is being written
- Set up a monthly automated export of consent records to encrypted backup storage
- For Meta DMs: store first-inbound-message timestamp as implied_consent_date in CRM
- Document your consent language in a version-controlled file β if you update the language, keep all prior versions with effective dates
US vs. Chile/LATAM Compliance: Key Differences
The US TCPA framework is strict, litigious, and enforced primarily through private class-action lawsuits. Chile's Ley 19.628 on data protection and the 2022 updates under the Ley Marco de Ciberseguridad are enforced by the Consejo para la Transparencia and subject to SERNAC complaints. The practical risk profile is different: US violations create immediate class-action exposure; Chilean violations more often result in regulatory complaints and fines. Brazil's LGPD (Lei Geral de ProteΓ§Γ£o de Dados) is the most robust in the region and carries significant fines for willful violations.
The Dual-Jurisdiction Checklist addresses the five areas where requirements diverge. First, consent language: TCPA requires the consent language to explicitly name that autodialing/automated texts may be used; Chilean law requires the purpose to be specified but not the technical method. Second, opt-out mechanism: STOP is recognized universally, but LATAM platforms do not always process it natively β verify your carrier. Third, marketing hours: CTIA recommends 8amβ9pm local time; Chile's consumer protection code prohibits contact outside of 8amβ10pm. Fourth, message frequency disclosure: CTIA requires it in opt-in language ("up to X msgs/month"); Chilean law does not require a specific frequency disclosure but requires transparency about the nature of the service. Fifth, data residency: LGPD prefers Brazilian data to remain in Brazil; consider a regional data store if you have significant Brazilian contacts.
- Tag contacts by jurisdiction in your CRM: US, CL, BR, MX, CO, AR β at minimum distinguish US from LATAM
- Build separate opt-in forms for US vs. LATAM with jurisdiction-appropriate consent language
- Configure send-time restrictions: 8amβ9pm for US contacts; 8amβ10pm for Chilean contacts, local time
- Verify your SMS carrier/aggregator handles STOP for each country's number range (CL: +56, BR: +55, etc.)
- If you have 5,000+ Brazilian contacts, consult an LGPD specialist on data residency requirements
Keyword Triggers & Auto-Response Architecture
Keyword triggers are the nervous system of a text-based automation stack. A contact texts a word. The system recognizes it, selects the right response, and executes a workflow β all in under two seconds. Built right, this feels like talking to a company that has its act together. Built wrong, it's a maze of confusing responses that trains contacts to stop texting entirely.
Building Your Trigger Keyword Library
Not all keywords are equal. Some unlock legal requirements (STOP, HELP). Some capture intent at the top of the funnel (INFO, DEMO, QUOTE). Some advance a sale (YES, CONFIRM, BOOK). Some signal a problem (CANCEL, PAUSE, WAIT). Treating all keywords the same way β routing them to the same response queue β is one of the most common and costly mistakes in SMS automation. The Keyword Taxonomy separates keywords into four tiers, each with different handling logic.
Tier 1 β Compliance Keywords: STOP, HELP, START, JOIN. These are handled by your platform at the carrier level first, then by your CRM. Never override these in your custom logic layer. Tier 2 β Intent Keywords: INFO, LEARN, DEMO, QUOTE, PRICE, COST, APPLY, JOIN (context-dependent), FREE, OFFER. These fire top-of-funnel nurture sequences. Tier 3 β Action Keywords: YES, CONFIRM, BOOK, SCHEDULE, BUY, ORDER, CLAIM, REDEEM. These advance a contact through the pipeline. Tier 4 β Recovery Keywords: CANCEL, PAUSE, HOLD, WAIT, NO, NOT NOW, MAYBE, BUSY. These trigger save sequences or time-delay re-engagement.
Platform-specific limits matter. Standard SMS platforms (Twilio, Bandwidth): no technical keyword limit, but carrier content policies apply. GHL (GoHighLevel): keyword triggers in the workflow builder β practical limit of 50β100 active triggers before performance degrades. Instagram DM automation (via ManyChat or native Meta tools): keyword triggers are case-insensitive, 50-keyword limit per automation on most plan tiers. Facebook Messenger via Meta's API: similar 50-keyword limit in third-party tools; Meta's native automated responses handle a smaller subset. Plan your library with these limits in mind β prioritize high-volume, high-intent keywords first.
- Document your Tier 1β4 keyword library in a spreadsheet before building any automations
- Map each keyword to: response message, next workflow, CRM tag, and priority tier
- Check your platform's active keyword limit β stay under 80% of that limit to preserve headroom
- Test for case sensitivity: confirm INFO, info, and Info all trigger the same response
- Add common misspellings for high-value keywords (QOUTE β QUOTE, CANCLE β CANCEL)
Response Mapping: Connecting Keywords to Outcomes
A keyword without a mapped response is an open loop. A response without a CRM action is a dead end. The Trigger-Response Matrix maps each keyword to three things simultaneously: the immediate reply (what the contact receives within 2 seconds), the CRM action (tag added, pipeline stage moved, field updated), and the next automation step (sequence enrollment, human handoff, or end state). All three need to be defined before you activate any keyword. This matrix is your source of truth β when something breaks, you start here.
The most important column in the matrix is "expected follow-up action." A contact who texts QUOTE expects a price or a question that leads to one. If your QUOTE response is "Thanks for your interest! Someone will get back to you soon," you have broken their expectation. They texted because they wanted an immediate answer. Every response must either deliver the answer or ask the one question needed to deliver it. Multi-step response chains are fine β but every step must move the conversation forward, not stall it.
{{BrandName}}: Got it! Quick question β what service do you need a quote for? Reply with the number:
1. {{Service1}}
2. {{Service2}}
3. {{Service3}}
Or reply CALL and we'll reach out.
Hey {{FirstName}}! Thanks for reaching out to {{BrandName}}. Here's what we do: {{OneLinerDescription}}.
Want to see pricing, or have a specific question? Just reply here β we'll get back to you fast.
Hi {{FirstName}}! We'd love to show you {{ProductName}} in action. Our demos run 20 minutes and cover exactly what's relevant to your business.
Pick a time that works: {{CalendlyLink}}
Or just reply with your availability and we'll make it work.
- Build the Trigger-Response Matrix as a spreadsheet: keyword | immediate reply | CRM action | next step
- For every Tier 2 and Tier 3 keyword, define the "expected outcome" from the contact's perspective
- Audit each response: does it deliver or move toward delivering what the contact expected?
- Set CRM tags for every keyword trigger β at minimum: keyword_triggered, trigger_date, trigger_platform
- Build a "fallback" response for unrecognized replies (see Lesson 4.2)
Time-Based Routing: When the Clock Matters
A contact who texts at 11pm is different from one who texts at 2pm on a Tuesday. The message they receive should reflect that. Time-based routing is not about limiting when you respond β it is about making the response contextually appropriate and setting accurate expectations. A contact who texts at midnight and receives an immediate "Our team will be in touch in 2 minutes!" will be frustrated when no one follows up. The same contact who receives "Got your message β our team is offline, but you'll hear from us first thing at 9am ET" will appreciate the transparency.
The Time Window Router defines four windows. Business hours (configurable, typically 9amβ6pm local): full automation + human handoff available. Extended hours (6pmβ9pm): automation only, no human handoff, longer wait-time disclosure. After hours (9pmβ8am): automation only, next-business-day expectation set explicitly. Weekends: automation only, next-Monday response for anything requiring a human. For multi-timezone operations, route by contact's local time, not your business's timezone. Your CRM should store contact timezone β if it doesn't, capture it at opt-in or infer it from area code.
{{BrandName}}: Hi {{FirstName}}! We got your message. Our team is offline right now but you're first in line β expect a reply by {{NextBusinessDay}} at 9am. Need something urgent? Email {{UrgentEmail}}.
{{NombreMarca}}: Hola {{Nombre}}, recibimos tu mensaje. Estamos fuera de horario, pero eres el primero en la lista. Te respondemos el {{ProximoDiaHabil}} a las 9am.
- Define your four time windows and document them in your automation platform
- Configure timezone detection: use contact's area code to infer timezone if not explicitly stored
- Build the after-hours response before your first keyword goes live β contacts don't observe business hours
- Test after-hours routing by triggering a keyword from your phone at 11pm
- Set a human-handoff SLA for business-hours responses and put it in the auto-reply copy
Multi-Keyword Logic: When Contacts Send Multiple Words
Contacts do not read instructions. They text "I want a quote for marketing services ASAP" rather than just "QUOTE." They text "cancel my appointment" rather than just "CANCEL." Natural-language input that contains multiple possible trigger keywords is the failure point of most simple SMS automations. The platform sees "cancel" and fires the cancellation flow, missing the "appointment" context entirely. Or it sees nothing recognizable and fires the fallback. Neither outcome is correct.
The Intent Priority Stack resolves this with a clear priority order. When multiple keywords are detected in a single message, the system evaluates them in this order: Tier 1 (compliance) wins over everything. Within Tier 2β4, the most specific keyword wins over the most general. If specificity is equal, the Tier 3 action keyword wins over Tier 4 recovery and Tier 2 intent. This stack is implemented as an ordered conditional in your automation platform β most platforms support this with "first match wins" logic if you order your rules correctly. Test every combination of your high-volume keywords against each other before going live.
- List every pair of commonly co-occurring keywords in your library and define which wins
- Configure "first match wins" or ordered conditional logic in your automation platform
- Test 20 natural-language messages that contain embedded keywords β confirm each routes correctly
- Build a catch-all for messages that match zero keywords (Lesson 4.2 covers the response)
- Log keyword-match failures in a monthly report β use them to expand your keyword library
Platform-Specific Keyword Limits and Workarounds
Every platform has constraints. Knowing them in advance prevents the painful rebuild halfway through a deployment. For SMS via dedicated long codes (10DLC): no technical keyword limit, but carriers filter "keyword-stuffed" opt-in confirmations. Keep your keyword menu choices to 3β5 options per message. For toll-free numbers: similar to 10DLC; verified toll-free numbers have better throughput (1 msg/sec vs 1 msg/10 sec for unverified). For shortcodes: fastest throughput (100 msg/sec), highest cost, and most restricted to pre-approved keyword/response pairs submitted at registration. Plan 6β8 weeks for shortcode provisioning.
For Instagram DM automation via ManyChat: 50 keyword triggers on the Growth plan, 10 on the free plan. Workaround: use a single catch-all keyword trigger that routes to a quick-reply menu, reducing the number of distinct keyword automations needed. For Facebook Messenger via ManyChat or Chatfuel: same 50-keyword practical limit. Meta's own "Instant Reply" and "Frequently Asked Questions" tools handle up to 5 FAQs natively. For WhatsApp Business API (relevant for LATAM): keyword triggers are supported, but WhatsApp's template approval process applies to all outbound messages sent outside a 24-hour session window. Build your template library and get them approved before you need them.
- Document which phone number type you're using (10DLC, toll-free, shortcode) and its throughput limit
- If using 10DLC, confirm your brand and campaign registration is complete β unregistered 10DLC numbers are filtered heavily by major carriers
- For Instagram/FB: architect your keyword flow to stay under 40 active triggers (buffer below the 50 limit)
- For LATAM WhatsApp: submit your message templates for approval 2+ weeks before any campaign launch
- Build the Platform Constraint Map: one row per platform, columns for keyword limit, throughput, cost, and approval requirements
Drip Sequences & Nurture Automation
A drip sequence is a pre-scheduled series of messages sent to a contact based on their behavior or status. The word "drip" misleads some marketers into thinking slow and steady. In SMS, the right cadence is faster than email β contacts expect text messages to be timely. But faster does not mean more frequent. A well-designed drip respects attention, varies content type, and earns each next message through the value of the last one.
Day-by-Day Sequence Design: The First 14 Days
The first 14 days after a contact opts in are the highest-engagement window you will ever have. Open rates in this period run 10β15 percentage points higher than your long-term average. Miss this window with low-value messages and you train the contact to ignore future texts. The 14-Day Velocity Ladder front-loads value and progressively introduces asks, matching message frequency to the relationship's development curve rather than an arbitrary calendar.
Day 0 (immediate): Welcome + single clear value statement. Day 1 (24h): One piece of high-value content β a tip, a stat, a short how-to. No ask. Day 3: Social proof β a specific result or customer story in 2 sentences. Soft ask ("Want to see how we did this?"). Day 5: The relevant offer or product message β direct, specific, with a single link. Day 7: Follow-up on Day 5 if no response β one sentence, no repeat of the full offer. Day 10: Change-of-angle message β address the most common objection directly. Day 14: The close β last message in the sequence, create genuine urgency without manufacturing scarcity. After Day 14: move to a maintenance cadence (see Lesson 3.2).
{{BrandName}}: Welcome, {{FirstName}}! Here's what to expect: {{ValueProp}} β all via text, no calls. Questions? Just reply here. Reply STOP to opt out.
{{NombreMarca}}: Β‘Bienvenido, {{Nombre}}! Esto es lo que puedes esperar: {{PropuestaValor}} β todo por mensaje, sin llamadas. ΒΏPreguntas? Responde aquΓ.
{{BrandName}}: Quick tip for {{FirstName}} β {{Tip1}}. Most {{TargetAudience}} don't know this. More tomorrow. Reply STOP to opt out.
{{BrandName}}: {{CustomerName}} from {{CustomerCity}} got {{Result}} in {{Timeframe}} with us. Want to see exactly how? Reply YES and we'll send the breakdown.
Hey {{FirstName}} β wanted to share something with you directly.
We're offering {{OfferDescription}} right now β {{OfferDetails}}. This is specifically for people who've been following our work (you qualify).
Interested? Tap the link or just reply YES and I'll send you the details: {{OfferLink}}
- Write all 7 sequence messages (Day 0, 1, 3, 5, 7, 10, 14) before activating the sequence
- For each message, define the single desired action you want the contact to take
- Confirm each message is under 160 chars for SMS (or note which ones will split into 2 segments)
- Build the "YES" response path from Day 3 β contacts who reply YES should enter an accelerated pipeline stage
- Set up exclusion logic: contacts who convert at any point should exit the drip sequence immediately
Message Cadence Rules: How Often Is Too Often
CTIA guidelines recommend a maximum of 5 marketing messages per month for most SMS programs. That is not a floor β it is a ceiling that most programs should stay well below. The optimal cadence depends on your industry, your content quality, and what your contacts opted in for. A flash-deal retailer can sustain 4 messages a week without high opt-out rates because contacts expect and value deal alerts. A B2B service firm sending 4 messages a week will see opt-out rates climb above 3% within 30 days, which puts their sender reputation at risk.
The Cadence Ceiling has three tiers. Tier A (high-frequency tolerance): retail, restaurants, entertainment β up to 8 messages per month, maximum 2 per week. Tier B (medium-frequency tolerance): e-commerce, local services, healthcare β up to 4 messages per month, maximum 1 per week. Tier C (low-frequency tolerance): B2B, professional services, financial β up to 2 messages per month. These are maximums, not targets. The best cadence is the one that produces the lowest opt-out rate alongside the highest response rate β measure both and find your floor. For Instagram DM drip sequences, frequency limits are less defined by policy but equally important from an engagement perspective; the 48-hour messaging window restriction on Messenger applies even if not on Instagram.
- Assign your program to a Cadence Ceiling tier (A, B, or C) based on industry and audience expectation
- Set a hard cap in your automation platform β no contact should receive more than your tier ceiling in a 30-day window
- Track opt-out rate by message β if any single message produces >1% opt-outs, pause and rewrite it
- Track reply rate by message β if a message gets <1% reply rate, it is either the wrong audience or the wrong content
- Review cadence performance monthly β adjust the ceiling down if opt-out rates climb above 0.5%
Behavioral Triggers: Moving Contacts Based on What They Do
Time-based drips treat every contact the same. Behavioral triggers treat contacts based on what they actually do. A contact who clicks the link in your Day 5 message has demonstrated intent β they should not receive the Day 7 generic follow-up. They should enter a faster, more targeted sequence designed for high-intent contacts. A contact who ignores three consecutive messages has also demonstrated something β they should be moved to a re-engagement sequence before being suppressed. Behavioral branching is what separates an SMS program that scales with your list from one that degrades as it grows.
The Behavioral Branch Map defines triggers and their resulting branch. Link click β move to "Interested" track, skip remaining nurture messages, enter a conversion sequence. Reply with any word β remove from timed drip, route to conversation automation (Module 4). No opens/clicks for 3 consecutive messages β enter re-engagement sequence (Lesson 4.5). Opt-out at any point β immediate removal from all sequences, do-not-contact flag. Convert (purchase, book, complete form) β exit all drip sequences, enter onboarding sequence. Each branch is a separate automation β do not try to build all branches into a single linear flow. The Behavioral Branch Map should be a visual diagram, not a spreadsheet. Draw it before you build it.
- Define behavioral triggers for your program: link click, reply, no response, conversion, opt-out
- Build each branch as a separate named automation β not a conditional within the main drip
- Set "conversion" events in your CRM and confirm they fire the "exit drip" action correctly
- Test the link-click branch by clicking a link with a test contact β confirm the branch fires and the main drip stops
- Document your Behavioral Branch Map as a visual diagram β update it whenever you add a new branch
Content Variety: Text, Image, Link β What Works on Each Platform
Plain text converts on SMS. This surprises marketers who assume richer is better. MMS (multimedia messaging, allowing images and GIFs) has its place, but it costs 3β5x more per message, loads slowly on poor connections, and is not rendered consistently across all devices. The rule for SMS: use MMS only when the image is the message β a before/after photo, a product visual, a QR code. Use plain SMS for everything else. High-conversion plain-text messages outperform MMS by 2:1 in most B2B and local services contexts.
Instagram DM is the opposite. The platform is visual by nature β contacts expect richer content. Sending text-only sequences on Instagram DM when you could be sending carousels, product tags, or short video clips is leaving engagement on the table. Facebook Messenger sits in the middle: supports rich cards and quick-reply buttons, which significantly increase response rates for structured questions. The Content-Platform Matrix maps content types to platforms with an engagement multiplier. Plain text on SMS: baseline 1.0x. MMS on SMS: 0.8x engagement, 3x cost β use sparingly. Rich cards on Messenger: 1.4x baseline engagement. Image + caption on Instagram DM: 1.6x baseline. Quick-reply buttons (Messenger/IG): 1.8x for structured next-step prompts.
Hi {{FirstName}}, what best describes you right now?
[Just browsing] [Ready to get started] [Have a specific question]
- Audit your existing SMS sequences: identify which messages are MMS vs. SMS and whether MMS is justified
- For Instagram DM sequences: add at least one image or visual element per week of the sequence
- For Messenger sequences: replace text-only "Reply with 1, 2, or 3" prompts with native quick-reply buttons
- Test load time of any MMS on a 3G connection β if it loads slowly, use plain SMS with a link instead
- Build the Content-Platform Matrix for your program: content type x platform x cost x expected engagement
Two-Way Conversation Automation
One-way SMS broadcasting is dead. Every platform that delivers high open rates is doing so because contacts trust they will get a reply if they respond. The moment a contact texts back and gets no response β or an obviously irrelevant automated reply β you have broken that trust. Two-way conversation automation is the system that maintains the illusion (and, increasingly, the reality) of a real conversation while operating at scale without a human in the loop for the majority of interactions.
Reply Detection: Knowing When a Human Responded
Not every inbound message is a reply to your last outbound. A contact might text your number for the first time in six months with a new question entirely. A contact enrolled in a drip might text a completely unrelated question mid-sequence. Your system needs to distinguish between four types of inbound messages: a direct reply to the last outbound message (most common), a new query unrelated to any active sequence, a keyword-triggered message covered by your library, and a compliance keyword (STOP, HELP). Each type requires different handling.
The Reply Signal Hierarchy routes inbound messages in priority order. First check: compliance keyword β handle immediately, override everything else. Second check: known keyword from library β handle as defined in Trigger-Response Matrix. Third check: active sequence context β if the contact is enrolled in a drip and the message appears to be a response to the last drip message, attempt intent classification (Lesson 4.2). Fourth check: no context match β route to conversation automation with full history provided as context. The key technical requirement is message threading: your platform must store and provide the last 5β10 messages of context when classifying any inbound reply.
- Confirm your platform stores full conversation history per contact β not just the last message
- Build the four-tier routing logic in your automation platform (compliance β keyword β context β fallback)
- Test: send an inbound message that matches no keyword and is not in context β confirm it reaches the fallback handler
- Test: reply to an active drip message with "yes" β confirm the drip exits and the YES branch fires
- Set up an inbound message alert for human review of messages that reach the fallback handler more than 3 times from the same contact
Intent Classification: What Does This Reply Actually Mean?
Contacts rarely reply with clean keywords. They reply with "sounds good," "how much does it cost," "my husband asked about this," "can you send me more info," "I changed my mind," or "I'm not interested right now." Your system needs to classify these replies into actionable buckets without requiring human review of every message. The 5-Intent Classifier reduces every inbound reply to one of five buckets: Affirm (yes, sounds good, let's do it, I'm in), Inquire (a question, request for more information), Object (a concern, hesitation, or stated barrier), Defer (not now, later, busy, let me think), or Disengage (no, not interested, stop, remove me).
Classification can be rule-based (keyword matching against common phrases in each bucket) for lower-cost platforms. For higher-volume programs, an LLM-based classifier running on GPT-4o mini or Claude Haiku costs under $0.001 per message and handles nuance that rule-based systems miss. The classifier's output tags the CRM record and routes to the appropriate response automation. Each intent bucket has a defined response playbook β the same response going to Affirm and Inquire contacts would be a failure of this system.
{{BrandName}}: Great, {{FirstName}}! Next step: {{NextAction}}. Takes about {{TimeEstimate}}. Here's the link: {{ActionLink}} β or reply HELP if you hit anything.
{{BrandName}}: Good question, {{FirstName}}. {{AnswerToQuestion}} β if that's not quite it, reply with what you're looking for and I'll get you the right answer.
{{BrandName}}: Totally get it, {{FirstName}}. When's a better time? Reply with a day/time and I'll follow up then instead. No rush.
{{NombreMarca}}: Entendido, {{Nombre}}. ΒΏCuΓ‘ndo serΓa mejor para ti? Responde con un dΓa y hora y te contacto entonces. Sin prisa.
- Build the 5-Intent Classifier as either a keyword-phrase map (rule-based) or an LLM classification call
- Write response templates for all five intent buckets β do not use the same template for more than one bucket
- Build a FAQ library: collect the 30 most common inbound questions and pair each with a 1β2 sentence SMS-friendly answer
- Tag every classified reply in the CRM: intent_type, intent_classified_at, intent_classification_method
- Set up a weekly review: pull 50 random classified replies and check classification accuracy β tune the classifier based on errors
Dynamic Responses: Personalizing Without Writing Every Message
Dynamic responses use stored contact data to make automated messages feel specific. The minimum viable variable set for SMS is: {{FirstName}}, {{BusinessName}} (if B2B), {{LastInteractionDate}}, {{ServiceInterestTag}}, and {{AssignedRep}} (if contacts are assigned to a team member). These five variables transform a generic message into one that feels like it was written by someone who knows the contact. The difference in response rates is significant β personalized messages produce 2β3x higher reply rates than generic ones, even when contacts know the messages are automated.
The Variable Injection System goes beyond first-name personalization. Behavioral variables β {{LastSequenceMessage}}, {{LastClickedProduct}}, {{DaysSinceLastReply}} β create contextually accurate messages that reference what the contact actually did. Industry-specific variables β {{LeadSource}}, {{ZipCode}}, {{ServiceArea}} β allow location and context-aware responses. The rule for variable injection: every variable must have a fallback value. If {{FirstName}} is blank, the fallback should be "there" (as in "Hey there") β not an error or an empty space. Build and test every fallback before going live.
{{BrandName}}: Hey {{FirstName|there}} β you checked out {{LastViewedService|our services}} {{DaysSinceLastVisit}} days ago. Still interested? Reply YES for a quick breakdown.
- Audit your CRM: which fields are populated for 90%+ of contacts? These are safe to use as variables
- For every variable you use, define and test a fallback value β never leave a variable without one
- Build a variable library: document every variable, its source field, its fallback, and which templates use it
- Test all templates with a contact that has blank first name, blank business name, and blank service tag
- Add at least one behavioral variable to every sequence message beyond Day 1
Conversation State Management: Tracking Where Every Contact Is
Every contact in your messaging system is always in exactly one of a finite number of states. They are either new (entered but not yet messaged), active-drip (enrolled in a sequence), awaiting-reply (you sent a message and are waiting for their response), in-conversation (they replied and you are in an active exchange), converted (they completed a desired action), dormant (no activity for X days), or opted-out. The Conversation State Machine ensures that every transition between states is intentional and logged. Without state management, you end up with contacts in conflicting automations β receiving a drip message the same day a human sends them a personal follow-up, for example.
State transitions are triggered by events. A new opt-in β state: new. Welcome message sent β state: active-drip. Contact replies β state: in-conversation. No reply to 3 consecutive messages over 14 days β state: dormant. Opt-out received β state: opted-out. This state needs to be stored as a single CRM field (conversation_state) with a timestamp (conversation_state_updated_at). Your automation rules should check this field before executing any action β a contact in opted-out state should never receive any automated message regardless of what other conditions are met.
- Add conversation_state and conversation_state_updated_at fields to your CRM
- Map every automation to a state check: "only fire if conversation_state = [X]"
- Build state transitions as their own automation steps β every state change writes to the CRM field
- Run a weekly audit: contacts with conversation_state = NULL need to be manually classified
- Build a dashboard showing contact count by conversation state β this is your program health indicator
Re-Engagement After Silence: Winning Back Dormant Contacts
Dormant contacts β those who have not replied in 30β90 days β are not lost. They are an asset that has not been activated. Re-engagement campaigns on SMS outperform list acquisition in cost-per-conversion by a factor of 3β5x in most programs because consent is already established and the contact has prior brand exposure. The risk is different from new acquisition: a poorly-designed re-engagement message from a number a contact barely remembers will generate opt-outs. The win-back approach must acknowledge the gap in contact without making the contact feel guilty for it.
The 3-Message Win-Back Sequence has a clear structure. Message 1 (Day 1 of re-engagement): a low-friction, high-curiosity message that does not require the contact to remember who you are. Open with the brand name prominently, reference something specific about them or your offer, and end with a single easy yes/no question. Message 2 (Day 3, only if no reply to Message 1): a changed-angle message β a different hook, a piece of social proof, a new offer. Do not repeat Message 1. Message 3 (Day 7, only if no reply to Message 2): the explicit last-message β tell them this is the last one, give them a clear reason to stay subscribed, and mean it. If they do not reply, suppress them. A suppressed contact is better than an opted-out one β you can re-engage them through other channels.
{{BrandName}}: Hey {{FirstName|there}} β haven't heard from you in a while. Quick question: still interested in {{ServiceCategory}}? Reply YES or NO β takes 2 secs.
{{BrandName}}: {{FirstName|Hey}} β just wanted to share: {{SocialProofStat}} for clients like you this quarter. Thought it might be relevant. Still want in? Reply YES.
{{BrandName}}: Last one, promise. We're keeping our list tight β if texts from us aren't useful anymore, no hard feelings. Reply KEEP to stay or STOP to exit. Either is fine.
{{NombreMarca}}: Γltimo mensaje, lo prometemos. Si nuestros textos ya no te sirven, sin problema. Responde QUEDAR para seguir o STOP para salir. Lo que prefieras.
- Define your "dormant" threshold β 30, 60, or 90 days without a reply depending on your cadence
- Build a dormant segment in your CRM that auto-populates based on last_reply_date
- Activate the 3-Message Win-Back Sequence for contacts entering the dormant segment
- After Message 3 with no reply: set conversation_state to "suppressed" β not opted-out, not active
- Track win-back rate by message β if Message 1 generates <3% reply rate, rewrite the hook
Multi-Platform Unified Inbox Strategy
Managing SMS, Instagram DM, Facebook Messenger, and Google Business Messages as four separate siloed tools creates a coordination nightmare and a fragmented contact history. The same person might text your SMS number, then DM you on Instagram, then leave a Google Maps question β and your team treats them as three different contacts. The unified inbox strategy solves this by treating all text-based channels as a single communication surface with platform-specific presentation but shared data and shared logic.
Instagram DM Automation: What Meta Allows and What Works
Instagram DM automation is governed by Meta's Messaging Policy and the Instagram Platform Policy. The key constraint: you can only send automated messages in response to a user-initiated action. A user comments on your post, sends you a DM, clicks an ad with a DM CTA, or taps a story reply β these are all valid triggers. Sending unprompted DMs to users who have not initiated contact is a platform violation that can result in account restriction or loss of API access. Build your IG DM automation around inbound triggers, not outbound campaigns.
The IG DM Funnel has four stages. Stage 1: Trigger β a comment, DM, or story reply from the user. Stage 2: Immediate auto-reply β acknowledges receipt, delivers initial value (lead magnet, answer, or navigation menu). Stage 3: Follow-up sequence β if the user continues the conversation, advance through a pre-built flow. Stage 4: CTA β a single clear action (link click, appointment booking, form completion). The IG DM Funnel works best when paired with an Instagram post or Reel that explicitly invites comments containing a specific keyword ("Comment DEMO below and I'll DM you the details"). Comment-triggered DMs consistently produce 30β50% click-through rates because the contact is already engaged with your content.
Hey {{FirstName}}! You asked for the details on {{PostTopic}} β here they are: {{LinkOrInfo}}.
This is our full breakdown β if you have questions after reading, just reply here and I'll help directly.
Β‘Hola {{Nombre}}! Me pediste los detalles sobre {{TemaPost}} β aquΓ los tienes: {{EnlaceOInfo}}.
Es todo lo que necesitas saber. Si tienes preguntas despuΓ©s de leerlo, respΓ³ndeme aquΓ directamente.
- Confirm your Meta Business account has DM automation enabled via the Inbox API or a third-party tool (ManyChat, MobileMonkey, GHL)
- Identify your three highest-engagement post types and build comment-triggered DM flows for each
- For Story Replies: configure an auto-response that acknowledges the specific story they replied to
- Test the comment trigger: post, comment with the trigger keyword, confirm the DM arrives within 30 seconds
- Connect the IG DM contact record to your CRM β every IG conversation should create or update a CRM contact
Facebook Messenger Flows: Buttons, Cards, and Sequences
Facebook Messenger automation has the richest native content format of any text-based channel: quick-reply buttons, persistent menus, card carousels, list templates, and media attachments. The temptation is to use all of them at once. The reality is that complexity in Messenger flows produces abandonment. Users who encounter a five-step button tree to answer a basic question will leave and not come back. The Messenger Experience Ladder builds complexity gradually β only adding interaction layers as the user demonstrates willingness to engage.
The ladder has three rungs. Rung 1 (first contact): a single question with two or three quick-reply buttons. Nothing more. The goal is one micro-commitment. Rung 2 (returning engagement): a follow-up that references their previous choice and offers one more specific question. By Rung 2, the user has signaled intent twice β you can introduce a card with a link. Rung 3 (high-intent): a carousel of options, a booking link, or a detailed product comparison. Users who reach Rung 3 have self-selected as genuinely interested. The 24-hour messaging window on Messenger (you can send freely within 24 hours of the last user message; after that, only approved templates apply) means your most valuable Rung 3 content needs to be sent while the window is open.
Hi {{FirstName}}! Thanks for reaching out to {{BrandName}}. What can I help you with today?
[Get a Quote] [Learn About Services] [Speak to Someone]
Great β for a {{SelectedService}} quote, I just need two quick things. What's your approximate budget range?
[Under $1k/mo] [$1kβ$3k/mo] [$3k+/mo]
- Build your Rung 1 flow first β only advance to Rung 2 and 3 after Rung 1 is tested and performing
- Configure Messenger's Persistent Menu with your 3 most common entry points
- Build a template library for post-24h-window messages β these must be Meta-approved templates
- Test all quick-reply buttons on mobile: confirm labels are not truncated and tap targets are adequate
- Connect Messenger contact data to CRM: button choices = CRM tags for segmentation
Google Business Messages: The Overlooked Channel
Google Business Messages (GBM) allows businesses with a verified Google Business Profile to receive and respond to messages directly from Google Search and Maps results. When a prospect searches for your business (or a competitor) and sees your listing, they can tap "Chat" and start a conversation without ever visiting your website. This is one of the highest-intent touchpoints in the customer journey β someone searching for your category on Google is further along than most top-of-funnel leads. Despite this, most businesses either have GBM disabled or respond manually with no automation.
The Local Intent Capture System builds a GBM automation on top of a simple insight: people who message from Google Search are asking one of five questions. They want your hours or availability, your pricing, your location or directions, whether you handle their specific use case, or how to book/order. Build five quick automated responses to these questions and you have covered 85%+ of GBM inbound. The sixth response is a catch-all that routes to your unified inbox for human handling. For multi-location businesses, GBM can be configured per location β critical for franchises or agencies managing multiple clients.
Hi {{FirstName|there}}! Our pricing depends on the scope β most clients start between {{PriceRangeLow}} and {{PriceRangeHigh}}/month. For an accurate quote, answer 2 quick questions: {{QuoteFormLink}}
- Verify GBM is enabled on your Google Business Profile β check Google Business Profile Manager under "Messages"
- Set your welcome message (shown before the first automated reply) β it appears immediately when a user opens the chat
- Build automated responses for the 5 most common query types: hours, pricing, location, use-case fit, booking
- Connect GBM to your unified inbox tool so all GBM messages appear alongside SMS and Meta messages
- Enable read receipts in GBM β users see when their message has been read, reducing impatient follow-up messages
Unified Tagging and Cross-Channel Handoffs
A contact who reaches you across multiple channels β SMS one week, Instagram DM the next, Messenger after that β should have one CRM record with a complete cross-channel conversation history, not three separate records. The Channel-Agnostic Contact Graph builds this by using a deduplication key (typically email or phone number) to merge all channel interactions into a single contact timeline. Without this, your automation sends a "first-time contact" welcome message to someone who has been a customer for two years on a different channel. That breaks trust faster than any other automation error.
Tagging standards must be consistent across all platforms. Use the same tag values regardless of which channel generated the tag. A contact tagged "interested-in-service-A" from an SMS conversation should suppress the same Service A intro messages in an Instagram DM sequence. Build a tag taxonomy with 20β30 standard tags that cover the most important states (lead-type, funnel-stage, service-interest, objection-type, do-not-contact). Apply them consistently. Cross-channel handoffs β moving a contact from an automated Instagram DM conversation to a live SMS exchange, for example β should be triggered by a state or intent signal, logged as a transition event in the CRM, and accompanied by a context-passing note so the next touch has full history.
- Define your contact deduplication key β phone number is the most reliable for multi-platform identity resolution
- Audit your current CRM for contacts with multiple records β merge any duplicates before activating cross-channel logic
- Build a standard tag taxonomy (20β30 tags) and enforce it across all platforms and team members
- Build cross-channel handoff triggers: define which signals prompt a channel transition and what context is passed
- Test the full cross-channel journey: opt in via SMS, then DM on Instagram, confirm one CRM record shows both conversations
Promotional & Campaign Automation
Promotional messaging done right is the highest-ROI output of an SMS program. Done wrong, it is the fastest way to destroy it. The difference is specificity, timing, and segmentation. A flash sale message sent to your entire opted-in list will produce results and opt-outs. The same message sent only to contacts who have expressed interest in the specific product or service in the last 30 days will produce 3β5x better conversion with a fraction of the opt-out rate. Segment before you send, every single time.
Flash Sale Sequences: Urgency That Does Not Feel Fake
Manufactured urgency β "Offer expires in 1 hour!" sent to the same list four times in a week β has trained consumers to ignore urgency claims entirely. Real urgency is based on genuine constraints: limited inventory, a calendar deadline, a cohort that closes on a specific date. The 3-Message Flash Sequence works because it uses authentic urgency signals and matches the cadence to the urgency level. A 48-hour flash sale gets 3 messages over 48 hours. A 7-day promotion gets 3 messages spread across the window. The cadence mirrors the reality of the offer.
Message 1 (announcement, sent when the window opens): the full offer, clearly stated, with the deadline. Message 2 (midpoint): a reminder that includes social proof β how many people have already taken advantage, or a customer result. This message converts contacts who were interested but not ready on Message 1. Message 3 (final hours): the genuine close β the offer ends at a specific time, no extensions. Do not send Message 3 more than 12 hours before the actual deadline. Contacts who receive a "last chance" message 3 days early and then see the same offer the next day will not trust your next "last chance" message.
{{BrandName}}: {{FirstName}}, {{OfferDescription}} β {{DiscountAmount}} off through {{DeadlineDate}}. Limited to {{QuantityOrSlots}}. Claim yours: {{Link}} Reply STOP to opt out.
{{BrandName}}: {{FirstName}} β {{SpotsClaimedCount}} people grabbed the {{OfferName}} deal so far. {{RemainingCount}} spots left through {{DeadlineDate}}. Still yours: {{Link}}
{{BrandName}}: Last {{HoursLeft}} hours, {{FirstName}}. {{OfferName}} ends at {{DeadlineTime}} tonight β no extensions. {{Link}} Reply STOP to opt out.
{{NombreMarca}}: {{Nombre}}, {{DescripcionOferta}} β {{Descuento}} de descuento hasta el {{FechaLimite}}. Solo {{CantidadDisponible}} disponibles. Reclama el tuyo: {{Enlace}}
- For every flash sale: segment the list to only relevant contacts before sending Message 1
- Confirm the quantity/deadline in Message 1 is real β fabricated scarcity destroys long-term trust
- Set up suppression: contacts who convert after Message 1 must not receive Messages 2 and 3
- Set your Message 3 trigger for no sooner than 12 hours before the actual deadline
- Post-campaign: measure opt-out rate per message β if Message 3 produces >1% opt-outs, the urgency framing needs revision
Appointment Reminders and Review Request Flows
Appointment reminder and review request automations are the highest-ROI, lowest-risk messages you can send. Open rates are near 100% for appointment reminders because the contact is expecting them. Review requests sent within 2 hours of a completed appointment or service delivery convert at 25β40% β far above the industry average of 5β8% for email-based review requests sent the following day. These two automation types pay for your entire messaging platform in most local service businesses.
The Post-Service 4-Touch sequence runs as follows. Touch 1 (24 hours before appointment): reminder with confirmation option. Touch 2 (2 hours before): same-day reminder with location/link. Touch 3 (30β60 minutes after completion): satisfaction check β a single-question pulse. Touch 4 (sent only to contacts who replied positively to Touch 3): review request with a direct link to the review platform. The four-touch design ensures you only ask satisfied customers for reviews β unhappy customers get a different branch that routes to a service-recovery flow instead of the review request. This alone triples your positive review rate relative to sending a blanket review request to all post-service contacts.
{{BrandName}}: Reminder β your {{ServiceName}} is tomorrow at {{AppointmentTime}}. Reply CONFIRM to confirm or RESCHEDULE to change it. See you then!
{{BrandName}}: Hi {{FirstName}} β how did it go today? Reply GREAT, OK, or NOT GREAT and let us know. Takes 2 seconds and helps us a lot.
{{BrandName}}: {{FirstName}}, glad it went well! Would you mind leaving us a quick Google review? It takes 60 seconds and means a lot: {{ReviewLink}} Thank you!
{{NombreMarca}}: Recordatorio β tu {{NombreServicio}} es maΓ±ana a las {{HoraCita}}. Responde CONFIRMAR para confirmar o REPROGRAMAR para cambiar. Β‘Hasta maΓ±ana!
- Build the Post-Service 4-Touch as a single named automation with behavioral branches at Touch 3
- Define "positive" vs. "negative" responses to Touch 3 β route to review request vs. service recovery accordingly
- For the review request, use a direct link (Google Business Profile direct review link, not your homepage)
- Test appointment confirmation: trigger CONFIRM reply, confirm appointment status updates in CRM
- Measure your post-implementation review rate vs. pre-implementation β this is your primary ROI metric for this sequence
Cart Abandonment and Referral Automation
Cart abandonment SMS outperforms cart abandonment email by 5β7x in recovery rate when sent within 30 minutes of abandonment. The math is simple: SMS gets opened in 90 seconds; email waits in an inbox for hours. The Revenue Recovery Stack applies this principle to two underutilized automation types: cart recovery and referral activation. Together they represent revenue that exists in your existing contact base and requires no additional ad spend to capture.
Cart abandonment requires a pixel or webhook on your checkout that fires when a cart is abandoned. Within 30 minutes: a single SMS that references the specific cart contents (not a generic "you left something behind"). Within 2 hours if no action: a second message with a small incentive β free shipping or a percentage off. After 24 hours if still no action: final message acknowledging the cart has expired with a fresh link to repurchase. Three messages maximum. More than three and you are in harassment territory. For referral automation, the highest-converting trigger is post-first-successful-interaction β a customer who just had a great experience is most likely to refer. Build the referral ask into Touch 4 of your Post-Service sequence (Lesson 6.2) for customers who left positive reviews.
{{BrandName}}: Hey {{FirstName}} β you left {{CartItemName}} in your cart. Still want it? Complete your order here: {{CartLink}} Takes 60 seconds. Reply STOP to opt out.
{{BrandName}}: One more thing, {{FirstName}} β know anyone who'd benefit from {{ServiceName}}? Share {{ReferralLink}} and you both get {{ReferralIncentive}}. Thanks!
- Confirm your cart platform supports a webhook or pixel for abandonment events β Shopify, WooCommerce, and most major platforms do
- Set the first cart-recovery SMS to fire within 30 minutes β not 1 hour, not the next day
- Include specific product name and image (MMS) in cart recovery if your average order value justifies the MMS cost
- Build the referral link with unique tracking per contact so you can attribute referrals accurately
- Test cart recovery end-to-end: add to cart, abandon, wait 30 minutes, confirm SMS arrives with correct product reference
Event-Based Triggers and Seasonal Campaign Architecture
Event-based triggers fire based on external calendar events (holidays, industry dates, local events) or internal contact events (anniversary of purchase, account renewal date, birthday). Both types are underused in SMS programs. A birthday message sent within 1 day of a contact's birthday with a meaningful offer converts at 15β25% β the highest conversion rate of any non-purchase-intent message type. An anniversary-of-purchase message at the 12-month mark with a loyalty acknowledgment reinforces retention at the exact moment when churn probability peaks.
The Campaign Calendar Trigger Map plots all known trigger dates for the next 12 months and assigns message content, audience segment, and lead time for each. External events (Black Friday, local cultural holidays relevant to your LATAM contacts) need 3β4 weeks of preparation. Internal contact events (birthdays, anniversaries) fire automatically based on CRM date fields β build the automation once and it runs forever. For LATAM audiences: September 18 (Chilean Independence Day), DΓa de los Muertos (Mexico, November 1β2), and local summer season (JanuaryβFebruary in the Southern Hemisphere) are high-engagement windows that most US-based automation tools ignore. Building them in is a differentiation signal to your Chilean and LATAM clients.
{{BrandName}}: Happy Birthday, {{FirstName}}! Here's a little something from us: {{BirthdayOffer}}. Use it anytime this month: {{PromoCode}} Enjoy your day!
{{NombreMarca}}: Β‘Feliz cumpleaΓ±os, {{Nombre}}! Un regalo de nuestra parte: {{OfertaCumpleaΓ±os}}. Γsalo cuando quieras este mes: {{CodigoPromo}} Β‘Que lo disfrutes!
- Add date fields to your CRM: contact_birthday, first_purchase_date, contract_renewal_date
- Build automated triggers for birthday (fire 1 day after), first purchase anniversary (fire on day 365)
- Build your 12-month Campaign Calendar Trigger Map β plot all known dates now
- For LATAM contacts: add Chilean and regional holidays to the calendar and build segment-specific campaigns
- Schedule seasonal campaigns 4 weeks in advance β last-minute campaign builds produce errors and compliance shortcuts
CRM Integration, Reporting & Scaling
A messaging automation system that is not connected to your CRM is a marketing asset that cannot be measured or improved. Conversely, a CRM integration that is not well-designed will produce data corruption that undermines every decision made from it. Module 7 covers the technical and operational architecture for running a messaging program at scale β from the CRM data model through deliverability optimization to the contact-management practices that keep a 50,000-contact list performing like a 5,000-contact list.
Contact Sync and Conversation Logging
CRM-to-messaging-platform sync is typically built in one of three ways: native integration (the messaging platform has a built-in connector for your CRM), middleware (Zapier, Make, or a custom webhook), or API-to-API (direct integration written by a developer). Native integrations are fastest to deploy but least flexible. Middleware is the most common choice for mid-market programs. API-to-API is the most reliable at scale. The choice depends on your volume and technical resources β but any of the three is better than no sync.
The Bi-Directional Data Bridge has two flows. Flow A (CRM to messaging platform): pushes new contacts, tag updates, and pipeline stage changes to the messaging platform β triggering sequences and suppressing opted-out contacts. Flow B (messaging platform to CRM): pushes conversation events, keyword responses, and state changes back to the CRM β updating contact records in real time. Flow B is almost always the weaker of the two in out-of-the-box setups. Most platforms log inbound messages but do not automatically update the contact's CRM pipeline stage based on a keyword reply. Build Flow B with the same care as Flow A.
- Map your integration: draw the exact fields that flow from CRM to messaging platform and back
- Confirm opt-out sync is real-time (not batch): a STOP reply must suppress in CRM within 60 seconds
- Build Flow B event logging: every inbound keyword, every intent classification, every state change writes to CRM
- Test a full round-trip: change a CRM tag, confirm the messaging platform updates within 5 minutes. Then trigger a keyword reply, confirm the CRM record updates within 60 seconds.
- Set up an integration health check: a daily automated test that sends a known keyword, confirms the CRM update, and alerts the team if the check fails
Pipeline Triggers: Moving Deals Based on Message Behavior
Messaging behavior is intent data. A contact who replies YES to an offer message is more sales-ready than one who clicked a link without replying. A contact who books an appointment from a drip message has demonstrated a level of intent equivalent to filling out a high-quality inbound form. These behavioral signals should move contacts through your CRM pipeline automatically β not sit as conversation logs that your sales team manually reviews every morning.
The Message-to-Pipeline Signal Map defines which message events map to which pipeline transitions. Reply YES to any offer β move from "Lead" to "Interested." Book appointment from message β move to "Appointment Scheduled." Complete post-appointment Touch 3 with GREAT β move to "Happy Customer." Leave a Google review (tracked via review link click) β move to "Promoter." Opt out β move to "Do Not Contact." Each pipeline transition should also trigger a CRM task or alert for the relevant team member β not every transition requires human action, but humans should be aware of high-value transitions within minutes, not hours.
- Document your CRM pipeline stages and map each message event to a specific stage transition
- Build automation rules: message event X β pipeline stage Y (and optionally: β task Z for assigned rep)
- Test each pipeline trigger with a real contact journey through your test environment
- Set up a "deals moved by automation" report: shows how many pipeline transitions per week are automation-driven vs. manual
- Review the signal map quarterly β add new message events as your automation library grows
Deliverability Optimization: Staying Out of the Carrier Filter
SMS deliverability is controlled by two layers: your carrier/aggregator and the downstream carriers (AT&T, Verizon, T-Mobile, and their MVNOs). Both layers use automated content and behavior filters that block or divert messages suspected of spam or compliance violations. A healthy sender can hit 97β99% delivery rate. An unhealthy sender can drop to 50β60% delivery rate without any warning β messages simply do not arrive, and most SMS platforms report them as "delivered" up to the aggregator level, masking the true delivery failure. Deliverability problems cost more than their face value because you pay for every sent message even when it does not arrive.
The Deliverability Health Score tracks seven signals. Registration status: is your 10DLC brand and campaign registered with The Campaign Registry? Opt-out rate: is it below 0.5% per message? Link format: are you using your own tracked domain, not a shared URL shortener? Message variation: are you rotating templates rather than sending identical messages at volume? Sending pattern: are you sending during permitted hours with no sudden volume spikes? Content compliance: are you including opt-out language in every marketing message? Spam-word density: are you using carrier-flagged words ("FREE," "CASH," "GUARANTEED" in all-caps) excessively? All seven signals should be audited monthly. A score of 6β7 out of 7 is healthy. Below 5 requires immediate remediation before your next send.
- Verify 10DLC registration is complete for your brand and all active campaigns β check The Campaign Registry status
- Set up a dedicated sending domain for link tracking (e.g., links.yourdomain.com) β never use bit.ly or other shared shorteners
- Build at least 3 rotating variants of each high-volume message to avoid identical-message filtering
- Set a hard sending-hour restriction in your platform: no messages before 8am or after 9pm local time
- Run the 7-signal Deliverability Health Score audit monthly and document results
List Hygiene and Scaling to 50,000+ Contacts
At 1,000 contacts, list hygiene is a nice-to-have. At 10,000, it meaningfully affects performance. At 50,000+, it determines whether your program is profitable or not. A dirty list β invalid numbers, opted-out contacts improperly retained, contacts who have not engaged in 180+ days β drives up carrier filtering rates, inflates costs, and produces misleading performance data. The List Quality Pyramid divides your contact base into tiers: Tier 1 (Active, engaged in last 90 days β treat as primary audience), Tier 2 (Warm, engaged in last 90β180 days β treat with more targeted messaging), Tier 3 (Dormant, 180+ days no engagement β run Win-Back Sequence before any promotional sends), and Tier 4 (Suppressed β opted out or failed 3x delivery β never message, remove from billing if platform charges per contact).
Scaling to 50,000+ contacts does not require a more complex system β it requires the same system running with stricter discipline. Number validation (checking that phone numbers are active before sending) reduces your undeliverable rate and carrier filtering risk β most major aggregators offer real-time number lookup APIs for under $0.005 per lookup. Message throughput management becomes critical at scale: 10DLC long codes handle 1 message per second per number; if you have 50,000 contacts and need to send in a 4-hour window, you need at least 3β4 sending numbers or a shortcode. Build your number pool before you need it β provisioning new 10DLC numbers takes 5β7 business days after registration.
- Segment your list into the 4 tiers of the List Quality Pyramid β do this before any large send
- Set up number validation: run all new opt-ins through a lookup API before adding to sending lists
- Calculate your throughput requirement: (target list size Γ· desired send window in seconds) = required messages-per-second β confirm your number pool supports it
- Set a quarterly list hygiene date: suppress all Tier 4 contacts, run Win-Back on Tier 3
- Monitor cost-per-delivered-message (not cost-per-sent-message) β as list quality improves, this number should trend down
Putting the System Together
Seven modules, 31 lessons, and every template in this playbook point to the same operational principle: text-based communication is not a broadcast channel β it is a relationship infrastructure. The businesses that use it as a broadcast channel get short-term revenue spikes and long-term list decay. The businesses that use it as a relationship infrastructure build a contact base that responds, converts, and refers β and that asset compounds every month.
The implementation order matters. Start with Module 1 and do not skip it. Compliance is not optional and cannot be retrofitted after the fact. Build Module 2 next β keyword architecture is the foundation everything else runs on. Modules 3 and 4 (drip sequences and two-way conversation) can be built in parallel once the keyword layer is solid. Module 5 (multi-platform) adds channels one at a time β resist the urge to launch on all platforms simultaneously. Modules 6 and 7 are ongoing operations that you will refine quarterly.
The goal is not a system that runs messages. The goal is a system that runs conversations β at the scale of 50,000 contacts, with the feel of 1-to-1.
NetWebMedia runs this exact stack for every client. No phone calls. No email back-and-forth. Every communication, from initial contact through renewal, happens through the channels and automations described in this playbook. If you want to see the system in action β or you want us to build it inside your own CRM β the link below is the fastest path forward.
Ready to build this inside your own stack?
NetWebMedia deploys the full SMS and multi-platform messaging automation system for clients in the US and LATAM β from compliance architecture through CRM integration and 50k+ contact scaling. Request a free AI audit and we'll map exactly what your program needs in a written report within 48 hours.
Request Free AI Audit β