Closing the loop between ads, leads and bookings

Tracking that survives ad blockers, retries and duplicate webhooks.

ERR_CONVERSION_NOT_DELIVERED · 2026-10-08

A campaign is only as good as the events that come back from it. Most of the work is making those events arrive once, with the right identifiers.

Browser and server events

Send the page view and the contact click from the browser, and send the lead and booking from the server. Give each event one ID in both places so the platform can match them and not count the same action twice.

Keep analytics first-party

Proxy the analytics script through the site’s own origin. It is simpler to host, and it keeps requests on a domain the visitor already trusts.

Retry what matters

Page views are best effort. Leads and bookings are the conversions the business is paid on, so those get durable retries when delivery to the ad platform fails.

Make webhooks idempotent

Booking confirmations can arrive more than once. Verify the signature, store the booking once, and return success on a repeat so the sender stops retrying.

Read it back

A test that clicks through the real page and then checks that the lead is stored, the booking is stored once, and the platform accepted both events is worth more than any dashboard screenshot. It also shows plainly what the test does not prove, such as the platform’s own attribution.