Skip to main content

SMS Campaign Best Practices: Writing Compliant, Higher-Converting Text Messages

Text campaigns are billed and filtered differently from email, and small copy choices have an outsized effect on both cost and deliverability. This article covers the two elements every promotional message must include, how message segments and encoding affect your bill, how to pace a large send, and what to monitor once a campaign is live.

1. The two things every message must contain

These aren't style preferences. Carrier and aggregator rules require both on outbound A2P (application-to-person) traffic, and a missing element is the first thing a filter checks.

NOTE:

Messages that fail these checks return error 30007 (message filtered). Repeated violations escalate beyond a single blocked send — they put the entire messaging service at risk of suspension.

Requirement

What it looks like

Why it matters commercially

Opt-out instruction

“Reply STOP to unsubscribe” or “Txt STOP to unsub”

Absence is a direct filtering trigger and the single most common cause of blocked promotional traffic.

Business identification

Your brand name at the front of the message: “Budget Brakes: …”

Recipients who don’t recognize the sender report as spam rather than ignoring. Every complaint degrades deliverability for all future sends.

2. A before-and-after rewrite

The example below is a real test campaign, shown first as it was written, then rewritten to be compliant and shorter to bill.

Before — 4 segments

SCORE BIG ON BRAKES

25% OFF Brake Pads

FREE Brake Inspection

Good brakes keep you going. Great service keeps you coming back

Click Schedule your appointment today and score big. https://birdeye.cx/g2iig0

211 characters · UCS-2 encoding (emoji) · no sender ID · no opt-out · broken CTA

After — 2 segments

Budget Brakes: 25% off brake pads and a free brake inspection this month. Good brakes keep you going, great service keeps you coming back. Schedule your appointment: https://birdeye.cx/g2iig0 Txt STOP to unsub.

210 characters · GSM-7 encoding · branded · compliant · one clear action

3. What changed, and why

Issue

The cost

The fix

No opt-out language (blocker)

Filtered at the carrier (30007); at volume, a service-level suspension risk, not just a per-message one.

Append “Txt STOP to unsub.” to every promotional send.

No business identification (blocker)

Drives spam reports instead of passive ignores. Complaint rate is the metric carriers weigh most heavily.

Lead with the brand name in the first three words.

All-caps + stacked promo language

“SCORE BIG,” all-caps headlines, and stacked “FREE / % OFF” claims raise a message’s spam score.

You can still say 25% off and free inspection — state them once, in sentence case, inside a normal sentence. It’s the shouting and the stacking that score badly, not the offer.

Four emojis in five lines

Forces UCS-2 encoding: segment size drops from 160 to 70 characters, so this message is billed as 4 segments instead of 2. It also reads as a mass blast rather than a message from a local shop.

Remove emoji from bulk promotional sends. Use zero to one, and only where it genuinely carries meaning.

Broken CTA

“Click Schedule your appointment today” reads as a link that lost its anchor text. Confused recipients report messages.

One unambiguous action followed by the bare URL: “Schedule your appointment: [link]”.

The cost of the fix is negative: the compliant version is longer in characters but half the segments. On a 100,000-recipient campaign, that's 200,000 billed segments instead of 400,000 — before counting the messages that now actually get delivered.

4. Segments: the cost lever most senders miss

SMS is billed per segment, not per message. A single non-GSM character — any emoji, a curly quote, an em dash — switches the whole message to UCS-2 encoding and more than halves your character budget.

Encoding

Single message

Per segment when split

Triggered by

GSM-7 (standard)

160 characters

153 characters

Plain letters, digits, standard punctuation

UCS-2 (unicode)

70 characters

67 characters

Any emoji, curly quotes “”, em dash —, accented characters

NOTE:

Write in plain ASCII and paste the copy through a plain-text editor before loading it. Word processors silently convert straight quotes and hyphens into unicode equivalents that double your bill.

5. Pacing: why a large audience should be dripped

For campaigns at scale, spread the audience over several days rather than sending everything at once, unless the offer is genuinely time-bound. A single burst creates a sudden spike in promotional traffic. That doesn't automatically mean messages get blocked, but it materially raises deliverability risk if carriers observe elevated filtering, opt-outs, or complaints during the window.

What a gradual send buys you

  • Consistent sending behavior. Carriers respond better to predictable, established patterns than to sudden promotional spikes.

  • Lower concentration of filtering signals. Opt-outs, complaints, and filtering are distributed over time rather than compressed into one burst.

  • The ability to react early. If filtering or opt-outs spike after batch one, you can adjust the copy or pause the remainder, instead of discovering the problem after all 100,000 messages have already gone out.

  • Durable sender reputation. Healthy traffic patterns protect deliverability on every future campaign, not just this one.

Suggested schedule for a ~100,000-recipient campaign

Day

Share

Volume

Purpose and decision point

Day 1

15%

~15,000

Pilot batch. Hold 24 hours. Review delivery rate, 30007 filtering, and opt-out rate before releasing more.

Day 2

25%

~25,000

Proceed if Day 1 metrics are clean. If not, revise copy before continuing.

Day 3

30%

~30,000

Continue monitoring; cut over to a revised template if any metric is drifting.

Day 4

30%

~30,000

Final batch. Capture results as the baseline for the next campaign.

NOTE:

This is a risk-management recommendation, not a hard carrier limit. Higher single-day volumes are well supported once a sender and campaign have an established reputation. Early in a program, the 3–4 day spread is the cheapest insurance available.

6. Monitor these three numbers on every batch

>95%

Delivery rate

Investigate below 90%

<1%

Opt-out rate

Pause and revise above 2%

~0

Error 30007 responses

Any cluster means revise copy now

These are directional guardrails for promotional A2P traffic; your own first two campaigns become the more useful baseline.

NOTE:

If a batch breaches any of the three thresholds above, pause the remaining sends rather than pushing through. The reputation damage outlasts the campaign.

7. Pre-send checklist

  • Brand name appears in the first line

  • Opt-out language present (“Txt STOP to unsub”)

  • Zero emoji; message confirmed as GSM-7

  • Segment count verified before launch

  • No all-caps words; offer stated once

  • Exactly one call to action, one link

  • Link tested on a mobile device

  • Audience list scrubbed of prior opt-outs

  • Send window 8am–9pm recipient local time

  • Audience split into day-by-day batches

  • Test send to internal numbers first

  • Owner assigned to review Day 1 metrics

NOTE:

Send-time rules vary by state — several are stricter than the federal 8am–9pm window. Guidance reflects current CTIA, carrier, and A2P 10DLC practice for US promotional messaging; requirements evolve, and your Birdeye team will flag material changes. Questions on this campaign or your next one: contact your Birdeye account team.

Did this answer your question?