/ docs / 05-outreach / sms-best-practices.md
sms-best-practices.md
  1  ---
  2  title: 'Sms Best Practices'
  3  category: 'outreach'
  4  last_verified: '2026-02-15'
  5  related_files:
  6    - 'src/utils/compliance.js'
  7    - 'src/outreach/sms.js'
  8    - 'src/inbound/sms.js'
  9  tags: ['sms', 'best', 'practices', 'testing', 'database', 'ai', 'llm', 'email']
 10  status: 'current'
 11  ---
 12  
 13  # SMS Best Practices (TCPA Compliance)
 14  
 15  This document outlines best practices for SMS outreach, focusing on TCPA (Telephone Consumer Protection Act) compliance and effective messaging strategies.
 16  
 17  ## Core TCPA Requirements
 18  
 19  ### Prior Consent
 20  
 21  TCPA requires **explicit prior written consent** before sending marketing SMS. For cold outreach:
 22  
 23  - Initial SMS must be informational, not promotional
 24  - Must provide opt-out instructions
 25  - Cannot include hard sales pitches without consent
 26  - Express written consent must be obtained before marketing messages
 27  
 28  **Best Practice**: Frame initial SMS as informational value-add rather than direct sales pitch.
 29  
 30  ### Opt-Out Instructions
 31  
 32  **Every SMS must include clear opt-out instructions:**
 33  
 34  - Standard: "Reply STOP to opt out"
 35  - Must honor opt-outs immediately (within seconds)
 36  - Store opt-outs permanently in database
 37  - Never contact opted-out numbers again
 38  - Process opt-outs automatically (STOP, UNSUBSCRIBE, CANCEL, END, QUIT)
 39  
 40  **Example**: "Website audit results for yourbusiness.com - 3 quick wins identified. Reply STOP to opt out."
 41  
 42  ### Business Hours
 43  
 44  **SMS must be sent during reasonable hours:**
 45  
 46  - 8am - 9pm in recipient's local timezone
 47  - Avoid weekends for initial cold outreach
 48  - Consider industry-specific work hours (e.g., restaurants: avoid lunch/dinner rush)
 49  - Respect time zones across different regions
 50  
 51  **Implementation**: Use timezone detection based on phone number area code or business location.
 52  
 53  ### Sender Identification
 54  
 55  **Clearly identify who is sending:**
 56  
 57  - Include business name in first message
 58  - Provide contact information
 59  - Be transparent about purpose
 60  - Use registered business phone number (not personal)
 61  
 62  **Example**: "Hi [Name], this is [Your Name] from [Business]. I analyzed your website..."
 63  
 64  ## Message Content Guidelines
 65  
 66  ### Length Constraints
 67  
 68  - **Aim for <160 characters** to avoid SMS segmentation
 69  - Segmented messages cost more and appear as multiple texts
 70  - Ultra-short, urgent, personal tone
 71  - Single clear call-to-action
 72  
 73  **Character Count Tips**:
 74  
 75  - "Reply STOP to opt out" = 23 characters
 76  - Leave ~135 chars for actual message
 77  - Use URL shorteners if links needed
 78  - Abbreviate where natural (but avoid txt spk)
 79  
 80  ### Tone and Style
 81  
 82  - **Ultra-short**: Every word must earn its place
 83  - **Urgent**: Create FOMO without false urgency
 84  - **Personal**: Use first name, reference their business
 85  - **Conversational**: Write like a text to a friend (professional friend)
 86  - **Action-oriented**: Clear next step
 87  
 88  **Good Example** (158 chars):
 89  
 90  ```
 91  Hi Sarah, found 3 quick wins on yoursite.com that could boost leads 30%. Want the free audit? Reply YES or STOP to opt out. - Mike
 92  ```
 93  
 94  **Bad Example** (too long, not personal):
 95  
 96  ```
 97  Hello, we are reaching out to inform you about our website conversion optimization services. We have analyzed your website and found several areas for improvement. Would you like to schedule a consultation to discuss how we can help? Reply STOP to unsubscribe.
 98  ```
 99  
