Skip to content

We rebuilt the template editor

Live preview on WhatsApp, SMS and MMS, WhatsApp parts you edit in place, live checks, and copy-ready code for your app.

Emily Z

The template editor inserting an order_id variable into a message, beside a live WhatsApp preview of the order update

Four things are new:

  • A live preview of the message on WhatsApp, SMS and MMS messages
  • WhatsApp headers, footers and buttons that you edit inside the message
  • Live checks that flag what Meta or a carrier would reject
  • Copy-ready code to create and send the template from your app

If you’re new to messaging: A template is a message you define once with variables, and send many times. Before you can send one, WhatsApp (run by Meta) reviews and approves it, and SMS carriers filter what you send for things like trigger words or a missing opt-out line.

Most of what’s new in this editor is about getting through those reviews the first time.

See it on every channel

A phone preview renders the message on each channel it goes out on, and updates as you type.

  • WhatsApp: The full bubble - header media or text, the formatted body, the footer and the buttons
  • SMS: The plain text as it will be split, with the part count underneath
  • MMS: The subject and attachments, if you added any.
The phone preview updating as an order ID variable is added to the message

Each preview renders what that channel will actually send, so the tabs will often look different. A message that reads well with bold and a header on WhatsApp may need a second look as three plain SMS parts.

Edit WhatsApp headers, footers and buttons in place

Headers, footers and buttons now sit inside the WhatsApp message, in the order the recipient sees them.

Adding a Contact Support button inside the WhatsApp message
  • Click the header slot to add text, an image, a video, a GIF or a document
  • Click below the body to add a footer
  • Add quick-reply, URL, phone or copy-code buttons at the bottom
  • Authentication templates (one-time passcodes) get an OTP button

How you write the text hasn’t changed. One shared text goes out on every channel by default - WhatsApp adds the header, footer and buttons, and SMS and MMS get the plain text. You can override the text for any channel by switching to its tab and rewording it there. Formatting like bold, lists and quotes exists only on the WhatsApp tab, since that’s the only channel that renders it.

MMS is optional. Use its tab only when you want a subject line, attachments or different wording. Otherwise MMS sends the shared text, or the SMS text if you wrote one.

Variables are named. A variable you call order_id is order_id in the editor, in the preview and in the send call, and you can reuse it anywhere in the template.

Live message checks

Open the Checks tab in the side panel and the editor reviews your message in real time. The checks depend on which tab you are on, because WhatsApp and SMS are reviewed by different parties for different things.

WhatsApp templates are reviewed by Meta. On the WhatsApp tab and the shared text, the checks mirror that review: category, language and content rules. A common rejection is a template submitted as UTILITY - a transactional message like an order update - that reads as MARKETING. The Checks tab flags it and offers to switch the category.

Meta also rejects templates with too many variables for the amount of text around them. The editor shows the words-per-variable number under the text, counted the way Meta counts it, so you see the number Meta will see.

SMS is filtered by carriers. On the SMS and MMS tabs, the checks mirror what carriers look for: an opt-out line such as “Reply STOP to unsubscribe” or trigger words that can get your messages blocked.

Flagged words are underlined in the text. Fixes with a clear answer, such as adding an opt-out line, are offered in the panel.

Two things to know:

  • Checks run only while the Checks tab is open, and the carrier checks run on the SMS and MMS tabs rather than the shared text. Open the SMS tab once before you submit a template that goes out over SMS.
  • The checks are advice, not a gate. You can still save and submit a template the checks dislike. Meta or the carrier gets the final say.

See what each SMS part costs you

Long SMS messages are split into parts, and you pay per part. How many characters fit in a part depends on the characters you use:

  • Plain letters, digits and basic punctuation: 160 per part
  • Even one character outside that set — a curly apostrophe, an em dash, an emoji: 70 per part

The message looks the same on screen, but it costs more than twice as much to send.

Under the SMS text, the editor now shows the encoding and the part count, and underlines each character that shrank the parts. Click one and it’s swapped for a plain equivalent: ’ becomes ' and — becomes -.

This is separate from the Checks tab. It’s always on, and the fix is on the character itself.

Ask AI

AI can draft a message based on your description. Select any text and it can rewrite it, change its tone, or explain what it does and why a check flagged it. Note that this is a writing aid, not a reviewer.

Take the template into your code

The side panel has two tabs for developers.

API tab: the JSON that creates the template you’re looking at, as a body for POST /v3/templates. If you prefer to keep templates in code: design one visually, copy the JSON, and check it in. Any media you add in the editor is stored on s.dm, Sent’s media host, and submitted to Meta as the review sample. If you create templates from JSON, the media sample has to be an s.dm link.

Code examples tab: appears once the template is saved. It holds a POST /v3/messages call that sends this template with its variables filled in, in cURL, TypeScript, Python, C# and Java. The variable names are the ones you see in the editor, including the variable behind a dynamic URL button.

Shell
curl -X POST https://api.sent.dm/v3/messages \
  -H "Authorization: Bearer $SENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": ["+14155551234"],
    "channel": ["whatsapp", "sms"],
    "template": {
      "name": "order_confirmation",
      "parameters": { "name": "Maja", "order_id": "84213" }
    }
  }'

Notice that the call lists channels but doesn’t choose one. The template already holds the WhatsApp version and the SMS version, so your code sends the template and Sent picks the channel for each recipient.

  • Lands on WhatsApp: goes out with the header, footer and buttons
  • Lands on SMS: goes out as the plain text you saw in the SMS preview

Either way, you get back a message ID to track it.

Review, and what’s next

Review works the same as before:

  • If your account has WhatsApp connected, templates go to Meta; otherwise Sent reviews them
  • MMS is reviewed alongside the other channels, and text that is rejected or still pending on SMS never goes out over MMS
  • Templates are owned by the organization, so editing one updates the copy on every sender profile that uses it

The new editor is live on every account. Open a template you already use, switch to the SMS tab, and see what the checks and the part count say about it. Or start a new template and watch it take shape on each channel as you write.

Share

Published on

Read More

  • An install bar reading cargo add sent over the Rust crab drawn in orange plus signs

    Sent has a Rust SDK

    The sent crate brings all 82 operations of API v3 to typed async Rust, with pagination, retries and idempotency built in.

    Emily Z

  • Marathon runners crossing the Brooklyn Bridge, with a text reading: Alex just reached halfway! 13.1 miles down.

    We built an NYC marathon tracker that texts you

    Runners share a link, friends pick the milestones they want, and everyone gets a text as the runner reaches them. Here’s how we built it in an afternoon with the Sent API.

    Josh W and Emily Z

  • A Claude chat box with the Sent connector being switched on

    Sent is now an official Claude connector

    Send SMS, WhatsApp, and RCS from Claude, check delivery, look up a number, and see what you need before you text a new country, all through the same gates as the API.

    Emily Z

One API. Every channel.

Get Started