Personalization

How to Write WhatsApp Marketing Messages: Length, Tone, and CTAs

How to write WhatsApp marketing messages people answer: the anatomy, real length guidance, tone rules, four before-and-after rewrites, and the opt-out line.

Jithu Jayaraj · Published August 30, 2026

The message is the campaign. Everything else - the list, the timing, the tooling - only decides whether your writing gets its chance. This guide is the writing: an anatomy that works, honest length guidance, the tone WhatsApp rewards, four rewrites of real-world bad messages, and the opt-out line that belongs in all of them.

The anatomy of a message that works

Messages that earn replies almost always carry the same four parts, in the same order:

  1. The hook - why you are writing. The offer, the news, the reminder. It should survive as a notification preview on a locked phone, because that is where most of your audience first meets it.
  2. The one detail that makes it matter. The deadline, the discount, the scarcity - a single line, not a paragraph of justification.
  3. The action. One verb, one target: reply, tap, visit, show this message. Never two actions; a message with three links gets zero taps on the one you wanted.
  4. The exit. A short opt-out line. It costs characters and buys the benefit of the doubt.

Wrap the middle two in spintax and a {name} at the front, and the same skeleton produces a unique, personal message per recipient.

The first line deserves special care, because of where it is read: WhatsApp notifications truncate, so the opening words are the whole message for everyone who does not open the chat. Lead with the offer or the news - never with “Dear customer” or a warm-up paragraph, which spend the preview on nothing. Write the first line as if it were the only line, and you will never be wrong.

Length: shorter than you think

Under 300 characters covers nearly every campaign. The reasons are mechanical, not stylistic: WhatsApp previews truncate, so the back half of a long message is invisible until someone commits; long texts read as broadcasts before they are read as words; and a message a stranger would not finish is a message your customer will not either.

The discipline that gets you there: write the message, delete every sentence that does not carry the hook, the detail, or the action, and move whatever remains of the detail into an attachment. If the survivors still run past 300 characters, you have two campaigns, not one.

There is even a delivery-side bonus to brevity: Automate shows each recipient a typing indicator scaled to the message’s length before it lands. A tight message reads as a person typing a tight message. Nobody types a 900-character paragraph with a thumbs-up at the end of it.

Tone: how businesses talk on WhatsApp

WhatsApp is where your customers talk to their families. The register that works is the shopkeeper’s, not the brand deck’s:

  • First names, both ways. Theirs in the greeting ({name} handles it), yours in the sign-off. “This is Meera from Blossoms” beats “Dear Customer” and beats nothing at all.
  • Plain words. “Flat 20% off this weekend” beats “Exclusive curated savings experience, limited period only”. Every word a reader must translate costs a reader.
  • Permission for brevity. Fragments are fine. “Doors open 9 AM Saturday.” is correct WhatsApp grammar.
  • Emoji as punctuation, not decoration. One is an anchor; five is noise. And an emoji never fixes stiff wording - it just decorates it.
  • Honest urgency. “Until Sunday” works because Sundays arrive. Fake deadlines work once, and the second message from a number that lied is already unread.

Four rewrites, before and after

1. The brand announcement

Before: “Dear Valued Customer, we are thrilled to unveil our all-new collection, thoughtfully curated to elevate your everyday style. Visit our store to explore the full range today!”

After: “{Hi|Hey} {name}! The new {autumn|festive} collection just landed - {Come see it this weekend|We are open till 9 all weekend}. [catalog PDF]”

What changed: the customer became a person, the pride became news, and the detail moved into the attachment.

2. The triple-link sale

Before: “FLASH SALE!!! Up to 70% off sitewide + free shipping + extra 10% with code SAVE10. Shop now: bit.ly/xx | Also check our new arrivals: bit.ly/yy | Unsubscribe: bit.ly/zz”

After: “{Hi|Hello} {name}, flash sale this weekend: {flat 30% off everything|30% off sitewide}. Tap to shop: {link} (Reply STOP to opt out.)”

What changed: one offer, one action, one exit. The code went away because nobody types codes into a chat.

3. The guilt trip win-back

Before: “We miss you! It’s been so long since your last visit. Come back and enjoy 15% off. Don’t miss out again!”

After: “{Hi|Hello} {name}, {it has been a while|we noticed it has been a bit}. Here is 15% off your next order, good for 30 days: {code}. {We would love to see you again.|Come say hi.}”

What changed: no scolding, a real deadline, and the goodbye that makes the welcome believable. Win-backs need a reason to exist - the campaign examples cover the pattern.

4. The wall-of-text reminder

Before: “This is a friendly reminder that your appointment with us is scheduled for tomorrow as per our records. Please arrive 10 minutes early and bring your ID. If you need to reschedule, please call our front desk during working hours.”

