You know spam when you read it. "CONGRATULATIONS!!! You've been SELECTED for an EXCLUSIVE offer!!!" Every element of that sentence signals: do not trust this, do not click this, and definitely opt out.
But the difference between spammy copy and good copy isn't always obvious when you're writing your own. It's easy to fall into patterns that feel normal internally but read as spam externally.
All caps screaming. Using caps for emphasis is fine — "TODAY ONLY" in an otherwise lowercase message draws the eye. Using all caps throughout the message reads like a Nigerian prince email.
Vague urgency. "Don't miss out!" on what? By when? Vague urgency is a spam tell because spam writers can't reveal the offer (because there is none). Real urgency is specific: "Offer ends at midnight."
Excessive exclamation points. One exclamation point is enthusiasm. Three is desperation. Zero is confidence. The best SMS copywriters use exclamation points the way good designers use red: sparingly, so it means something when it appears.
Generic greetings. "Hi there!" is the equivalent of a form letter. If you have the subscriber's name, use it. If you don't, open with your brand name or the offer directly.
Passive CTAs. "Click here to learn more" is the lowest-urgency CTA in the English language. "Grab yours now →" creates forward motion.
Write like a person, not a press release.
Bad: "We are excited to announce our upcoming summer sale event featuring significant discounts across all product categories."
Good: "Canon Co: Summer sale is live — up to 40% off. Shop now: [link]"
Be specific about the offer.
Bad: "Big savings this weekend!"
Good: "$25 off your next order over $100. Code: SAVE25 — expires Sunday."
Earn the click with value, not volume.
Every word should earn its place. Read your SMS out loud. If a word doesn't add meaning, cut it.
Match your brand voice.
A premium brand should sound like a premium brand even at 160 characters. A fun, youth-oriented brand should sound fun. Don't abandon your brand voice in SMS just because the format is constrained.
Respect the relationship.
You're texting someone's personal phone number. Write the message you'd want to receive from a brand you trust. If you wouldn't want your best customer to see it, don't send it.
The Direct Offer:
"[Brand]: [Offer] — [Expiry]. [CTA]: [link]"
"Canon Threads: All hoodies $39 — today only. Shop now: canon.co/hoodies"
The Curiosity Gap:
"[Brand]: [Teaser]. [CTA]: [link]"
"Canon Co: Something new just dropped. Be the first to see it: canon.co/new"
The Social Proof:
"[Brand]: [Product] just hit [milestone]. [CTA]: [link]"
"Canon Threads: Our merino tee has over 4,000 five-star reviews. See why: canon.co/tee"
The Personal Trigger:
"[Brand]: [Personalized hook]. [CTA]: [link]"
"Canon Co: You left something behind — your cart expires tonight: canon.co/cart"
After writing your SMS, do one edit pass asking a single question: "Does this sound like something a real person would send to a friend who asked to hear about deals?"
If the answer is yes, send it. If you're not sure, cut words until you're sure.
Maria Jensen
SMS Marketing Strategist at Textcanon
Helping businesses reach their audience through effective, compliant SMS marketing. Writing about strategy, deliverability, and growth.