Opt-Out Handling
STOP Keywords
When a contact replies with STOP (or similar), they’re automatically unsubscribed: Trackly detects opt-out intent through multiple layers: Exact keywords:| Keyword | Action |
|---|---|
| STOP, STOPALL, END, QUIT, CANCEL | Unsubscribe |
| UNSUBSCRIBE, UNSUB, REMOVE ME | Unsubscribe |
| OPT OUT, OPTOUT, BLOCK, WRONG | Unsubscribe |
st0p, sto p are caught.
Spam/abuse detection: Messages containing spam, scam, or junk patterns trigger classification (configurable as stop vs label-only).
False positives are handled: tapback/emoji reactions are ignored, and phrases like “stop by” are not treated as opt-outs.
How It Works
- Contact sends STOP to your number
- Provider detects opt-out keyword
- Trackly receives notification
- Contact marked as unsubscribed
- Future sends blocked automatically
Re-Subscription
Contacts can re-subscribe by:- Texting START to your number
- Signing up again through your forms
- Admin manually re-subscribing (with consent)
Unsubscribe Reasons
| Reason | Source |
|---|---|
message | Replied STOP |
manual | Admin action |
complaint | Spam complaint |
bad_response | Carrier response |
invalid_contact | Invalid number |
Message Requirements
Required Elements
Every message should include:- Clear sender identification
- Opt-out instructions
Account Settings
Configure account-wide compliance text:- Go to Account Settings > Messaging
- Set Prepend text (added to start of message)
- Set Append text (added to end of message)
+1 prefix). Non-US sending lists receive the raw message without auto-applied compliance text.
TCPA Quiet Hours
Trackly enforces TCPA quiet hours for US phone numbers:- Allowed hours: 8:00 AM - 9:00 PM in the contact’s local time
- Timezone fallback chain: Contact timezone → Account default timezone → Eastern Time
- Messages scheduled outside the window are delayed to the next valid send time (not dropped)
- Transactional messages (e.g., OTP codes) can be configured as exempt from TCPA restrictions
Consent Management
Types of Consent
| Type | Description | Use Case |
|---|---|---|
| Express | Explicit opt-in | Marketing messages |
| Implied | Existing relationship | Transactional |
Documenting Consent
For each contact, track:- When they opted in
- How they opted in (web form, API, etc.)
- What they consented to
signup_method and signup_date.
Regulations
TCPA (US)
The Telephone Consumer Protection Act requires:- Prior express consent for marketing
- Identification of sender
- Opt-out mechanism
TCPA quiet hours and automatic opt-out text (message prepend/append) are only enforced for US phone numbers (+1 prefix). For international numbers, these restrictions do not apply — add appropriate opt-out instructions for your target market directly in your message creatives.
Setting Up TCPA Compliance
Configure Quiet Hours
Set TCPA quiet hours (8 AM–9 PM) in your list settings. Trackly automatically checks each contact’s timezone before sending.
Enable Opt-Out Keywords
Verify STOP, STOPALL, UNSUBSCRIBE, QUIT, and CANCEL keywords are active. These are enabled by default on all lists.
Set Cooldown Periods
Configure minimum time between messages to the same contact. This prevents over-messaging and reduces opt-outs.
Record Consent
Use the
ip_address and url fields when creating contacts via API to record where and when consent was given.International Sending
When sending to non-US numbers:- TCPA quiet hours are not enforced — messages send at any time
- Message prepend/append text is not auto-applied — add opt-out instructions in your creatives
- STOP word auto-removal, spam complaint removal, and DLR error removal remain active globally as carrier best practice
CTIA Guidelines
Carrier guidelines recommend:- Clear opt-out in every message
- Immediate opt-out processing
- No messages to opted-out numbers
CAN-SPAM (Email-Adjacent)
While for email, principles apply:- Honest identification
- Clear opt-out
- Honor requests promptly
DLR Error Auto-Removal
Trackly automatically removes contacts from sending lists based on delivery report (DLR) error codes from SMS providers. This prevents repeated sends to unreachable numbers and protects your sender reputation.Immediate Removal
These error codes trigger immediate contact removal (unsubscribed with reasonbad_response):
| Error Code | Name | Description |
|---|---|---|
| 603 | REJECTED_ABSENT_SUBSCRIBER_PERMANENT | Number permanently unreachable |
| 351 | REJECTED_DESTINATION_NOT_REACHABLE | Destination not reachable |
Threshold Removal
These error codes trigger removal after 2 failures within 30 days:| Error Code | Name | Description |
|---|---|---|
| 32 | REJECTED_NETWORK_ERROR | Network-level rejection |
| 1281 | REJECTED_OPERATOR_ERROR | Operator-level rejection |
TCPA Quiet Hours
Trackly enforces TCPA quiet hours for US phone numbers only to ensure messages are sent during legal hours in the recipient’s local time.Rules
- Applies to: US sending list numbers only (+1 prefix)
- Allowed window: 8:00 AM – 9:00 PM in the contact’s local timezone
- Timezone source: Determined from carrier lookup at contact creation, or from click IP geolocation
- Transactional messages: Exempt from quiet hours
- No timezone data: If a contact’s timezone is unknown, messages are sent without quiet hour restrictions
- International numbers: Not subject to TCPA — messages send at any time
How It Works
- When a scheduled send is queued, the system checks if the sending list uses a US number
- For US numbers, it checks each contact’s timezone against the 8 AM – 9 PM window
- Messages outside the window are held and sent at the next valid window (8 AM in the contact’s local time)
- Non-US sending lists skip this check entirely
Toll-Free Verification
Submit Verification Request
In the dashboard, navigate to your toll-free number and submit a verification request with your business details and use case.
Confirm Opt-In Method
Describe how contacts consent to receive messages (web form, keyword opt-in, etc.).
Spam Auto-Removal
Contacts are automatically removed when SMS providers report spam-related delivery failures. This protects your account from carrier penalties.Infobip Spam Codes
| Error Name | Description |
|---|---|
REJECTED_SPAM | Message flagged as spam by carrier |
REJECTED_SPAM_CONTENT | Content identified as spam |
REJECTED_BLACKLISTED | Number is on a carrier blacklist |
CM Spam Codes
| Error Code | Description |
|---|---|
2005 | Spam filter triggered |
2006 | Content blocked by carrier |
Content Filtering
Trackly automatically blocks messages containing prohibited content at send time. Messages that match blocked patterns receive a status ofBLOCKED_CONTENT with the matched word and category.
Blocked Categories
Cryptocurrency Terms
Cryptocurrency Terms
Messages containing cryptocurrency-related terms are blocked. This includes direct terms and common variations.
| Blocked Term |
|---|
| bitcoin |
| btc |
| ethereum |
| eth |
| crypto |
| cryptocurrency |
| blockchain |
| wallet |
| coinbase |
| binance |
| kraken |
| dogecoin |
| doge |
| litecoin |
| ltc |
| ripple |
| xrp |
| solana |
| sol |
| cardano |
| ada |
| polkadot |
| dot |
| avalanche |
| avax |
| nft |
| defi |
| altcoin |
| stablecoin |
| usdt |
| usdc |
| tether |
Account Verification Phrases
Account Verification Phrases
Phishing-style phrases commonly used in fraud attempts are blocked.
| Blocked Phrase |
|---|
| your bank |
| verify your |
| confirm your |
| unlock your |
| verify account |
| confirm account |
| unlock account |
| suspended account |
| account suspended |
| account locked |
| verify identity |
| confirm identity |
| ssn |
| social security |
| update payment |
| verify payment |
| confirm payment |
Financial Institution Names — US
Financial Institution Names — US
Major US bank and financial institution names are blocked to prevent impersonation.
| Blocked Term |
|---|
| chase |
| wells fargo |
| bank of america |
| citibank |
| citi bank |
| us bank |
| usbank |
| pnc |
| truist |
| capital one |
| capitalone |
| td bank |
| tdbank |
| fifth third |
| citizens bank |
| keybank |
| huntington bank |
| regions bank |
| ally bank |
| discover bank |
| synchrony |
| american express |
| amex |
| goldman sachs |
| morgan stanley |
| charles schwab |
| fidelity |
| merrill lynch |
| bank account |
| bank accounts |
Financial Institution Names — International
Financial Institution Names — International
International bank names are also blocked.
| Blocked Term |
|---|
| hsbc |
| barclays |
| deutsche bank |
| ubs |
| credit suisse |
| bnp paribas |
| societe generale |
| santander |
| ing bank |
| royal bank |
| rbc |
| scotiabank |
| bmo |
| cibc |
| td canada |
| natwest |
| lloyds |
| standard chartered |
| commerzbank |
Leet-Speak Detection
The content filter detects common character substitutions used to evade filtering:| Character | Detected As |
|---|---|
1 | i, l |
0 | o |
3 | e |
4 | a |
5 | s |
@ | a |
$ | s |
7 | t |
b1tc0in, cr4pt0, and 3th3r3um are all caught.
When Filtering Applies
- Content filtering is enforced at send time, not at creative creation
- Blocked messages are not sent and receive
BLOCKED_CONTENTstatus - The API response includes the matched word and category for debugging
- Filtering applies to the final message text (after template substitution and prepend/append)
Spam Prevention
Content Guidelines
Avoid:- Misleading claims
- Excessive caps/punctuation
- Shortened URLs from unknown shorteners
- Adult content
Volume Guidelines
- Don’t send too frequently
- Respect quiet hours
- Use frequency capping
List Hygiene
- Remove invalid numbers
- Honor opt-outs immediately
- Don’t purchase lists
Handling Complaints
If a carrier flags you:- Review the flagged content
- Identify the issue
- Update messaging practices
- Contact carrier if needed
Audit Trail
Trackly maintains:- When contacts subscribed
- When/why they unsubscribed
- All messages sent
- Opt-out requests received
10DLC Registration Checklist
Register Your Brand
Submit your business details (legal name, EIN, website) for brand verification through the dashboard.
Create a Campaign
Register your messaging use case (marketing, notifications, etc.) with a description of your message content.
Wait for Approval
Brand verification typically takes 1-5 business days. Campaign approval may take an additional 1-3 days.
Best Practices
Always include opt-out
Always include opt-out
Every marketing message should have “Reply STOP to opt out” or similar.
Document consent
Document consent
Know where each contact came from and what they consented to.
Honor opt-outs immediately
Honor opt-outs immediately
Never send to unsubscribed contacts. The system blocks this automatically.
Use clear identification
Use clear identification
Recipients should know who’s messaging them immediately.
Next Steps
Phone Numbers
Number provisioning
Discord Alerts
Compliance monitoring