Sync templates from WhatsApp
Reconcile this project’s templates against WhatsApp. Three things happen per connected WhatsApp Business Account: templates that exist on Meta but not in Zavu are imported (or linked to an existing template with the same name), the approval status of the templates Zavu already knows about is refreshed from Meta, and their category is refreshed from Meta.
The category matters because it is what each message is billed under, and Meta reassigns it on its own — commonly UTILITY to MARKETING, on a template that is already approved and whose status therefore never moves. A template whose category changed but whose status did not is still counted in updated. This is the way to repair templates whose category drifted before you started listening for template.status_changed.
This is what to call when a template was created outside Zavu — in Meta Business Manager, or by another tool — or when a template.status_changed webhook was missed and a template is stuck in pending. Status changes normally arrive by webhook; this endpoint is the recovery path and the only path for a template Zavu never created.
Templates that Meta reports as rejected or disabled are not imported; they are counted in skipped. Existing local templates are matched first by Meta template ID, then by name.
By default every sender in the project with a WhatsApp Business Account is synced. Pass senderId to sync only that sender’s account. The call is synchronous — it waits for Meta and returns what changed — so it can take a few seconds per account. A failure on one account does not fail the request: it is reported in errors and the remaining accounts are still synced.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Sync only the WhatsApp Business Account attached to this sender. If omitted, every WhatsApp sender in the project is synced.
"sender_12345"
Response
Sync completed. Counts are totals across every account synced.
WhatsApp Business Accounts reconciled in this call.
Templates that existed on Meta and were created in Zavu by this call.
Existing Zavu templates that were matched to a Meta template by name and bound to its Meta ID.
Templates brought back in line with Meta — approval status, category, or both. A template whose status and category both moved is counted once.
Meta templates left alone: already linked to a Zavu template, or rejected/disabled on Meta.
Problems hit while syncing. Non-empty with a 200 means part of the sync did not complete — the rest still did.
