Appearance
Message Template
omnichannel.template · every change is kept in the audit log · numbered {channel}-{slug}
Fields
Every record also has id, created_at and updated_at.
| Field | Label | Type | Rules |
|---|---|---|---|
channel | channel | select | required; one of: Email, WhatsApp, SMS, Slack, Voice |
name | name | text | required; max 120 characters |
slug | slug | text | required; max 120 characters |
description | description | text | max 300 characters |
portal | portal | link → omnichannel.portal | |
status | status | select | one of: Draft, Active, Archived; default "Draft" |
current_version | current version | number | default 1; min 1 |
subject | subject | text | max 500 characters |
body | body | longtext | required |
variables | variables | json | |
provider_template_name | provider template name | text | max 190 characters |
provider_status | provider status | select | one of: Not submitted, Pending, Approved, Rejected, Paused |
logo | logo | image | |
versions | versions | table of template_version | |
attachments | attachments | table of template_attachment |
Unique together: channel + slug
Permissions
| Role | Can |
|---|---|
omnichannel:admin | read, create, update, delete, import, export |
omnichannel:editor | read, create, update |
omnichannel:viewer | read |
API
http
GET /api/omnichannel/template?<field>=<value>&limit=100&offset=0
POST /api/omnichannel/template
GET /api/omnichannel/template/:id
PATCH /api/omnichannel/template/:id
DELETE /api/omnichannel/template/:idBulk import: GET /api/_import/omnichannel/template/template (CSV template), then POST /api/_import/omnichannel/template. See REST API.