Routy

Why didn't my webhook fire?

A conversion shows in your reports, but the webhook you set up for it never reached your tracker, ad platform or CRM. Routy can tell you why, for that one conversion, in a few seconds.

Most of the time nothing went wrong in sending: the webhook was skipped on purpose because its settings don't cover that conversion. A skipped webhook leaves no row in Events β†’ Webhooks, because nothing was sent. This check is the place that shows it.

Watch this video on its own page β†’

Transcript

A conversion shows in your reports, but one of your webhooks never got it. Here's how to find out why, in a few seconds. Find the conversion on the Conversions page. On its row, click the webhook button: Why didn't this fire? Routy checks every webhook set up for this conversion, without sending anything. Each one either would be sent, or was skipped, with the reason underneath. Google Ads conversions already has it. Routy sends a conversion to each webhook once. CRM sync isn't set up for this conversion's type. Edit the webhook, and add the type to its conversion events. Meta Conversions API only sends conversions whose click came from Facebook Ads. This click came from Google Ads, so it was skipped. Set its event source to All, or to the right platform. Legacy Zapier is disabled. Enable webhook takes you to where you can switch it back on. Fixing a webhook doesn't send what it already skipped. To send this conversion now, use Send on the traffic source's Webhooks tab, with this click ID. Webhooks that already have it won't send it twice. The guide for this screen lists every reason, and what to do about each one.

A conversion's webhooks, each with whether it would be sent and why not


Run the check

  1. Go to Events β†’ Conversions and find the conversion. Widen the date range if it's older than the default.
  2. On its row, click the webhook button (Why didn't this fire?). On a phone, tap the row and then Why didn't this fire?.
  3. The conversion's details open on Outgoing Webhooks, with Check this conversion's webhooks expanded.

The webhook button on a conversion row

You can also open any conversion's details (the … on its row), or a delivery from Events β†’ Webhooks, and expand Check this conversion's webhooks yourself.

The check doesn't send anything and doesn't change anything. Run it as often as you like. It needs account admin access; without it, the check isn't shown.


Reading the result

The check lists every webhook that applies to the conversion: the ones set up on the conversion's traffic source, plus the ones set up for your whole account. Disabled webhooks are listed too.

Each webhook gets one badge:

Badge What it means
Would be sent Its settings cover this conversion. If it isn't in the deliveries below, see When to escalate.
Already sent It was sent for this conversion (or is still being sent). Routy sends each conversion to a webhook once.
Skipped Its settings don't cover this conversion. The reason is written underneath.
Not checked Nothing could be sent for this conversion at all. The reason is shown once, above the list.

Routy checks a webhook's settings in this order and shows the first reason that stops it: disabled, already sent, conversion type, then event source. Once you fix one reason, run the check again: a second one may be behind it.

Below the check are the deliveries already made for the click, with their status, attempts and Resend. See Webhooks event log for how to read them.


Skipped reasons and how to fix them

This webhook is disabled

Nothing is sent while a webhook is disabled. Click Enable webhook: it opens the traffic source's Webhooks tab. Open the webhook's … menu there and choose Enable.

This webhook is not set up for this conversion's type

The webhook's Conversion Events don't include this conversion's type (for example, it sends only Signup and this is an FTD). Click Edit webhook and add the type to Conversion Events.

This webhook only sends conversions from a specific ad platform

The webhook's Event Source is set to one ad platform (for example Facebook Ads), and the click behind this conversion came from another. The check shows where the click came from, under the reason: "Click came from: Google Ads".

Click Edit webhook and either pick the right Event Source, or set it to All to send conversions whatever platform the click came from. If you run a separate webhook per ad platform, this skip is usually correct: the conversion went to the other platform's webhook.

"Click came from: none detected" means Routy found no ad platform on the click, so a webhook set to one platform won't send it.

This conversion was already sent to this webhook

Routy sends a conversion to each webhook once. A delivery that failed or was cancelled doesn't count, so a failed one isn't blocking anything.

To send it again, for example after your receiving end was fixed, use Resend on the delivery below the check.


When nothing could be sent

Sometimes the problem isn't any one webhook. The check then shows a single reason above the list and greys every webhook out as Not checked:

Reason What to do
There are no webhooks set up for this conversion's traffic source or for your account Click Add webhook and set one up.
This conversion is not linked to a traffic source Webhooks are set up per traffic source, so none applies. This is normal for conversions that didn't come through one of your tracking links.
This conversion's traffic source is closed Webhooks of a closed traffic source aren't sent.
Your account is disabled Contact support.
The click this conversion was credited to could not be found, or isn't linked to a traffic source or a tracking link Contact support, with the click ID.
The tracking link, brand, brand account or affiliate program behind the conversion could not be found Contact support.
The webhook data for this conversion could not be built Contact support.

Deliveries that failed

A delivery shows Failed when your receiving end didn't accept it. Routy keeps retrying a failed delivery by itself for up to 10 days and 10 attempts, and deliveries held back by your plan's webhook allowance (Out of Quota) are sent later too. The check marks these Retrying automatically: there's nothing to do but wait.

Once the retries run out, use Resend on the delivery. Open its Delivery attempts first: the response tells you what the receiving end didn't like.


Common questions

I fixed the webhook. How do I send the conversion now? Fixing a webhook doesn't send conversions it already skipped. Open the traffic source's Webhooks tab, click Send, and paste the conversion's click ID. Routy runs that click's conversions through your webhooks again: the one you fixed sends it, and webhooks that already have it don't send it twice. Run the check again to confirm.

If the conversion already has a delivery for that webhook (it failed, say), use Resend on the delivery instead.

It says "Would be sent", but there's no delivery. The settings cover the conversion today. Either they were changed after the conversion arrived, or it wasn't sent when it should have been. Contact support.

The check says this conversion belongs to another account. You're looking at it while a different one of your accounts is selected. Switch to the account the message names, using the account selector at the top of the page.

Webhooks for other conversions show under Outgoing Webhooks. That list covers the whole click, and one click can have several conversions. The check itself is about the one conversion you opened.


When to escalate

Contact support when:

  • A webhook says Would be sent but no delivery exists for the conversion.
  • The check shows a reason in the "contact support" rows of When nothing could be sent.
  • You fixed a skipped webhook and need many past conversions sent, more than pasting click IDs into Send can handle.
  • Enable webhook opens a traffic source whose Webhooks tab doesn't list the webhook.

Include the conversion's click ID, the webhook name, and roughly when the conversion happened. A screenshot of the check saves a round trip.