Skip to main content
Compliance is critical in SMS marketing. Trackly SMS provides tools to manage opt-outs and stay within regulations.

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:
KeywordAction
STOP, STOPALL, END, QUIT, CANCELUnsubscribe
UNSUBSCRIBE, UNSUB, REMOVE MEUnsubscribe
OPT OUT, OPTOUT, BLOCK, WRONGUnsubscribe
Misspellings and variants: The system recognizes 50+ misspellings including STPO, STORP, STOD, STP, SOTP, and many more. Pattern-based detection: Phrases like “stop texting me”, “do not text”, “no more texts”, “why are you texting” are also detected. Obfuscated variants: Patterns like 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

  1. Contact sends STOP to your number
  2. Provider detects opt-out keyword
  3. Trackly receives notification
  4. Contact marked as unsubscribed
  5. 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

ReasonSource
messageReplied STOP
manualAdmin action
complaintSpam complaint
bad_responseCarrier response
invalid_contactInvalid number

Message Requirements

Required Elements

Every message should include:
  • Clear sender identification
  • Opt-out instructions
Example:
[Brand]: Your message here. Reply STOP to opt out.

Account Settings

Configure account-wide compliance text:
  1. Go to Account Settings > Messaging
  2. Set Prepend text (added to start of message)
  3. Set Append text (added to end of message)
Example:
Prepend: "[BrandName] "
Append: " Reply STOP to opt out"
Prepend and append text is only applied to US numbers (phone numbers with +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
TypeDescriptionUse Case
ExpressExplicit opt-inMarketing messages
ImpliedExisting relationshipTransactional
For each contact, track:
  • When they opted in
  • How they opted in (web form, API, etc.)
  • What they consented to
This is stored in 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

1

Configure Quiet Hours

Set TCPA quiet hours (8 AM–9 PM) in your list settings. Trackly automatically checks each contact’s timezone before sending.
2

Enable Opt-Out Keywords

Verify STOP, STOPALL, UNSUBSCRIBE, QUIT, and CANCEL keywords are active. These are enabled by default on all lists.
3

Set Cooldown Periods

Configure minimum time between messages to the same contact. This prevents over-messaging and reduces opt-outs.
4

Record Consent

Use the ip_address and url fields when creating contacts via API to record where and when consent was given.
5

Test Your Setup

Send a test message to your own number, reply STOP, and verify the unsubscribe is processed. Then verify future sends are blocked.

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
Research the regulations for your target countries and include appropriate opt-out language.

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 reason bad_response):
Error CodeNameDescription
603REJECTED_ABSENT_SUBSCRIBER_PERMANENTNumber permanently unreachable
351REJECTED_DESTINATION_NOT_REACHABLEDestination not reachable

Threshold Removal

These error codes trigger removal after 2 failures within 30 days:
Error CodeNameDescription
32REJECTED_NETWORK_ERRORNetwork-level rejection
1281REJECTED_OPERATOR_ERROROperator-level rejection
DLR auto-removal is enforced by default on all accounts. Contact support if you need to adjust thresholds for your use case.

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

  1. When a scheduled send is queued, the system checks if the sending list uses a US number
  2. For US numbers, it checks each contact’s timezone against the 8 AM – 9 PM window
  3. Messages outside the window are held and sent at the next valid window (8 AM in the contact’s local time)
  4. Non-US sending lists skip this check entirely
TCPA quiet hours are enforced by default for US numbers. International sending lists are not subject to TCPA restrictions.

Toll-Free Verification

1

Submit Verification Request

In the dashboard, navigate to your toll-free number and submit a verification request with your business details and use case.
2

Provide Sample Messages

Include 2-3 example messages that represent your typical sending content.
3

Confirm Opt-In Method

Describe how contacts consent to receive messages (web form, keyword opt-in, etc.).
4

Wait for Review

Toll-free verification typically takes 1-3 business days. You will receive an email notification when complete.

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 NameDescription
REJECTED_SPAMMessage flagged as spam by carrier
REJECTED_SPAM_CONTENTContent identified as spam
REJECTED_BLACKLISTEDNumber is on a carrier blacklist

CM Spam Codes

Error CodeDescription
2005Spam filter triggered
2006Content blocked by carrier
Spam auto-removal is permanent. Contacts removed for spam cannot be re-enrolled via API — they must re-subscribe through opt-in forms.

Content Filtering

Trackly automatically blocks messages containing prohibited content at send time. Messages that match blocked patterns receive a status of BLOCKED_CONTENT with the matched word and category.

Blocked Categories

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
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
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
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:
CharacterDetected As
1i, l
0o
3e
4a
5s
@a
$s
7t
For example, 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_CONTENT status
  • The API response includes the matched word and category for debugging
  • Filtering applies to the final message text (after template substitution and prepend/append)
Content filtering cannot be disabled. If you believe a message was incorrectly blocked, contact support with the blocked word and category.

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:
  1. Review the flagged content
  2. Identify the issue
  3. Update messaging practices
  4. Contact carrier if needed
Discord alerts notify you of spam complaints in real-time.

Audit Trail

Trackly maintains:
  • When contacts subscribed
  • When/why they unsubscribed
  • All messages sent
  • Opt-out requests received
This data helps demonstrate compliance.

10DLC Registration Checklist

1

Register Your Brand

Submit your business details (legal name, EIN, website) for brand verification through the dashboard.
2

Create a Campaign

Register your messaging use case (marketing, notifications, etc.) with a description of your message content.
3

Assign Numbers

Associate your 10DLC phone numbers with the registered campaign.
4

Wait for Approval

Brand verification typically takes 1-5 business days. Campaign approval may take an additional 1-3 days.
5

Monitor Throughput

After approval, your sending throughput is set based on your brand trust score. Higher scores unlock higher volumes.

Best Practices

Every marketing message should have “Reply STOP to opt out” or similar.
Never send to unsubscribed contacts. The system blocks this automatically.
Recipients should know who’s messaging them immediately.

Next Steps

Phone Numbers

Number provisioning

Discord Alerts

Compliance monitoring