Get your WhatsApp templates into Omni Octo

Create templates in Meta's WhatsApp Manager or by asking Octo, pull them in with Sync from Meta, and read the status each one shows — including what to do when an approved template is missing.

Updated

Omni Octo does not write templates behind your back, and Meta approves every one of them. There are two ways to make a template and one way to bring it in:

  • Write it in Meta’s WhatsApp Manager, then sync it into Omni Octo.
  • Ask Octo to write it. Octo submits it to Meta for you, and it shows up in Omni Octo straight away, with the status Meta gave it on submission.

Either way, the template lives on /templates/whatsapp, and only an approved one can be sent. If you have not read when a WhatsApp message has to be a template, start there — it covers the categories and the parts of a template.

The templates page

/templates/whatsapp lists every template Omni Octo knows about, with its Display name, Name, Status, Category, Language, Channel and when it was Created. Under the heading:

Manage approved templates for outbound campaigns. Create new templates in Meta Manager.

The WhatsApp templates page for Tidewater Laundry Co., listing six templates with their display name, name, status (Approved, Pending, Rejected), category, language, WhatsApp number and when each was created. Sync from Meta and Last synced 5 minutes ago sit at the top right.
Every template on the number, with its status. Octo-created templates have readable display names; synced ones show their Meta name.

Meta Manager is a link to Meta’s WhatsApp Manager. There is no editor on this page: you cannot write a template here, and you cannot change a template’s text here either. To change the wording, edit it in WhatsApp Manager (Meta reviews it again) and sync.

The filters narrow the list by status, language, WhatsApp number and a search over the display name and name. A line under the heading — Showing templates for: — names the number or numbers you are looking at.

Click a row to open the template: its header, body with the variables highlighted, footer, buttons, and the dates it was created and approved. The panel has Use in Campaign, View in Meta Manager and Delete.

Way 1: write it in WhatsApp Manager

This is the way to use when a template needs anything beyond text — an image, video or document header, a copy-code button — or when it is an authentication template, whose wording Meta fixes. WhatsApp Manager has Meta’s own editor and preview; Omni Octo does not replace it.

Submit it there, and Meta reviews it. Omni Octo does not know it exists until you sync — see below.

Way 2: ask Octo to write it

Octo can build and submit a template from a sentence. For Tidewater Laundry Co.:

Create a utility template called pickup_reminder on our WhatsApp number:
"Hi {{customer_name}}, a reminder that your pickup is {{pickup_slot}}. Reply here if you need to change it."
Add a quick-reply button "Change time".

What Octo can put in a template:

PartWhat Octo can build
HeaderText only
BodyText, with named variables like {{customer_name}}
FooterText
ButtonsA link (the URL can end in one variable), a phone number, or quick replies

It cannot add an image, video or document header, or a copy-code button — use WhatsApp Manager for those.

A few things Octo does for you, and a few it refuses:

  • Named variables become numbers. Octo sends {{1}} and {{2}} to Meta and remembers that {{1}} was customer_name. When you ask Octo to send it, you can give values by name. Everywhere else — the inbox, the API, a campaign — it is a positional template: {{1}}, {{2}}.
  • The name must be lowercase letters, digits and underscores — pickup_reminder, not Pickup Reminder. Octo also gives it a readable display name for the templates page.
  • It refuses a body Meta would reject, before anything is sent to Meta: a body that starts with a variable, one with a variable at or right before the end, or two variables with only a space between them. Octo tells you which rule the body broke.
  • A phone-number button needs a real number. Meta rejects made-up ones.

When it has submitted the template, Octo tells you the status Meta gave it and links to the template on /templates/whatsapp. There is nothing to sync: a template Octo created is already on the page.

Octo can also list your templates, show one in full, sync a number, and delete a template, if you ask it to.

Sync from Meta

Sync from Meta is the button at the top right of /templates/whatsapp. For each WhatsApp number it syncs, it asks Meta for every template in the WhatsApp Business Account behind that number, and then:

  • adds the templates Omni Octo does not have yet,
  • refreshes the ones it has — status, category, content, and Meta’s rejection reason,
  • removes the ones that are no longer in Meta, for example because someone deleted them in WhatsApp Manager. Meta does not tell us about deletions, so a sync is the only way they disappear here.

When it finishes, a line reports what happened:

Synced from Meta — 2 new, 6 updated (8 total)

