A template combines what Texter knows (routing rules, departments, send defaults) with what WhatsApp knows (provider_template: approval status and localized content). A template you just created lives in localizationDrafts until you submit it ; approved content appears under provider_template.localizations.
{
"_id" : "690868f7962e17ab3033f91b" ,
"name" : "inbox_marketing_95" ,
"title" : "Order ready notification" ,
"usage" : "inbox" ,
"chatStatus" : 1 ,
"created" : 1762158839563 ,
"updatedAt" : "2025-11-03T08:33:59.563Z" ,
"departments" : [],
"isDefault" : false ,
"channelInfo" : {
"name" : "whatsapp" ,
"accountId" : "972509876543"
},
"provider_template" : {
"name" : "inbox_marketing_95" ,
"category" : "MARKETING" ,
"localizations" : [
{
"language" : "he" ,
"status" : "APPROVED" ,
"components" : [
{
"type" : "BODY" ,
"text" : "היי {{1}} מעדכן שהזמנה מספר {{2}} מוכנה לאיסוף" ,
"example" : {
"body_text" : [
[
"רועי" ,
"15033"
]
]
}
},
{
"type" : "FOOTER" ,
"text" : "להסרה השב הסר"
}
]
}
],
"metadata" : {}
},
"defaults" : {
"he" : {
"body" : [
"רועי" ,
"15033"
]
}
},
"localizationDrafts" : {}
}
See all 53 lines
Top-level
Field Type Description _idstringUnique identifier of the template in Texter namestringInternal template name - this is the template ID used in API calls Example: bulk_marketing_272 titlestringHuman-readable title shown in Texter’s UI usagestringinbox (1-to-1) or bulk (broadcast)creatednumberWhen the template was created (epoch ms) updatedAtstringLast update (ISO date-time) departmentsstring[]Department IDs allowed to use this template. Can be empty isDefaultbooleanWhether this is the default template for the account. Only one template can be default providerstringChannel adapter that owns this template (relevant when multiple WhatsApp account types are connected) channelInfoobjectThe channel account this template belongs to: {name, accountId} (for WhatsApp, accountId is the business phone number)
Reply behavior
What happens after the recipient replies to this template.
Field Type Description chatStatusnumberStatus the chat moves to after the reply: 0 BOT, 1 PENDING, 2 ASSIGNED, 3 RESOLVED setBotNodestringBot node to start from, when chatStatus routes to the bot botstringSpecific bot to run, when chatStatus routes to the bot replyTextstringText automatically sent when the recipient replies responsibleAgentstringAgent (email) the chat is assigned to after the reply responsibleDepartmentstringDepartment ID the chat is assigned to after the reply attachedFileobjectFile ({name, url}) automatically sent after the reply, when configured
provider_template
Field Type Description provider_template.namestringTemplate name as registered with WhatsApp. Typically matches name provider_template.categorystringMARKETING or UTILITY. WhatsApp may change it on approvalprovider_template.localizationsobject[]All localizations known to WhatsApp - see the next section. Empty while only drafts exist provider_template.metadataobjectExtra provider metadata
Localizations
Each item of provider_template.localizations[] describes one language variant as seen by WhatsApp.
The WhatsApp provider also passes through raw fields that vary by account type: WhatsApp Cloud accounts add id, name, category, previous_category, parameter_format; other account types add createdAt, lastUpdated and qualityScore ({score, reasons} - e.g. GREEN, YELLOW, RED).
Field Type Description statusstringREQUESTED, SUBMIT_FAILED, PENDING, APPROVED, REJECTED, DELETION_PENDING, DELETED, SUBMITTEDrejectionReasonstringReason for rejection Example: NONE languagestringWhatsApp locale code (he, en, en_US, pt_BR… - 71 locales supported) componentsobject[]The HEADER / BODY / FOOTER / BUTTONS that make up this variant - see the next section metadataobjectChannel-specific metadata, when present
Components
Each item of a localization’s components[] array:
Field Type Description typestringHEADER, BODY, FOOTER, BUTTONStextstringText for BODY / FOOTER. BODY supports {{1}}-style variables; WhatsApp limits it to ~1024 chars (MARKETING) / ~550 chars (UTILITY) formatstringHEADER only: IMAGE, VIDEO, DOCUMENT, LOCATION example.header_handlestring[]Media headers: exactly one HTTP(S) example media URL (required by WhatsApp) example.body_textstring[][]Example values for body variables. Required when the body has variables; must match the variable count and order buttonsobject[]BUTTONS only: up to 3 QUICK_REPLY buttons or up to 2 call-to-action buttons (URL / PHONE_NUMBER / FLOW) - the groups cannot be mixed buttons[].textstringButton label. FLOW buttons: max 25 characters buttons[].urlstringURL buttons: target URL, optionally with a single {{1}} variable at the end buttons[].example.urlstringRequired when url has a variable: a resolved example starting with the exact same literal prefix buttons[].phone_numberstringPHONE_NUMBER buttons: E.164 number buttons[].flow_idstringFLOW buttons: published Flow ID from Meta buttons[].flow_actionstringFLOW buttons: navigate (default) or data_exchange buttons[].navigate_screenstringFLOW buttons: screen id to open first. Required with navigate. Case-sensitive
defaults
Per-language values prefilled when sending the template if the caller does not provide overrides. Keyed by language code.
Field Type Description defaults.{lang}.bodystring[]Default BODY variable values, in {{n}} order defaults.{lang}.headerobjectDefault header media: {type, url, filename?} (filename for documents) defaults.{lang}.buttonsobject[]Default button payloads ({type, payload}), e.g. a default dynamic-URL value
localizationDrafts
Map of language code to a draft localization - content created in Texter but not yet submitted to WhatsApp. Same component structure as approved localizations, without status.
Field Type Description localizationDrafts.{lang}.languagestringLanguage code of this draft localizationDrafts.{lang}.componentsobject[]Draft components (same shape as the Components section)
Localization status values
Status Meaning REQUESTEDSubmitted, waiting for WhatsApp SUBMIT_FAILEDSubmission to WhatsApp failed PENDINGUnder WhatsApp review APPROVEDApproved - can be sent REJECTEDRejected by WhatsApp (see rejectionReason) DELETION_PENDINGDeletion requested, not yet final DELETEDDeleted at WhatsApp SUBMITTEDAccepted for processing
Category values: MARKETING · UTILITY - WhatsApp may recategorize on approval.
More enums and the ID cheat sheet: Enums & Common Fields .