Easy Digital Downloads UTM Tracking Integration

Track campaign attribution through Easy Digital Downloads with HandL UTM Grabber, capturing UTM parameters, click IDs, referrer data, and landing pages on purchases.

Collect UTMs in Easy Digital Downloads Orders

UTM attribution overview

Store HandL UTM Grabber attribution on Easy Digital Downloads orders using hidden checkout fields and order meta. Same pattern as WooCommerce.

Overview

Easy Digital Downloads (EDD) does not natively store UTM data. HandL UTM Grabber captures attribution in cookies. You pass it into checkout via hidden fields and save to order meta.

Step 1: Add hidden checkout fields

Use EDD's checkout field filters or a snippets plugin to inject hidden fields for each UTM parameter. Name fields to match UTM Grabber cookies: utm_source, utm_medium, utm_campaign, gclid, etc.

Step 2: Auto-populate fields

UTM Grabber automatically fills hidden inputs on the checkout page. Alternatively use shortcodes: [utm_source], [gclid], etc. See Native WP Shortcodes.

Step 3: Save to order meta

add_action('edd_insert_payment', function($payment_id) {
    $fields = ['utm_source','utm_medium','utm_campaign','gclid','fbclid'];
    foreach ($fields as $f) {
        if (!empty($_POST[$f])) {
            edd_update_payment_meta($payment_id, $f, sanitize_text_field($_POST[$f]));
        }
    }
});

For webhook-based attribution to your CRM, see the second guide in this book.

Send EDD Order UTMs via Webhook to Zapier or CRM

UTM attribution overview

This walkthrough covers sending full UTM Grabber data from Easy Digital Downloads 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 Easy Digital Downloads guide.

When a webhook makes sense

Native fields in Easy Digital Downloads 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.