# Klaviyo UTM Tracking Integration

Send WordPress UTM attribution from HandL UTM Grabber into Klaviyo, including source, medium, campaign, content, term, click IDs, and referrer data.

# Track UTMs in Klaviyo Forms with UTM Grabber

## UTM attribution overview

Capture HandL UTM Grabber attribution in Klaviyo embedded forms and sign-up pages on WordPress by mapping hidden fields to UTM Grabber cookie values.

### Add hidden properties in Klaviyo

1. In Klaviyo, create profile properties for each UTM parameter you want to track
2. Add hidden inputs to your Klaviyo embed form with `name` attributes matching property names
3. UTM Grabber auto-populates matching input fields on page load

### Manual prefill script

```
<script>
document.addEventListener('DOMContentLoaded', function() {
    if (typeof handl_utm === 'undefined') return;
    Object.keys(handl_utm).forEach(function(key) {
        var el = document.querySelector('input[name="' + key + '"]');
        if (el && handl_utm[key]) el.value = handl_utm[key];
    });
});
</script>
```

Parameter list: [Native WP Shortcodes](https://docs.utmgrabber.com/books/102-getting-started-for-handl-utm-grabber-v3/page/native-wp-shortcodes).

# Send Klaviyo UTM Attribution via Zapier Webhook

## UTM attribution overview

This walkthrough covers sending full UTM Grabber data from Klaviyo 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 Klaviyo guide](https://docs.utmgrabber.com/books/klaviyo-integration/page/track-utms-in-klaviyo-forms-with-utm-grabber).

### When a webhook makes sense

Native fields in Klaviyo 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](https://docs.utmgrabber.com/books/zapier-integration/page/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](https://docs.utmgrabber.com/books/102-getting-started-for-handl-utm-grabber-v3/page/native-wp-shortcodes).

Make users: see [Make Integromat integration](https://docs.utmgrabber.com/books/integromat-integration).