Viber requires all transactional and OTP messages to use pre-approved templates. Using approved templates guarantees your messages are compliant with Viber's content policy and billed at transactional rates. Template registration is handled through your Sinch account manager.
Step 1: Prepare your template content
Before submitting, make sure each template meets Viber's requirements:
{{order_id}}. Variable names are English only, max 50 characters. Multiple variables can sit back-to-back if separated by at least one space.{{pin}} in OTP templates, which may be the last element.{{pin}} variable. These render in Viber with a dedicated "Copy" button for the code.Note: when you later send messages, each variable value is limited to 125 characters and may not contain URLs or links.
Step 2: Submit to your Sinch account manager
Send your account manager, for each template:
For large volumes, submit templates in bulk via spreadsheet (up to 100 templates per file); your account manager can provide the format.
Step 3: Moderation
Once submitted, the template enters Viber's moderation queue with status Pending. Viber reviews templates within up to 24 hours on business days. The outcome is either:
Your account manager will confirm the result and share the Template ID.
Reference the Template ID in your send request, supply values for every variable exactly as named in the template, and set the language to match the template's locale. Only templates in Approved status can be sent; requests referencing a Pending or Declined template will fail.
Good to know
-----------------Parameter details---------------------------------------------------------
|
Parameter (data type) |
Description |
Validations |
|
service_id (integer) |
Route parameter. The service ID for which the action is performed. |
Required |
|
name (string) |
A human-readable label for the template. |
Optional |
|
category (string) |
The category of the message template. |
Required |
|
params (array) |
A list of dynamic parameters (variables) used within the template text. |
Required |
|
params.name (string) |
Defines the variable name to be used as a placeholder in the template. |
Conditional: Required if params is not empty. |
|
params.type (string) |
The data type of the variable that you will use in send template message request. |
Conditional: Required if params is not empty. |
|
locales (array) |
Configuration for language and message content. |
Required |
|
locales.lang (string) |
Template language code (e.g., en, ru, fr). |
Required |
|
locales.template (string) |
The message string containing static text and placeholders. |
Required |
|
varExample (array) |
A list of example values for the declared parameters. Used for template moderation. |
Required |
|
varExample.name (string) |
The name of the parameter (must match a name defined in params). |
Conditional: Required if params is not empty. |
|
varExample.example (string) |
Conditional. A sample value for the parameter content. Required if params is not empty. |
Conditional: Required if params is not empty. |