Update Helpdesk Tickets via Zalo¶
Guide Info
Warning
The screenshots on this page use hypothetical sample data. The Zalo accounts, contacts, conversations and messages shown are illustrative only and do not belong to any real person or business.
Note
Out of scope for this guide:
Create new ZBS message templates or submit for approval: see Create and Manage ZBS Message Templates (Admin/IT)
Link customer Zalo accounts: see Manage Zalo Partner Links
Reply to free-form messages (Advisory Messages) from customers: see Reply to Zalo OA Messages
—
Why Send Ticket Updates via Zalo¶
When a customer submits a support request, what they want most is to know “where is my ticket?” Without proactive notifications, customers often send follow-up messages to ask, create new messages, or even open duplicate tickets thinking the original request was overlooked. Each time a customer has to ask again erodes their confidence in the support process.
Sending updates via Zalo solves this without requiring customers to check email or log into the portal: notifications arrive directly on the app they use daily, right when ticket status changes.
Example used throughout this guide: Ms. Trần Thu Hà — production manager at An Phat Packaging JSC — reports that a label printer finished running but did not create a shipping document (ticket HD/2026/00412). Helpdesk agent Marc Demo receives the ticket, assigns it, updates the stage, closes it, and requests a service rating — sending a ZBS notification at each step directly from the ticket chatter. These updates let Ms. Ha follow progress without asking for the same information again.
Viindoo provides five pre-built ZBS (Zalo Business Solutions) message templates for the helpdesk ticket lifecycle:
When to Send |
Template |
Main Content to Customer |
|---|---|---|
Just received the request |
Ticket Created <ticket_code> |
Ticket code, status, creation date, portal link |
Just assigned staff |
Ticket Assigned <ticket_code> |
Ticket code, assigned staff, team, assignment date, portal link |
Progress update available |
Ticket Update <ticket_code> |
Ticket code, new status, update date, portal link |
Ticket closed |
Ticket Resolved <ticket_code> |
Ticket code, status, close date, portal link |
After closing, request feedback |
Service Rating <ticket_code> |
5-star rating template — customer clicks directly on Zalo |
—
Prerequisites¶
Before opening a ticket to send, confirm all four conditions are met:
Ticket has the correct customer. The customer field on the ticket must be the correct partner — not an internal contact or placeholder name from a quick create.
Customer has a Zalo link or phone number in the system. The system looks for the customer’s Zalo UID via the partner link first; if not found, it uses the phone number for routing. The Zalo button in chatter only appears when the partner has at least one of these. If both are missing: see how to link at Manage Zalo Partner Links.
Helpdesk ZBS templates have been approved by Zalo. The five Helpdesk templates come with the Zalo Helpdesk Template Pack module (viin_zalo_helpdesk). All five must be submitted and approved by Zalo before use. If a template is not in Approved status, it won’t appear in the selection list when sending. Verify at Create and Manage ZBS Message Templates (Admin/IT).
Ticket has enough data for the template being used. Each template pulls information directly from the ticket: customer name, ticket code, stage status, assigned staff, team, assignment date, close date. If a ticket lacks data (for example, no assigned staff when sending the Assigned template), the corresponding variable in the message will show empty.
Warning
Sending to the wrong customer is a serious business risk.
ZBS message content includes ticket code, status, assigned staff, and portal link — valuable internal data. If the ticket customer is incorrectly linked to someone else’s phone number or Zalo account, the message goes to the wrong person with no way to recall it after sending. Always verify the recipient name in the Send Zalo Message dialog before clicking Send.
—
Scenario: Printer Error Ticket from An Phat Packaging Company¶
Ms. Trần Thu Hà, production manager at An Phat Packaging JSC, reports an issue: the label printer finished running but did not create a shipping document in the system. The workflow is blocked and the warehouse team is waiting. Viindoo Helpdesk agent Marc Demo receives, handles, and notifies Ms. Ha via Zalo at each major step.
Ticket data used throughout this guide:
Ticket code: HD/2026/00412
Customer: Trần Thu Hà — An Phat Packaging JSC
Issue: Label printer not creating shipping documents
Assigned staff: Marc Demo
Team: Technical Support
—
Step 1 — Receive Request and Confirm Receipt¶
After the ticket is created, send Ticket Created when its customer and data are verified. The notification gives Ms. Ha the ticket code and a portal link so she can follow the request.
Go to and open ticket HD/2026/00412.
In the chatter area (below the ticket form), click the Zalo button.
A To: line appears above the text box, showing the customer from the ticket. This identifies a potential recipient; it does not prove that Zalo will accept or deliver the message. Check the selected template and recipient data before sending.
Click the full composer arrows next to the Send button to open the Send Zalo Message dialog.
Note
The preview shows how the card will look. It is not proof that Zalo accepts or delivers the message: verify the parameters and check the actual send result.
In the dialog:
Verify Recipients displays “Trần Thu Hà” correctly.
In the ZBS Template field, select the Ticket Created <ticket_code> template. The field opens with the first approved template already selected, so change it when needed.
Content preview appears: ticket code, current stage status, creation date, and View Details link to the portal.
Verify no variables show unreplaced placeholder text like
<variable_name>.Click Send.
The dialog may close after submitting the message; this does not prove delivery. Open Ms. Ha’s Zalo conversation in Discuss and check the send result. If it is unclear, ask Admin to inspect the corresponding Zalo message record and API response.
Tip
Verify Step 1 Completed Correctly:
Recipient name in the dialog is Ms. Trần Thu Hà (not another contact in An Phat Packaging JSC).
Message preview shows ticket code HD/2026/00412 — not a different ticket code.
After sending: open Discuss and go to Ms. Ha’s Zalo conversation — the just-sent message appears in the chat stream with content matching the Ticket Created template.
—
Step 2 — Assign Staff and Notify Assigned Handler¶
On a ticket, there’s often a time gap from receipt until assignment — the customer doesn’t know who is handling their ticket. The Ticket Assigned template solves this: the customer knows exactly who is responsible, which team they’re on, and when they were assigned.
Important: this template pulls data from the assigned staff and team fields on the ticket. You must assign on the ticket first, then send the template — if you send before assigning, the staff and team info will show empty in the customer’s message.
On ticket HD/2026/00412, select Assigned To as Marc Demo and Helpdesk Team as Technical Support. Save the ticket.
In chatter, click Zalo → expand → open Send Zalo Message.
Select the Ticket Assigned <ticket_code> template.
Message preview displays: Ms. Ha’s name, code HD/2026/00412, Marc Demo, Technical Support team, assignment date.
Click Send.
Tip
Verify Step 2 Completed Correctly:
Preview shows the correct name Marc Demo and Technical Support — no empty fields or unreplaced variables.
Ms. Ha’s Zalo conversation has the just-sent message with content matching the Ticket Assigned template.
Ticket on the system saved the correct assigned staff and team before the send time.
—
Step 3 — Update Progress During Handling¶
The handling process may move through several stages (New → Assigned → On Hold → Resolved). Each time the stage changes, customers won’t know unless notified. If the ticket is On Hold because the team waits for information, the Ticket Update template shows the customer the new stage — reducing silence and inaction from customers unsure what they need to do.
Send Ticket Update when:
Ticket stage just changed to a new stage.
New information needs to be communicated to the customer (for example: waiting for customer response).
Ticket has been waiting long and the customer needs reminding of the progress.
If the ticket doesn’t fit one of these three cases, don’t send Ticket Update — sending too many times without real change undermines notification credibility.
On ticket HD/2026/00412, change the stage to an appropriate status (for example: On Hold). Save the ticket.
In chatter, click Zalo → expand → open Send Zalo Message.
Select the Ticket Update <ticket_code> template.
Preview displays ticket code, current stage status, and update date (from the ticket’s most recent modification time).
Click Send.
Tip
Verify Step 3 Completed Correctly:
The Status field in the preview matches the current stage name on the ticket — not the old stage.
Ms. Ha’s Zalo conversation has a new Ticket Update message with correct information.
If the ticket is on hold waiting for the customer: the next step is to wait — don’t send another Ticket Update until there’s new information or the ticket stage changes.
—
Step 4 — Notify Resolution Complete¶
When a ticket closes, the customer needs to know immediately to stop worrying or opening duplicate tickets. The Ticket Resolved template confirms the issue is resolved and gives the customer a link to review details on the portal if needed.
Warning
Close the ticket first, send the template after.
The Ticket Resolved template pulls the close date directly from the ticket. If you send before the ticket is in a closed stage, the close date will show empty in the customer’s message. Close the ticket (change to an end stage) before sending this template.
On ticket HD/2026/00412, change the stage to a closed status (for example: Resolved). Save the ticket.
In chatter, click Zalo → expand → open Send Zalo Message.
Select the Ticket Resolved <ticket_code> template.
Preview displays ticket code, closed stage status, and ticket close date.
Click Send.
The message is recorded in Ms. Ha’s Zalo conversation in Discuss. The ticket is now in closed status on the system.
Tip
Verify Step 4 Completed Correctly:
Preview shows the close date — not empty. If empty, the ticket hasn’t been closed to the correct stage.
Ms. Ha’s Zalo conversation has the Ticket Resolved message.
Ticket on the system is in closed status, no longer in the open ticket list.
—
Step 5 — Request Service Rating¶
After closing the ticket, use Service Rating to request feedback on support quality. It provides a five-star rating interface in Zalo, so the customer does not need to open the portal to rate the service.
Send the rating request after notifying the customer that the ticket is resolved, and choose a suitable time based on the conversation. Do not assume every notification will provide a read receipt.
In chatter of ticket HD/2026/00412, click Zalo → expand → open Send Zalo Message.
Select the Service Rating <ticket_code> template.
Preview displays the rating request and ticket code.
Click Send.
Ms. Ha receives a message on Zalo with a 5-star rating interface (Very Dissatisfied / Dissatisfied / Neutral / Satisfied / Very Satisfied). When she selects a level, Zalo shows the next question and thank you message per the template configuration.
Tip
Verify Step 5 Completed Correctly:
Ticket HD/2026/00412 is in closed status before sending this template — don’t send rating request before closing the ticket.
Ms. Ha’s Zalo conversation has the Service Rating message with code HD/2026/00412 — not a different ticket code.
Sent message is recorded in Ms. Ha’s Zalo conversation in Discuss, viewable anytime.
—
Track Rating Feedback from Customer¶
When Ms. Ha clicks to select stars on Zalo, Zalo records the choice on its side. The feedback is not recorded into ticket HD/2026/00412 or its chatter — this is the current integration limitation.
Note
Currently, star rating results are not recorded in Viindoo: neither the ticket, its chatter, the Zalo events nor the API Logs show them (the API logs list the requests Viindoo sends to Zalo). To compile rating data, Admin exports it from the Zalo Business Portal (outside Viindoo).
—
View Send History¶
All ZBS messages sent from a ticket are recorded in the corresponding Zalo conversation in Discuss, and in the chatter of the ticket when the Zalo Chatter Bridge module is enabled. To review:
Open
Find the customer’s Zalo conversation in the ZALO category of the sidebar (here An Phat Packaging JSC, Trần Thu Hà).
Scroll up to see ZBS messages sent to Ms. Ha — each message shows preview content and send time.
This history proves what was sent, when, and the conversation status.
Note
Discuss screen when viewing Zalo history: left sidebar shows Zalo channels organized by OA; main chat frame displays messages in chronological order — ZBS messages appear as cards with title and buttons (if the template has them), plus send status icons. Each message from staff shows the sender’s name above it.
—
Handling Common Issues¶
Helpdesk Templates Not Appearing in the ZBS Template List¶
Symptom: Open Send Zalo Message dialog from ticket, but the ZBS Template field is empty or missing a specific template.
Common causes:
Template has not been submitted and approved by Zalo (status is not Approved).
You are not allowed to use the template (its Users list does not include you).
Template belongs to a company that is not enabled in the company switcher.
Solutions:
Report to Admin to check template status at Create and Manage ZBS Message Templates (Admin/IT).
If template is Pending or Rejected: process the approval again before proceeding.
If template is Approved but still missing: verify that you are allowed to use the template and that its company is enabled.
Preview Shows Empty Fields or Unreplaced Variables Like <assigned_to>¶
Symptom: After selecting a template, preview shows blank fields or strings like <assigned_to>, <closed_date> not replaced.
Common cause:
Corresponding field on ticket has no data: no assigned staff (for Assigned template), ticket not closed (for Resolved template), or stage not changed.
Solutions:
Close the dialog.
Update missing data on the ticket (assign staff, change stage, etc.).
Save the ticket, reopen the dialog, and select the template again to see the updated preview.
Warning
Don’t send messages with empty variables.
Messages to customers with blank fields or <assigned_to> look unprofessional and the customer can’t read the information they need. Always check the preview before clicking Send.
Error Message When Clicking Send¶
Symptom: After clicking Send, the dialog shows an error or the Zalo message is marked Failed. The dialog may close even when the API rejects the message.
Common causes:
Template status just changed (no longer Approved) while you had the dialog open.
Zalo API returns an error due to expired OA token or quota.
Solutions:
Read the error message content to identify the cause.
If error relates to token or connection: report to Admin to check at Monitor and Troubleshoot Zalo.
Don’t click Send multiple times in a row when encountering an error — messages may arrive to the customer multiple times if some sends actually succeeded.
Recipient Name in Dialog Does Not Match the Ticket Customer¶
Symptom: Name in the Recipients field is not Ms. Trần Thu Hà but someone else, or the customer name on the ticket and in the Zalo conversation don’t match.
Common causes:
Customer on ticket is incorrectly linked to someone else’s Zalo account.
Multiple contacts share the same phone number in the system; the system picked the wrong one.
Solutions:
Stop sending immediately. Close the dialog without clicking Send.
Report to Admin or CS Lead to verify and fix the Zalo link at Manage Zalo Partner Links.
Resend after Admin confirms the link is correct.
—