Templates are pre-approved message formats required for initiating WhatsApp conversations outside the 24-hour window.
Create Template
result = client.templates.create(
name="order_confirmation",
language="en",
body="Hi {{1}}, your order #{{2}} is confirmed!",
whatsapp_category="UTILITY",
variables=["customer_name", "order_id"]
)
print(result.id) # tpl_xxx
print(result.status) # draft, pending, approved, rejected
List Templates
result = client.templates.list()
for template in result.items:
print(template.id, template.name, template.status)
# With pagination
result = client.templates.list(
limit=50,
cursor="cursor_xxx"
)
Get Template
result = client.templates.get(template_id="tpl_abc123")
print(result.name)
print(result.body)
print(result.status)
Delete Template
client.templates.delete(template_id="tpl_abc123")
Submit Template for Approval
After creating a template, you need to submit it to Meta for approval before you can use it:
result = client.templates.submit(
template_id="tpl_abc123",
sender_id="sender_xyz",
category="UTILITY" # Optional if already set on template
)
print(result.status) # "pending"
The sender_id must reference a sender that has a WhatsApp Business Account configured. Templates are submitted to the WABA associated with that sender.
Template Categories
| Category | Use Case |
|---|
UTILITY | Order updates, account alerts, appointment reminders |
MARKETING | Promotions, offers, newsletters |
AUTHENTICATION | OTP codes, verification messages |
Using Templates in Messages
result = client.messages.send(
to="+14155551234",
message_type="template",
content={
"template_id": "tpl_abc123",
"template_variables": {
"1": "John",
"2": "ORD-12345"
}
}
)