hatang.dev

Webhooks for Zapier, Make and n8n

Send Ha Tang events, such as a new order, a paid payment or a new conversation, to Zapier, Make, n8n or your own server the moment they happen.

Updated on

On this page

A webhook tells another tool that something happened in Ha Tang, within seconds. Each time a subscribed event occurs (an order is paid, a customer starts a conversation, a bank transfer arrives), Ha Tang sends its details to an address you choose.

With a no-code tool such as Zapier, Make or n8n, that is enough to build useful automations without a developer:

  • Add every paid order as a row in Google Sheets.
  • Post a message in your team's chat when a customer gives a 1-star rating.
  • Create a contact in your sales CRM when a new conversation starts.
  • Tell your accountant's tool about every bank transfer received.

You need the Developer (API keys, webhooks) access, which owners and admins always have.

Add a webhook

  1. In your no-code tool, create a trigger that receives webhooks and copy its URL:
    • Zapier: Webhooks by Zapier → Catch Hook.
    • Make: Webhooks → Custom webhook.
    • n8n: a Webhook node with the method set to POST (use the production URL once the workflow is active).
  2. In Ha Tang, go to Settings → Webhooks.
  3. Paste the URL in the box at the top.
  4. Tick the events you want, and untick the others. A few common ones are ticked for you.
  5. Click Add endpoint.
Adding an endpoint and choosing its events
Adding an endpoint and choosing its events

The endpoint's page opens and shows its Signing secret (shown once). Copy it if a developer will verify signatures; it is not shown again.

To check that it works, trigger the event once (for example create a test order in a conversation), then look at Deliveries on the endpoint's page and at the incoming data in your tool.

Which events to choose

Subscribe only to what your automation needs: each event is one request, and many tools count requests against your plan.

Event Sent when
chat.conversation.created A customer starts a new conversation, on any channel
chat.message.created A message is posted in a conversation (by the customer, an agent or a bot)
chat.conversation.resolved A conversation is resolved
chat.order.created, chat.order.paid An order is created; an order's payment arrives
chat.rating.created A customer rates a conversation
chat.ticket.created, chat.ticket.breached A ticket is opened; a ticket misses its SLA
payment.succeeded, transaction.received A payment is completed; money arrives in a linked bank account
invoice.issued, invoice.failed An e-invoice is issued, or fails
email.delivered, email.bounced An email reaches the inbox, or bounces

The full list, with what each event contains, is in the webhook events reference.

What Ha Tang sends

Each event is an HTTP POST with a JSON body:

{
  "type": "chat.order.paid",
  "created_at": "2026-10-24T08:15:00.000Z",
  "data": { "code": "DH000014", "total": 2530000, "payment_status": "paid", "...": "..." }
}

In Zapier, Make or n8n, data shows up as fields you map into the next step: the order code, the total, the recipient's name and phone, and so on.

Every request also carries signature headers (webhook-id, webhook-timestamp, webhook-signature, and the same values as svix-*). Your developers use them and the signing secret to prove a request really comes from Ha Tang. No-code tools usually skip this check, so keep the webhook URL private: anyone who has it can send fake data to it. For how to verify signatures, see the webhooks guide in the developer hub.

Deliveries, retries and replays

The endpoint's page lists every Delivery: the event, its Status, the Attempt number, the Response your tool gave and how long it took, and the Next retry. Click an event's name to see the data that was sent and the answer received.

  • Your tool must answer with a 2xx status within 15 seconds.
  • If it does not, Ha Tang tries again after 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours and 10 hours. After that the delivery is Exhausted.
  • Replay sends a delivery again, with the same webhook-id, so your tool can recognize a repeat.
An endpoint's deliveries, with status, attempts and Replay
An endpoint's deliveries, with status, attempts and Replay

Manage an endpoint

On the endpoint's page:

  • Disable stops it: nothing more is sent, and deliveries waiting for a retry are dropped. Enable turns it back on for new events.
  • Rotate secret creates a new signing secret, shown once. For the next 24 hours requests are signed with both the old and new secret, so your developers have time to switch.
  • Delete removes the endpoint and stops all its deliveries.

To change the events, add a new endpoint with the right events and delete the old one.

Troubleshooting

Symptom Cause What to do
"endpoint: Internal hosts are not allowed" The URL points to localhost or a private network Use a public address. To test on your own computer, use a tunnel service
Deliveries show Failed with HTTP 404 or 410 The no-code workflow is off, or the URL changed Turn the workflow on, or add the new URL as an endpoint
Deliveries time out Your tool takes more than 15 seconds to answer Answer first, then do the slow work in the next step
Nothing arrives The event is not ticked, or the endpoint is disabled Check Subscribed at the top of the endpoint's page and its status
The same event arrives twice A retry or a replay after a slow answer De-duplicate on the webhook-id header

Was this article helpful?

Related articles

Not finding what you are looking for?

Our team answers in the chat, in English or Vietnamese.

Send us an email

Building with the API or SDKs? See the developer hub →