new counts templates that were not here before. updated counts only the ones where something actually changed — a template Meta still has exactly as it was is left alone and not counted. N removed is added when the sync deleted any. When nothing changed, the line reads Synced from Meta — no changes, followed by the total.

Under the button, Last synced says how long ago the templates were last pulled in — Last synced 5 minutes ago.

A template brought in by sync uses its Meta name as its display name, because Meta has no separate one.

Which numbers it syncs

Templates are kept per WhatsApp number, and the Channel filter decides which numbers the button syncs:

  • All channels — every active WhatsApp number in the workspace, one after another, with one result line adding them up. A number that is disabled, has an error, or is still being set up is skipped, because Meta cannot be asked about it.
  • One number picked in the filter — that number only, whatever its state.

If one number fails and the others work, you get the result line for the ones that worked, and a separate notice for each failure, naming the number: Couldn’t sync Tidewater main line: … followed by Meta’s error.

Last synced follows the same filter. On one number, it is that number’s last sync. On All channels, it is the oldest last sync among the active numbers — so a number that has fallen behind is not hidden by one that was just synced. If any number in view has never been synced, the line is not shown at all.

From inside a conversation

The template picker in /conversations has the same Sync from Meta button, beside the list and in its empty state. It syncs the number that conversation is on, and shows the same result line under the button. Use it when you have just finished a template in WhatsApp Manager and do not want to leave the thread.

What each status means

StatusWhat it meansCan you send it?
PendingMeta is still reviewing itNo
ApprovedMeta approved itYes
RejectedMeta refused itNo
PausedMeta has paused itNo
DisabledMeta has disabled itNo

Only Approved can be sent — from a conversation, through the API, by Octo, or in a campaign. A template in any other status does not appear in the conversation picker at all, and in its panel Use in Campaign is greyed out with the line:

Template must be approved by Meta before launching a campaign. Current status: Pending.

If Meta reports a state Omni Octo does not have a name for, the template shows as Pending until Meta moves it on.

When Meta rejects a template

Open the template. If Meta gave a reason, the panel shows it in a box headed Rejected by Meta, above the template’s content. Meta’s reason is a short code rather than a sentence — INCORRECT_CATEGORY, for example, when Meta thinks a promotion was submitted as utility. Omni Octo shows the code as Meta sent it; it does not interpret it.

A rejected marketing template's panel: a box headed Rejected by Meta showing Meta's reason INCORRECT_CATEGORY above the template body and footer, with Use in Campaign greyed out and the line that the template must be approved first.
Meta's reason, exactly as Meta sent it — here the code INCORRECT_CATEGORY — and Use in Campaign greyed out until the template is approved.

A rejected template cannot be fixed in Omni Octo. Edit it in WhatsApp Manager and resubmit it there, or ask Octo to create a corrected one under a new name.

Watching a template get approved

Leave /templates/whatsapp open and you do not need to refresh it. When Meta tells us it has approved, rejected, paused or disabled a template that Omni Octo already has, the row changes by itself and a notice appears: Template is now Approved.

That only works for a template Omni Octo already knows — one Octo created, or one you synced while it was still pending. A template you wrote in WhatsApp Manager and never synced is not on the page yet, so there is nothing to update: sync it.

Deleting a template

Delete in the template’s panel asks first:

Delete template “pickup_confirmation”? This removes it from Meta as well.

It is not only removed from Omni Octo — it is deleted in Meta itself. Deleting from WhatsApp Manager instead removes it in Meta, and it leaves Omni Octo at your next sync.

”I approved it in Meta and it’s not here”

Work down the list:

  1. Sync. Press Sync from Meta. A template written in WhatsApp Manager is never pulled in on its own.
  2. Check the number is active. On All channels, only active numbers are synced. If the template belongs to a number with an error or still being set up, pick that number in the Channel filter and sync it on its own — the error Meta returns will say what is wrong. In a conversation, the picker syncs that conversation’s number only.
  3. Check the filters. A status, language or search filter can hide it. With filters on and nothing matching, the page says No templates match your filters.
  4. Check the WhatsApp Business Account. Sync reads the account the number is connected through. A template created in a different business account in WhatsApp Manager will not come in.
  5. Read the error. If Meta refuses the sync, the error is shown where you pressed the button — on the page as a notice (on All channels, one per number that failed, with the number’s name), in the picker under the button.

Once it shows Approved, it is ready for any of the four ways to send.

Where to go next