Viber chatbot for customer support: how it works and how to set it up
By Roman Zakharenko · Facts checked
A Viber chatbot for customer support is a bot account connected to the Viber REST Bot API. Your server registers a webhook with set_webhook, receives callbacks when customers open the chat or send messages, and replies with send_message using the bot's authentication token. Viber bots can only keep messaging users who have subscribed, so every support conversation starts with the customer.
At a glance
- Every API request carries the bot's authentication token in the X-Viber-Auth-Token header.
- Webhook URLs must use SSL; Viber doesn't support self-signed certificates.
- The message, subscribed and unsubscribed callbacks are mandatory and can't be filtered out.
- A conversation_started event allows one welcome message, not ongoing messaging.
- As of October 2026, Viber's developer docs say bots can only be created on commercial terms.
How a Viber support bot works
Your bot is identified by an authentication token. Every request to the REST Bot API must include it in an HTTP header called X-Viber-Auth-Token; leave it out and you get a missing_auth_token error. You register a public HTTPS webhook with set_webhook, Viber posts callbacks to it as things happen, and you reply with send_message.
When you call set_webhook, Viber checks your URL by sending it a callback with the event webhook. The check passes only if your server answers with HTTP status 200. A successful set_webhook response has status 0; an unreachable URL returns status 1, invalidUrl.
- The customer opens your bot from a link on your website, and Viber sends a conversation_started callback.
- Your bot sends one welcome message with buttons for common topics.
- The customer replies, which subscribes them, and your bot receives a message callback.
- The bot answers simple questions and collects details for everything else.
- Unresolved cases become helpdesk tickets, and agent replies go back through send_message.
Webhooks and callback events
The webhook URL must use SSL with a valid certificate from a trusted certificate authority. The optional event_types list in set_webhook controls which callbacks you receive, but some can't be switched off.
| Event | When it arrives | Can you filter it out? |
|---|---|---|
| webhook | Right after set_webhook, to check your URL | No, it's part of setup |
| conversation_started | A user opens a one-on-one chat with the bot, for example through a deep link | Yes |
| subscribed | A user subscribes to the bot (not when the subscription comes from a first message) | No |
| unsubscribed | A user unsubscribes; the bot can no longer message them | No |
| message | A user sends the bot a message | No |
| delivered, seen, failed | Status updates for messages the bot sent | Yes |
Viber signs each callback. The X-Viber-Content-Signature header holds an HMAC-SHA256 of the request body, keyed with your authentication token, so check it before you process anything. If your webhook doesn't return HTTP 200, Viber retries the callback several times, so make sure a repeated callback doesn't create a duplicate ticket.
Who your bot can message
This rule shapes every Viber support flow: your bot can send messages only to users who have subscribed. A conversation_started event is not a subscription. It allows one welcome message, which Viber says you should send within 5 minutes through send_message, including the receiver parameter. The event also fires for users who are already subscribed.
A user subscribes by sending the bot a message. That first message triggers a message callback, not a subscribed callback, so save the user ID from either event. Users can unsubscribe at any time, which immediately blocks further messages from the bot, and you receive an unsubscribed callback with their ID. If they subscribe again, any context or tracking_data for the conversation is deleted.
To start conversations from your website, use a deep link in the form viber://pa?chatURI= followed by your bot's URI. Adding a context parameter passes a value, such as the page the customer came from, into the conversation_started callback. Viber notes that some browsers may not recognize the deep link. For outage notices, the broadcast API sends to up to 300 receivers per request, and anyone who isn't subscribed comes back as failed.
Sending messages and keyboards
A send_message request names the receiver (the user ID), the message type and a sender object whose name is required and limited to 28 characters. Text messages can be up to 7,000 characters. Two optional fields are useful for support: tracking_data (up to 4,096 characters), which Viber passes back with the user's reply, so it can hold a ticket ID or the current step in a flow; and min_api_version, the minimum client API version needed for the message, which defaults to 1.
Keyboards can be attached to any message type through the keyboard field. Each button has an ActionType:
- reply (the default) sends the button's reply to the bot.
- open-url opens a URL, inside Viber or in an external browser depending on OpenURLType, and sends the URL to the bot.
- location-picker, share-phone and none are also available.
Two keyboard settings help support flows. InputFieldState set to hidden removes the text input when you want customers to pick a button, and DefaultHeight set to true keeps the keyboard at the native keyboard's height.
Commercial terms and helpdesk handoff
As of October 2026, Viber's developer documentation states that "since 5.02.24, Viber bots can only be created on commercial terms", with applications going to Rakuten Viber directly or through its verified official partners. Ask Viber or a partner for current pricing before you build. The send_message response also includes a billing status field that shows how each message was categorized for billing.
For handoff to agents, Zendesk lists Viber among the channels available through Sunshine Conversations. Adding Sunshine Conversations channels to the Agent Workspace requires Suite Professional or above, and you must also use messaging and the Agent Workspace. Messages then become tickets, and agent replies go back to the customer. Without that, the usual pattern is a small service that creates tickets through your helpdesk API and sends agent replies with send_message.
How TascaLab can help
TascaLab's listed bot channels are website, phone, WhatsApp, Telegram, Facebook Messenger and Instagram. Viber isn't on that list, but other channels with an API can be scoped on the free 30-minute Health Check call. TascaLab builds on top of the tools you already use, such as Zendesk, Freshdesk, Jira and Slack, through APIs, webhooks and Make or n8n. A Starter Chat Bot is $400 for one or two channels and a Standard Chat Bot is $575 for three to five. Every project includes 30 days of post-launch support, basic documentation and no hidden fees, and most setups take 1–3 weeks.
Frequently asked questions
Can a Viber bot message customers first?
Only subscribed users. A conversation_started event allows one welcome message, but ongoing messages require the user to subscribe, which happens when they send the bot a message.
Why does set_webhook fail?
Viber checks your URL with a webhook callback and accepts it only if your server returns HTTP 200. The URL also needs SSL with a certificate from a trusted authority; self-signed certificates aren't supported.
How can my bot know where a customer came from?
Add a context parameter to your viber://pa?chatURI= deep link. Viber passes it to your bot in the conversation_started callback.
Can I still create a free Viber bot?
As of October 2026, Viber's developer docs say bots can only be created on commercial terms, through Rakuten Viber directly or its verified official partners.
Does Zendesk support Viber?
Yes, through Sunshine Conversations. Zendesk says its Sunshine Conversations channels in the Agent Workspace require Suite Professional or above.
Want this set up for your team?
Book a free Health Check: a 30-minute call and a written report with 2–3 concrete recommendations, a fixed price and estimated running costs. No pitch.