Track UTMs in Bookeo via Webhook on Thank-You Page
UTM attribution overview
This guide explains how to send full HandL UTM Grabber attribution from Bookeo bookings to Zapier, Make (Integromat), or any webhook — without the 64-character source field limitation. Bookeo redirects customers to a custom confirmation page after booking, where you pass the customer email and trigger a webhook with every UTM parameter UTM Grabber has stored.
If you only need basic source tracking and can fit your data within 64 characters, see Method 1: Flattened source parameter.
Step 1 — Configure Bookeo to redirect to your thank-you page
Bookeo lets you redirect customers to a custom confirmation page after they complete a booking. Follow Bookeo's guide:
How can I redirect customers to a different confirmation page after they have completed a booking?
- Go to Marketing > Conversion tracking and analytics
- Scroll to Other tracking methods
- Paste the redirect code below into the text box
Use a 5-second delay so Bookeo's built-in conversion tracking (Google Analytics, Google Ads, Facebook Pixel, etc.) has time to fire before the redirect:
<script>
window.setTimeout(function() {
window.top.location = "https://www.yoursite.com/bookeo-thank-you?email={EMAIL}";
}, 5000);
</script>
Notes from Bookeo:
{EMAIL}is a Bookeo placeholder that is replaced with the customer's email address at booking time- You can also use
{PRODUCTCODE}and{LANGUAGECODE}to redirect to different thank-you pages per product or language - Redirect to an
https://URL for maximum browser compatibility
Step 2 — Trigger your webhook on the thank-you page
On your WordPress thank-you page, add a script that merges the email from the URL with all UTM Grabber cookie data and sends everything to your webhook.
Don't forget to replace the webhook URL with your own Zapier, Make, or custom endpoint.
<script>
var qvars = {};
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
qvars[key] = decodeURIComponent(value.replace(/\+/g, ' '));
});
// Merge URL params (email from Bookeo) with all UTM Grabber data
qvars = Object.assign({}, (typeof handl_utm !== 'undefined' ? handl_utm : {}), qvars);
setTimeout(function() {
var data = new URLSearchParams(qvars).toString();
console.log('Sending to webhook:', data);
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', 'https://hooks.zapier.com/hooks/catch/YOUR_ID/YOUR_KEY/?' + data, true);
xmlHttp.send(null);
}, 1000);
</script>
This is the same pattern used in our general Zapier thank-you page guide: Triggering Zapier on Thank you Page.
What data gets sent to the webhook
The webhook receives a query string containing:
email— passed from Bookeo via the{EMAIL}placeholder in the redirect URLutm_source,utm_medium,utm_campaign,utm_term,utm_content— standard UTM parametersgclid,fbclid,msclkid— ad click IDs- Any custom parameters configured in UTM Grabber
See the complete parameter list in Native WP Shortcodes.
Zapier / Make setup
- Create a new Zap (or Make scenario) triggered by Webhooks by Zapier → Catch Hook (or Make's Custom Webhook module)
- Copy the webhook URL into the script above
- Complete a test booking in Bookeo and confirm the webhook receives
emailplus all UTM fields - Map the fields to your CRM, spreadsheet, or reporting tool
Why use this method?
- No 64-character limit — send every UTM parameter in full
- Email matching — Bookeo passes the customer email so you can tie attribution to the booking in your CRM
- Works with any webhook — Zapier, Make, n8n, or a custom API endpoint
- Preserves Bookeo conversion tracking — the 5-second delay lets Bookeo's built-in analytics fire before redirect