After: “{Hi|Hello} {name}, your appointment is {tomorrow at|on} {time}. Reply 1 to confirm, 2 to reschedule.”

What changed: the instructions the customer actually needs stayed; the policy manual left. A reply-key CTA even sorts confirmations from reschedules before anyone calls anyone.

Attachments: let the brochure carry the detail

The most common reason messages run long is that they are doing a brochure’s job. Specs, menus, schedules, price lists - all of it belongs in the attachment, delivered natively in the chat:

  • PDFs arrive as documents (catalogs, rate cards, menus), up to 2 MB.
  • Images arrive as photos, re-encoded per recipient so every delivery is slightly unique - which is a deliverability feature, not a quirk.
  • Per-recipient files come from a media column in your CSV, so a customer’s own invoice or brochure variant can ride their own row.

The rule that ties text and attachment together: the message sells the opening; the attachment answers the questions. “The full menu is attached” is a complete sentence - and a complete campaign.

Personalization past the first name

{name} is the floor, and it is table stakes - messages that stop there are one upgrade behind your competitors. The stack above it:

  • Context variables. Your CSV columns become variables, so the message can reference the city, the plan, the course, or the product the contact actually has.
  • Per-row copy. A message column in the CSV overrides the campaign default, which is how a VIP and a standard customer get genuinely different offers in one send.
  • Spintax texture. Even within one segment, spintax varies the phrasing so no two messages read as copies.

The personalization pillar is the complete system behind these layers, with the data each one needs.

Segment for meaning first, personalize for recognition second, spin for texture third - in that order, because a relevant message with light personalization outperforms a deeply personalized irrelevant one.

The opt-out line

Every marketing message ends with the exit, and the standard form is three words: “(Reply STOP to opt out.)” That is enough, because the handling is automatic: a reply like STOP, unsubscribe, or remove me suppresses the contact across every connected number and cancels anything queued for them, on the spot.

The exit line is not compliance theater - it is the reason your messages get the benefit of the doubt. It is also the shape data protection law converged on: the GDPR requires that withdrawing consent be as easy as giving it, and a STOP reply is exactly that. A reader who knows leaving is one word away reads the offer as an offer, not a trap. Easy exits keep audiences; hard exits convert them into block reports, and blocks are the signal no number survives.

Write tight, spin the wording, send at a civilized hour from infrastructure that is yours - that is the whole craft. The playbook puts this chapter back in the full system whenever you want the wider view.

Frequently asked questions

How long should a WhatsApp marketing message be?

Under about 300 characters covers nearly every campaign - the offer, one detail that makes it matter, one action. Longer messages still deliver, but WhatsApp truncates previews, long texts read as broadcasts, and every extra line competes with your call to action. If the content genuinely needs more, that is what PDF attachments and links are for.

Should I use emojis in marketing messages?

Sparingly, and only where your brand voice naturally has them - one emoji as a visual anchor beats five as decoration. Emojis do not make a message casual; wording does. A stiff message with three fireworks is still a stiff message.

Where should the call to action go?

Last line, or as close to it as possible. Recipients read the first line to decide whether to expand and the last line to decide what to do - burying the action in the middle is how messages get read and abandoned. One action per message, always: a message with three links gets zero taps on the one you wanted.

Do I need to include opt-out wording in every message?

Yes - a short exit line belongs in every marketing message, and it doubles as a trust signal. Automate recognizes replies like stop, unsubscribe, or remove me automatically: the contact is suppressed across all your numbers and everything queued for them is cancelled on the spot. Saying 'reply STOP to opt out' costs a few characters and buys the benefit of the doubt.

Can different contacts get different messages in one campaign?

Yes, two ways. Spintax varies the wording per recipient automatically, and a CSV message column overrides the default text per contact entirely - so a VIP row and a standard row can carry different copy in the same send. Segment first for meaning, spintax second for texture.

How do I write messages for a bilingual audience?

Split the campaign by language segment rather than mixing languages in one template - one CSV per language, each with its own campaign, sent from the same number. Spintax works within any language and script, so each segment's template can vary its own wording naturally. Mixing two languages inside one message reads as noise to both audiences.

Written by Jithu Jayaraj

Founder of Automate, built and run by Jeedesigns LLC

Jithu builds Automate and sends campaigns on the same kind of dedicated infrastructure every customer gets. The guides on this site come from that daily work: what we ship, what we watch deliver, and what we refuse

More about who builds Automate

Order today - your dedicated instance is live within 2 days.

Every Automate account is a custom build. We provision your dedicated VPS, deploy your isolated instance, and send your login credentials within 2 days of purchase.

Custom server deployment · Credentials in 2 days · 14-day refund window · Flat pricing, no per-message fees