> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zavu.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Templates

> Manage templates with the Ruby SDK

Templates are reusable message formats for sending structured messages across WhatsApp, SMS, Telegram, and other channels. WhatsApp requires template approval for business-initiated conversations.

## Create Template

```ruby theme={null}
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"]
)

puts result.id     # tpl_xxx
puts result.status # draft, pending, approved, rejected
```

## List Templates

```ruby theme={null}
result = client.templates.list

result.items.each do |template|
  puts "#{template.id} #{template.name} #{template.status}"
end

# With pagination
result = client.templates.list(
  limit: 50,
  cursor: "cursor_xxx"
)
```

## Get Template

```ruby theme={null}
result = client.templates.get(template_id: "tpl_abc123")

puts result.name
puts result.body
puts result.status
```

## Delete Template

```ruby theme={null}
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:

```ruby theme={null}
result = client.templates.submit(
  template_id: "tpl_abc123",
  sender_id: "sender_xyz",
  category: "UTILITY" # Optional if already set on template
)

puts result.status # "pending"
```

<Info>
  The `sender_id` must reference a sender that has a WhatsApp Business Account configured. Templates are submitted to the WABA associated with that sender.
</Info>

## 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

```ruby theme={null}
result = client.messages.send(
  to: "+14155551234",
  message_type: "template",
  content: {
    "template_id" => "tpl_abc123",
    "template_variables" => {
      "1" => "John",
      "2" => "ORD-12345"
    }
  }
)
```
