explaingit

diendh/zca-bridge

Analysis updated 2026-05-18

69TypeScriptAudience · developerComplexity · 4/5LicenseSetup · moderate

TLDR

A self-hosted bridge that connects Zalo, Vietnam's popular messaging app, to the Chatwoot helpdesk, so support agents can read and reply to Zalo messages inside Chatwoot.

Mindmap

mindmap
  root((zca-bridge))
    What it does
      Bridges Zalo and Chatwoot
      Two way messaging
      Media support
    Tech stack
      TypeScript
      Fastify
      PostgreSQL
      Docker
    Use cases
      Unified support inbox
      Self hosted deployment
    Audience
      Support teams
      Vietnamese businesses

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add Zalo as a support channel inside your existing Chatwoot helpdesk.

USE CASE 2

Let support agents reply to Zalo customers without leaving Chatwoot.

USE CASE 3

Self-host a private message bridge instead of routing chats through a third party.

What is it built with?

TypeScriptFastifyPostgreSQLDocker

How does it compare?

diendh/zca-bridgeutibeabasi6/mercekvoid5tar/curio
Stars696968
LanguageTypeScriptTypeScriptTypeScript
Setup difficultymoderatemoderatemoderate
Complexity4/53/53/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 1h+

Requires a separate PostgreSQL database and Docker Compose setup.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

zca-bridge connects two separate systems used in Vietnamese customer support: Zalo, a messaging app extremely popular in Vietnam, and Chatwoot, an open-source help desk platform. Without a bridge like this, a support team using Chatwoot would need to separately check the Zalo app for messages, keeping two interfaces open and breaking their workflow. This project adds Zalo as an inbox inside Chatwoot so agents can read and reply to Zalo messages from the same interface they use for other channels. The bridge runs on your own server rather than passing through a third-party service, which matters for businesses with data privacy requirements. It supports two types of Zalo connections. The first is Zalo Official Accounts, which uses Zalo's official API and is the safer option for business use. The second is personal Zalo accounts, which relies on an unofficial library and carries a real risk of the account being restricted or permanently banned. The README warns clearly that the personal account channel should only be used with disposable or test accounts, not primary business accounts. Messages flow in both directions: incoming Zalo messages become conversations in Chatwoot, and replies from Chatwoot agents are sent back through Zalo. The bridge supports text, images, files, voice recordings, video, stickers, and location messages. A durable queue backed by PostgreSQL handles message delivery, with automatic retry on failure and a dead-letter store for messages that cannot be delivered. A deduplication mechanism prevents the same message from appearing twice. The project is written in TypeScript using the Fastify web framework and requires a PostgreSQL database separate from Chatwoot's own database. Docker Compose files are included for straightforward self-hosted deployment. The README is primarily written in Vietnamese but includes a link to an English version, and a project wiki covers installation, configuration, and troubleshooting in both languages. The project is licensed under Apache 2.0 and is independent of Zalo, Chatwoot, and the unofficial library it uses.

Copy-paste prompts

Prompt 1
Help me set up zca-bridge with Docker Compose to connect a Zalo Official Account to my Chatwoot instance.
Prompt 2
Walk me through configuring PostgreSQL for zca-bridge's message queue.
Prompt 3
Explain the risk difference between Zalo Official Account and personal Zalo account connections in zca-bridge.
Prompt 4
Show me how zca-bridge handles retries and deduplication for incoming Zalo messages.

Frequently asked questions

What is zca-bridge?

A self-hosted bridge that connects Zalo, Vietnam's popular messaging app, to the Chatwoot helpdesk, so support agents can read and reply to Zalo messages inside Chatwoot.

What language is zca-bridge written in?

Mainly TypeScript. The stack also includes TypeScript, Fastify, PostgreSQL.

What license does zca-bridge use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is zca-bridge to set up?

Setup difficulty is rated moderate, with roughly 1h+ to a first successful run.

Who is zca-bridge for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.