100  ### Compliance Checklist
101  
102  Before sending any SMS, verify:
103  
104  - [ ] Explicit consent obtained (or informational-only content)
105  - [ ] Opt-out instructions included ("Reply STOP to opt out")
106  - [ ] Sent during business hours (8am-9pm local time)
107  - [ ] Sender clearly identified (business name + sender name)
108  - [ ] Message under 160 characters
109  - [ ] No misleading or deceptive content
110  - [ ] Opt-outs honored immediately
111  - [ ] Not sent to any numbers on opt-out list
112  - [ ] Using registered business phone number
113  
114  ## Spam Triggers to Avoid
115  
116  ### High-Risk Words/Phrases
117  
118  Avoid these spam trigger words in SMS:
119  
120  - **Financial**: "free money", "cash bonus", "$$$$", "credit"
121  - **Urgency**: "act now", "urgent", "limited time" (unless genuinely true)
122  - **Claims**: "guaranteed", "100%", "risk-free"
123  - **ALL CAPS**: Never use all caps (looks spammy and aggressive)
124  - **Excessive punctuation**: "!!!", "???", "..."
125  
126  ### Deceptive Practices
127  
128  Never use:
129  
130  - Fake urgency ("offer expires in 1 hour" when it doesn't)
131  - Misleading sender names
132  - Hidden costs or fees
133  - False scarcity
134  - Impersonation
135  
136  ## Response Handling
137  
138  ### Positive Responses
139  
140  When prospect replies YES/INTERESTED/MORE:
141  
142  - Respond quickly (within 1-2 hours max)
143  - Provide promised information
144  - Move to longer-form channel (email/call)
145  - Thank them for engaging
146  
147  ### Negative Responses
148  
149  When prospect replies NO/NOT INTERESTED:
150  
151  - Honor immediately
152  - Add to opt-out list
153  - Send polite acknowledgment: "No problem! Removed your number. Have a great day."
154  - Never contact again
155  
156  ### Opt-Out Processing
157  
158  Standard opt-out keywords (auto-processed):
159  
160  - STOP
161  - UNSUBSCRIBE
162  - CANCEL
163  - END
164  - QUIT
165  
166  **System Response**: "You've been unsubscribed. You won't receive any more messages from us."
167  
168  ## Rate Limiting
169  
170  ### Daily Limits
171  
172  - **Recommended**: Maximum 50 SMS per day per number
173  - **Conservative**: 20-30 SMS per day for new numbers
174  - **Scaling**: Increase gradually based on response rates
175  
176  ### Delivery Timing
177  
178  - Spread sends throughout business hours
179  - Don't batch-send 100 messages at once
180  - Respect carrier rate limits (varies by carrier)
181  - Monitor delivery rates and bounce rates
182  
183  ## Testing and Monitoring
184  
185  ### Pre-Launch Testing
186  
187  1. Test on your own phone first
188  2. Verify opt-out processing works
189  3. Check character count (use online SMS counter)
190  4. Test on multiple carriers (AT&T, Verizon, T-Mobile)
191  5. Verify timezone logic
192  6. Test business hours filtering
193  
194  ### Ongoing Monitoring
195  
196  Track these metrics:
197  
198  - **Delivery rate**: % of messages successfully delivered
199  - **Opt-out rate**: % of recipients who opt out (aim for <1%)
200  - **Response rate**: % of recipients who engage
201  - **Complaint rate**: Carrier spam complaints (aim for 0%)
202  - **Bounce rate**: Invalid/disconnected numbers
203  
204  **Red Flags**:
205  
206  - Opt-out rate >2%: Message too aggressive or poor targeting
207  - Delivery rate <95%: Number quality issues
208  - No responses after 50 sends: Message not resonating
209  
210  ## Legal Consequences of Non-Compliance
211  
212  TCPA violations are serious:
213  
214  - **$500-$1,500 per violation** (per message)
215  - Class-action lawsuit risk
216  - Carrier blocking (phone number blacklisted)
217  - FTC enforcement action
218  - Reputational damage
219  
220  **Example**: Sending 100 SMS without consent = $50,000-$150,000 potential liability
221  
222  ## Best Practices Summary
223  
224  1. ✅ **Always include opt-out**: "Reply STOP to opt out"
225  2. ✅ **Keep it short**: <160 characters
226  3. ✅ **Business hours only**: 8am-9pm local time
227  4. ✅ **Identify yourself**: Business name + sender name
228  5. ✅ **Provide value first**: Informational before promotional
229  6. ✅ **Honor opt-outs immediately**: Automated processing
230  7. ✅ **Be personal**: Use names, reference their business
231  8. ✅ **Single CTA**: One clear next step
232  9. ✅ **Test everything**: Character count, opt-outs, delivery
233  10. ✅ **Monitor metrics**: Track opt-outs, responses, complaints
234  
235  ## Example Templates
236  
237  ### Initial Outreach (Informational)
238  
239  **Template 1** (156 chars):
240  
241  ```
242  Hi {firstname}, quick heads up: {domain} homepage missing 3 key trust elements. Free 1-pg audit? Reply YES or STOP. -{sender_name}
243  ```
244  
245  **Template 2** (158 chars):
246  
247  ```
248  {firstname} - spotted {domain} on Google. Found simple fix that could boost leads 25%. Want details? Reply YES or STOP to opt out. -{sender_name}
249  ```
250  
251  **Template 3** (155 chars):
252  
253  ```
254  Hi {firstname}, {domain} loads slow on mobile (4.2s). Quick fix = 30% more leads. Free report? Reply YES or STOP to opt out. -{sender_name}
255  ```
256  
257  ### Follow-Up (After Interest)
258  
259  **Template** (142 chars):
260  
261  ```
262  Great! Sending audit to your email now. Check spam folder. Best time for 10-min call this week? Reply day/time or STOP. -{sender_name}
263  ```
264  
265  ### Value-Add Follow-Up
266  
267  **Template** (159 chars):
268  
269  ```
270  {firstname} - saw {competitor_domain} ranks higher for "{keyword}". Here's why: [shortlink]. Reply YES for your analysis or STOP. -{sender_name}
271  ```
272  
273  ## Resources
274  
275  - [TCPA Compliance Guide](https://www.fcc.gov/consumers/guides/stop-unwanted-robocalls-and-texts)
276  - [Twilio TCPA Best Practices](https://www.twilio.com/en-us/legal/tcpa)
277  - [FCC Text Messaging Rules](https://www.fcc.gov/document/fcc-clarifies-text-messaging-rules)
278  - [SMS Character Counter](https://twilio.com/sms-character-counter)
279  
280  ## Internal Implementation
281  
282  Our system implements these best practices through:
283  
284  1. **Compliance Module** (`src/utils/compliance.js`):
285     - `shouldBlockSMS()` - Checks opt-outs and business hours
286     - Automatic opt-out processing
287  
288  2. **SMS Outreach Module** (`src/outreach/sms.js`):
289     - E.164 phone number formatting
290     - Twilio integration with circuit breaker
291     - Error handling and retry logic
292  
293  3. **Inbound SMS Handler** (`src/inbound/sms.js`):
294     - Webhook processing for replies
295     - Automatic opt-out keyword detection (STOP, UNSUBSCRIBE, etc.)
296     - Conversation tracking in database
297  
298  4. **Database Schema**:
299     - `opt_outs` table tracks opted-out numbers
300     - `conversations` table logs all SMS interactions
301     - `outreaches` table stores pending/sent messages
302  
303  ## Updates and Maintenance
304  
305  This document should be reviewed:
306  
307  - Quarterly for TCPA regulation changes
308  - After any carrier policy updates
309  - When adding new SMS features
310  - Following any compliance incidents
311  
312  Last updated: 2026-02-06