Heyflow UTM Tracking Integration

Capture UTM parameters in Heyflow funnels with HandL UTM Grabber so source, medium, campaign, click ID, referrer, and landing page data follow every lead.

How to Track UTMs in Heyflow

UTM attribution overview

This guide explains How to Track UTMs in Heyflow with HandL UTM Grabber. It helps you capture UTM source, medium, campaign, term, content, click IDs, referrer, and landing page data and keep the marketing context needed for accurate reporting across forms, bookings, signups, and sales.

We are going to implement as it is recommended here...

https://www.heyflow.help/en/articles/5508707-url-parameter-tracking

You can either let Heyflow pick all the parameters or you can just allow the ones that start with utm_. We recommend "All URL parameters" because our plugin tracks more than utms

After that go to Integrations > Embed select WordPress and generate the embed code. It will look like this.

<heyflow flow-id="put-your-flow-id" height="600px" width="800px" pass-parameters dynamic-height></heyflow>

Simply wrap around the code with [handl_all_i] and add url-parameters="%s"

[handl_all_i]<heyflow url-parameters="%s" flow-id="put-your-flow-id" height="600px" width="800px" pass-parameters dynamic-height></heyflow>[/handl_all_i]

Embed it in your page...

Test it and check the responses in Heyflow

If everything went well, you should see all the parameters collected in Responses

Send Heyflow UTMs via Zapier or Webhook

UTM attribution overview

This walkthrough covers sending full UTM Grabber data from Heyflow to Zapier, Make, or your own webhook. Handy when you need gclid, fbclid, first-touch fields, or custom params alongside the lead or order.

For the primary setup, see the main Heyflow guide.

When a webhook makes sense

Native fields in Heyflow often stop at basic UTMs. A webhook lets you push everything UTM Grabber stores without trimming values or losing click IDs.

Thank-you page script

Paste this on your confirmation page. Swap in your Zapier or Make hook URL.

<script>
var qvars = {};
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
    qvars[key] = decodeURIComponent(value.replace(/\+/g, ' '));
});
qvars = Object.assign({}, (typeof handl_utm !== 'undefined' ? handl_utm : {}), qvars);
setTimeout(function() {
    var data = new URLSearchParams(qvars).toString();
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open('GET', 'https://hooks.zapier.com/hooks/catch/YOUR_ID/YOUR_KEY/?' + data, true);
    xmlHttp.send(null);
}, 1000);
</script>

Full pattern explained in Triggering Zapier on Thank you Page.

Quick Zapier / Make checklist

  1. Create a Catch Hook trigger and copy the URL
  2. Run a test conversion with UTMs in the landing URL
  3. Confirm gclid, utm_source, and email (if present) show up in the payload
  4. Map fields into your CRM or spreadsheet

Parameter reference: Native WP Shortcodes.

Make users: see Make Integromat integration.