# Deliverability
URL: /docs/concepts/deliverability
LLM index: /llms.txt
Description: T-Mobile volume caps, Verizon batching delays, Surge's content policy layer, and how to monitor message delivery health.

# Deliverability

Deliverability is the percentage of your sent messages that actually reach the recipient's handset. This section covers the factors that affect it and what you can do about them.

## T-Mobile volume caps

T-Mobile enforces daily volume caps per campaign based on the volume tier you registered:

| Campaign volume | T-Mobile limit |
|---|---|
| `low` | 2,000 SMS segments per day |
| `high` | Up to 200,000 SMS segments per day (subject to TCR trust score) |

Messages that exceed the cap are queued or filtered, not delivered. If you need to send more than 2,000 segments per day to T-Mobile, register your campaign at `high` volume or request a volume increase after your `low` campaign is approved.

"SMS segments" are the carrier billing unit, not messages. A single message with 200 characters costs 2 segments (161–306 characters in GSM-7). See [SMS Segments & Encoding](./sms-segments).

## Verizon delivery delays

Verizon delivers messages in batches, which means recipients on Verizon sometimes see messages several minutes after the carrier accepted them — even when Surge receives a `delivered` status from Verizon. This is a carrier-side behavior, not a Surge bug.

If you're sending time-sensitive messages (appointment reminders 30 minutes ahead, flash sale notifications), build in extra lead time for Verizon subscribers.

## Surge's content policy layer

Surge runs a content-policy check on outbound messages before they reach the carrier. This catches links, patterns, and content that carriers commonly filter — before the message is sent and marked as failed.

If your message is blocked by the content policy, you'll see a `message_filtered` error in the `message.failed` webhook event.

Common reasons:
- **Unregistered link shorteners.** Third-party link shorteners (bit.ly, tinyurl.com, etc.) are frequently flagged by carrier spam filters. Use Surge's built-in link shortening or your own branded domain.
- **Content not matching your campaign.** If your campaign is registered for `customer_care` but your messages contain marketing language and promotional links, the content mismatch will be flagged.
- **Age-gated or lending content without the flag.** If your messages contain age-gated content or direct lending references but you didn't include `age_gated` or `direct_lending` in your campaign's `includes` array, those messages will be filtered.

## The `includes` flags

The `includes` array in your campaign registration tells carriers what content types your messages contain. Being accurate here directly affects deliverability:

| Flag | When required |
|---|---|
| `links` | Your messages contain any URLs |
| `phone_numbers` | Your messages contain phone numbers |
| `age_gated` | Your messages contain age-restricted content (alcohol, cannabis, etc.) |
| `direct_lending` | Your messages relate to lending or financial products (payday loans, mortgage offers, etc.) |

Missing a flag when the content is present is a deliverability problem, not just a registration problem. Carriers can filter messages that don't match the registered content profile. See [Canonical Schema Reference](../registration/schema-reference#includes) for the full list of valid `includes` values and their descriptions.

## Carrier fees

Carriers charge per-message fees that vary by destination network. These fees are passed through in your Surge billing and visible in your usage reports. Fees differ by message type (SMS vs MMS), recipient carrier, and sometimes message content.

## Monitoring deliverability

Watch the `message.delivered` and `message.failed` webhook events. A sustained spike in `message.failed` events with `message_filtered` as the reason is a signal to review your content against your campaign registration.

Blast-level delivery metrics (aggregate deliverability rate, opt-out rate per send) are available in the dashboard under **Blasts**.
