> For the complete documentation index, see [llms.txt](https://help.gleantap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.gleantap.com/getting-started/sms-compliance-and-deliverability.md).

# SMS Compliance & Deliverability

Sending SMS through Gleantap has three parts: **the right number**, **carrier registration**, and **compliant content**. Get all three right and your delivery rate stays high. Get one wrong and messages fail, numbers get flagged as spam, or carriers suspend sending outright.

This page covers what to know and what to do. For the initial setup of your number and opt-in messages, see Configure SMS first.

***

## SMS number types

Gleantap supports three number types. Which one is right for you depends on your business and how much volume you send.

| Number type                    | Format                                            | Best for                                                                                                         | Registration required                   |
| ------------------------------ | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| **10DLC (10-Digit Long Code)** | Standard US 10-digit number, e.g., (512) 555-0123 | Most single-location studios and gyms in the US. Cheapest per-message, decent throughput after registration      | **Yes** — brand + campaign registration |
| **Toll-free**                  | 1-800/833/844/855/866/877/888 number              | US businesses that want a memorable number, or that need faster provisioning while 10DLC registration is pending | **Yes** — toll-free verification        |
| **International long code**    | Local number in the country you're texting into   | Studios outside the US (UK, Netherlands, Australia, Denmark, UAE, Lebanon)                                       | Varies by country                       |

**Short codes** (5-6 digit numbers like `313131`) are not supported directly today. If you need a keyword-triggered opt-in campaign, you can achieve the same effect with a 10DLC number — see [Keyword-triggered opt-in](#keyword-triggered-opt-in) below.

***

## Registering your number

**US 10DLC and toll-free numbers must be registered with the carriers before they'll reliably deliver.** Unregistered US numbers get filtered aggressively — sometimes silently — as spam.

Registration is self-serve.

1. Click the **gear icon** at the top-right → **Configure Numbers**.
2. Find your number and click **Verify** next to it.
3. Fill in the registration form (business name, address, use-case description, sample messages).
4. Submit.

**Timeline:** toll-free verification typically approves in a few business days. 10DLC brand + campaign registration can take a week or two, and includes carrier fees Gleantap passes through. You can send during the review period, but throughput is throttled until approval lands.

If you need help filling out the form or aren't sure which fields matter, email <support@gleantap.com> and Customer Success can walk you through it.

### What carriers are looking for

The registration form asks you to describe how you'll use SMS. Carriers reject applications that are vague or that resemble spam patterns. Some things that help approval:

* **A specific use case.** "Class reminders and promotional offers for members of my yoga studio" is much better than "marketing".
* **Clear opt-in language.** Say exactly how people opt in (website form, in-club signup, keyword-triggered).
* **Sample messages that include your business name and STOP instructions.** e.g., `Sunrise Yoga: Your 9am Vinyasa class is confirmed for tomorrow. Reply STOP to opt out.`
* **A public-facing privacy policy** on your website that mentions SMS use.

### If registration fails

Carriers send back rejection reasons. Common ones and their fixes:

* **"Use case unclear"** — expand the description; give a real example of when a customer would get a message.
* **"Sample messages non-compliant"** — add your business name and STOP instructions to every sample.
* **"No privacy policy"** — add one to your website that explicitly mentions SMS.
* **"Business info doesn't match"** — the business name and address you submitted must match your legal registration exactly.

Resubmit through **Configure Numbers → Verify**. If you're stuck, contact support.

***

## TCPA and consent — the legal basics

In the US, the **Telephone Consumer Protection Act (TCPA)** governs commercial SMS. The short version:

* **You must have prior express consent** before texting anyone marketing content. Consent means an active opt-in — a checkbox that says "I agree to receive SMS from Sunrise Yoga," a keyword texted to your number, a signature on an intake form, etc.
* **Consent doesn't transfer.** If someone gave their number to your CRM to book a class, that's not automatic consent for marketing SMS.
* **Every message needs an easy way out.** STOP must always work. HELP must always return support info.
* **Quiet hours are law, not just etiquette.** Sending outside of 8am–9pm in the recipient's timezone risks TCPA violations. See [Quiet Hours](#quiet-hours-and-frequency-caps) below.

Gleantap enforces STOP/HELP handling automatically, and Quiet Hours by default block sends outside your configured window. But the burden of *having consent* in the first place is on you.

Outside the US, similar rules apply (CASL in Canada, GDPR in the EU, Spam Act 2003 + the 2025 amendments in Australia). Local nuances matter — if you're sending to non-US recipients, check your country's requirements before you scale up.

***

## Content restrictions — SHAFT-C

US carriers block or filter messages that contain content in six restricted categories, collectively called **SHAFT-C**:

* **S**ex
* **H**ate speech
* **A**lcohol (for unregistered senders; regulated alcohol senders need age-gating)
* **F**irearms
* **T**obacco / vaping
* **C**annabis / CBD

Even legitimate businesses hit SHAFT-C filters unintentionally — a wellness studio mentioning CBD, a bar's happy-hour promo, a gym referencing supplements. Some rules of thumb:

* **Don't mention these categories unless your registration explicitly says you will** and you've age-gated where required.
* **URL shorteners** (bit.ly, tinyurl) trigger extra filtering. Use your own domain or Gleantap's built-in link generator.
* **All-caps, excessive emojis, or "URGENT!!!"** style formatting looks like spam and can trip filters.
* **Public URL redirects to gated content** (age-gated pages, etc.) will get flagged if the underlying content is SHAFT-C.

If a carrier flags a specific campaign, you'll see failed delivery reports for a subset of your recipients. That's a signal to review the content.

***

## Opt-in flows

Gleantap supports several opt-in patterns. Configure them under **gear icon → Configure SMS** (see Configure SMS for the full setup UI). The high-level options are:

### Single opt-in

The contact consents once (form checkbox, in-person signup, or keyword) and starts receiving messages. Simple, fast to grow a list. Legal if consent language is clear.

### Double opt-in

The contact opts in once, then receives a confirmation SMS asking them to reply `YES` (or another opt-in keyword). Only after that reply are they added to your active list. Slower list growth, but a stronger legal record and better engagement rates.

### Keyword-triggered opt-in

Publish a keyword and ask people to text it to your number. Anyone who sends the keyword is opted in and gets an auto-response.

**Example:** print "Text BOWLING to (512) 555-0123 for 10% off your next class" on flyers. When someone texts `BOWLING`, they're opted in and receive your discount message.

To set this up:

1. Go to **Campaigns → Keyword Campaigns** and create a new campaign. See Keyword Campaign.
2. Set the keyword (e.g., `BOWLING`) and the auto-response with the discount details.
3. Publish. The keyword is now active on your SMS number.

Keyword matching is **case-insensitive** and matches the **whole message** — so texting `bowling`, `BOWLING`, or `Bowling` all trigger the campaign, but `I want BOWLING info` does not.

**Note on short codes:** true short codes (like `313131`) require carrier provisioning and aren't offered today. Use a 10DLC or toll-free number as the destination for keyword campaigns instead.

***

## Quiet Hours and frequency caps

**Quiet Hours** block automated SMS sends during time windows you configure. Set them under **gear icon → Configure SMS**. Default is 7:30pm–9am. Legal recommendation is at least 10pm–4am; better is 9pm–8am aligned with TCPA.

Messages queued during quiet hours are held and released when quiet hours end. Manual sends from Inbox are not affected — quiet hours apply to automated campaigns and flows.

**Frequency caps** limit how many SMS messages a single contact receives across all your campaigns:

* **Max SMS per day per contact** — hard cap on daily sends
* **Max SMS per week per contact** — hard cap on weekly sends

If a contact would exceed a cap, subsequent messages are queued rather than dropped. Useful if a contact is in multiple flows/campaigns firing on the same day.

***

## Troubleshooting

### "Why are all my SMS messages failing?"

Walk through in order:

1. **Is your number registered?** Unregistered 10DLC / toll-free numbers get filtered by carriers. Check **Configure Numbers** — if the status isn't "Verified", registration is the problem. See [Registering your number](#registering-your-number).
2. **Is the number suspended?** Twilio can suspend numbers that receive high spam complaint rates. Look for a suspension notice on the Configure Numbers page or in an email from Gleantap. If suspended, contact support.
3. **Is the message being sent during Quiet Hours?** Automated sends during quiet hours are queued, not sent. Check the campaign send time.
4. **Does the content trigger SHAFT-C?** Review the message for restricted categories. Even a passing mention (of alcohol, cannabis, etc.) can filter to zero delivery.
5. **Is the destination number valid and opted in?** Check the contact profile — a number flagged undeliverable stays suppressed. See Understanding Suppression.

### "My number shows up as 'Likely Spam' on recipients' phones"

This happens when a number accumulates spam complaints or when carriers detect unregistered/misregistered traffic.

Steps:

1. **Confirm registration is complete.** Unregistered numbers get flagged first. Configure Numbers → Verify.
2. **Audit recent content.** Review sent campaigns from the past 30 days. Are they compliant (opt-in language, STOP instructions, no SHAFT-C content)?
3. **Contact support.** For a number that's already flagged, you may need to submit a re-registration or switch to a different number. Support can help evaluate.
4. **Prevent recurrence** — review Best Practices for SMS.

### "Twilio suspended my number — how do I reconnect?"

Twilio suspensions require dispute or replacement:

1. Email <support@gleantap.com> with the suspended number and a summary of what happened.
2. If the suspension was for cause (spam complaints, non-compliant content), we'll usually recommend a new number and help you migrate.
3. If you disagree with the suspension, we can help file a review with Twilio.

While a number is suspended, no sends will complete. Any queued campaigns will fail until the number is restored or replaced.

### "I want to send SMS to Australia (or another country outside the US)"

International SMS is supported via country-specific numbers we provision on your behalf.

1. Email <support@gleantap.com> with the country you want to send to.
2. We'll provision a local long-code number and configure the necessary registration for that country.
3. Note: some countries have stricter rules than the US. Australia's 2025 SMS Sender ID Register requires additional registration; the EU's GDPR has its own consent framework; Canada's CASL has explicit-consent requirements.

Supported countries today: **UK, Netherlands, Australia, Denmark, UAE, Lebanon** (plus US and Canada). Other countries: reach out to support and we'll assess feasibility.

### "How do I set custom opt-in / opt-out keywords?"

Under **gear icon → Configure SMS**, add your custom keywords. Defaults:

* **Opt-in:** `START`, `JOIN`
* **Opt-out:** `STOP`, `UNSUBSCRIBE`

You can add custom keywords like `YES`, `BEGIN`, `END`, `CANCEL`. STOP and HELP are always honored regardless of your configuration — carriers require this. Matching is case-insensitive and matches the whole message.

***

## Related pages

* Configure SMS — initial SMS setup and opt-in wording
* Keyword Campaign — how to set up keyword-triggered campaigns
* Best Practices for SMS — general guidance for engagement
* Understanding Suppression — why a contact might be blocked from SMS sends


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.gleantap.com/getting-started/sms-compliance-and-deliverability.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
