What a webhook does

When a webhook is set up on a number, WAGHL sends an HTTP request to your URL every time a chosen event happens — for example, a new message arrives or one goes out. Your endpoint receives the message details and can do whatever you like with them.

There are two kinds you can set up on a number: event webhooks (choose GHL Inbound and/or GHL Outbound — covered first below), and Direct WA Inbound (one URL that gets the raw incoming WhatsApp message, independent of GHL — covered near the end).

You'll need a URL that accepts POST requests That can be your own server, or a no-code tool like Pabbly, Make, or Zapier that gives you a "catch webhook" URL. WAGHL sends the data to it — the URL must be reachable and start with https://.

The two events

Each webhook fires on the events you tick:

EventFires when…
GHL Inbounda message comes in to your number (a customer messages you).
GHL Outbounda message goes out from your number (you or an automation sends).

Pick one or both. A webhook needs at least one event selected.

Add a webhook

1

Open the sub-account's devices

Sign in at waghl.com/login. In the left menu, click Sub-accounts — you'll see a list of sub-accounts with a Users Action column. Under that column, click the view icon (the eye) for the sub-account to open its list of numbers (devices).

2

Open the number's webhooks

In the device list, click the webhook icon on the number you want to send data from. This opens the webhooks panel for that number.

3

Click Add Webhook

Click Add Webhook to open the form.

4

Fill in the details

Give it a Name (any label to recognise it, e.g. "CRM Inbound"), paste your Target URL (must start with https://), and tick GHL Inbound, GHL Outbound, or both.

5

Save

Save the form. The webhook appears in the list and starts firing on the events you chose. You can add more than one webhook to the same number — for example, one URL for inbound and another for outbound.

Send a test payload

You don't have to wait for a real message to check your webhook works. Each webhook in the list has a paper-plane icon ( Send test payload).

1

Save the webhook first

The test sends to the saved URL, so add and save the webhook before testing.

2

Click the paper-plane icon

Click on the webhook's row. WAGHL immediately posts a sample payload — the same shape as a real message event — to your URL.

3

Read the result

A result shows right there: a green tick if your endpoint accepted it, or a red mark with the reason if it didn't. Use it to confirm your endpoint is receiving and reading the data correctly before you go live.

Let the sample define your mapping Rather than us listing field names here (they can change), send a test payload and build your integration against exactly what your endpoint receives. That way your mapping always matches the live data.

Edit or delete a webhook

Each row in the webhook list has Edit (pencil) and Delete (trash) actions. Edit to change the URL or events; delete to stop that webhook firing. Changes take effect immediately.

Direct WA Inbound

Alongside the event webhooks above, there's a second, simpler option: Direct WA Inbound. It sends the raw incoming WhatsApp message straight to your URL, independent of GHL processing — you get the inbound message as it arrives from WhatsApp, rather than as a GHL Inbound event. Use it when you want the raw inbound feed for your own app or automation.

Which one should I use? Pick GHL Inbound (an event webhook) if you want inbound messages as GHL processes them, and the ability to also capture outbound. Pick Direct WA Inbound if you want the raw incoming WhatsApp message on its own, independent of GHL. You can use both at once if you like.
1

Click Direct WA Inbound

In the webhooks panel, click the Direct WA Inbound button.

2

Enter your Target URL

There's just one field — your Target URL (starting with https://). No name, no event checkboxes: it's inbound-only by design.

3

Save

Save it. Direct WA Inbound appears as its own row in the same list, with the same Send test payload button so you can check it right away.

One per number A number can have a single Direct WA Inbound URL. Once it's set, the add button is hidden — use the pencil on its row to change the URL, or Remove to clear it.

Multi-user numbers

If your account uses multiple numbers, webhooks are set per number, so each number can send to its own URL. To make sure your endpoint can tell which physical number an event belongs to, the sending/receiving number needs to be included in the payload — controlled by a per-sub-account setting called Show device number on messages (Multi device). It's on by default, so normally there's nothing to do.

To check or change it, open the WAGHL admin panel, click Edit on the sub-account, and toggle Show device number on messages (Multi device).

Check "Show device number on messages" if the number looks wrong The correct sending/receiving number is included only when Show device number on messages (Multi device) is on for that sub-account (it's on by default). If your payload shows the wrong number, open the WAGHL admin panel, click Edit on the sub-account, and confirm that toggle is enabled.

Troubleshooting

ProblemWhat to check
Test payload fails Confirm the URL is correct, reachable, starts with https://, and accepts a POST request. The result message shows the reason.
Nothing arrives on real messages Check the right event is ticked (Inbound vs Outbound), and that the webhook is saved on the correct number.
Wrong number in the payload (multi-user) In the WAGHL admin panel, click Edit on the sub-account and make sure Show device number on messages (Multi device) is on (it's on by default). See Multi-user numbers.
"At least one event must be selected" Tick GHL Inbound, GHL Outbound, or both before saving.
Can't add a second Direct WA Inbound There's only one Direct WA Inbound per number. Edit the existing one with the pencil, or Remove it first.
URL rejected on save The URL must start with https:// and be a valid address.

What's next?