ThriveCart UTM Tracking Integration

Track campaign attribution through ThriveCart with HandL UTM Grabber, capturing UTM parameters, click IDs, referrer data, and landing pages on checkouts and sales.

Pass UTMs to ThriveCart Checkout with UTM Grabber

UTM attribution overview

This guide explains how to pass HandL UTM Grabber attribution into ThriveCart checkouts. UTM Grabber captures UTM source, medium, campaign, term, content, click IDs, referrer, and landing page data in first-party cookies. ThriveCart does not persist UTMs across page views , parameters must be present on the checkout URL when the customer completes their order. This guide shows how to bridge that gap using UTM Grabber's built-in link append features and ThriveCart passthrough variables.

The core problem

Per ThriveCart's UTM documentation:

"UTM parameters must exist in the checkout URL when the customer completes their order. UTM parameters are not cookied, and so will not follow the customer around as they browse your site."

HandL UTM Grabber does cookie attribution data in the visitor's browser via the handl_utm object. Your job is to push that stored data onto every ThriveCart checkout link or embed at click time , before the customer pays.

Method 1 , Append standard UTMs with the utm-out class

ThriveCart natively recognizes the five standard UTM parameters on checkout URLs (utm_source, utm_medium, utm_campaign, utm_content, utm_term). If you are on ThriveCart Pro+ with Stripe Connect+ enabled, these appear in ThriveCart's Sources / Segmentation reporting.

Add the utm-out class to any link or button that points to your ThriveCart checkout. UTM Grabber automatically appends all tracked parameters from cookies to the href.

<a href="https://yoursubdomain.thrivecart.com/your-product/" class="utm-out">
  Buy Now
</a>
https://yoursubdomain.thrivecart.com/your-product/?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale&gclid=abc123

You can also wrap a parent element:

<div class="utm-out">
  <a href="https://yoursubdomain.thrivecart.com/your-product/">Buy Now</a>
</div>

See Appending UTMs using class name attributes for full details.

Optional: append UTMs to all links globally

If your sales page uses standard WordPress content (not a page builder that bypasses filters), enable Append UTM in the HandL UTM Grabber options tab. This appends tracked parameters to outbound links site-wide , including ThriveCart buy buttons , without adding utm-out to each link manually.

See Appending UTM Globally. If your theme or page builder does not support this, stick with utm-out on individual ThriveCart links.

Method 2 , Passthrough variables for click IDs and custom params

ThriveCart's native UTM reporting only covers the five standard utm_* tags. For gclid, fbclid, msclkid, referrer, landing page, first-touch fields, or any custom parameters, use ThriveCart's passthrough query format.

Per ThriveCart passthrough documentation, append variables like:

?passthrough[gclid]=abc123&passthrough[fbclid]=xyz789&passthrough[utm_source]=google

Passthrough data is included in order webhooks, Zapier payloads, API responses, and your custom success page query string , but is not shown on customer receipts.

Dynamic passthrough builder from handl_utm

Add this script on your WordPress sales page to read UTM Grabber cookies and rewrite all ThriveCart links with both standard UTMs and passthrough variables:

<script>
(function () {
    if (typeof handl_utm === 'undefined') return;

    function buildThriveCartParams() {
        var standard = [];
        var passthrough = [];
        var utmKeys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];

        Object.keys(handl_utm).forEach(function (key) {
            var val = handl_utm[key];
            if (!val || val === '') return;
            if (utmKeys.indexOf(key) !== -1) {
                standard.push(key + '=' + encodeURIComponent(val));
            } else {
                passthrough.push('passthrough[' + key + ']=' + encodeURIComponent(val));
            }
        });

        return standard.concat(passthrough).join('&');
    }

    function appendParams(url, paramString) {
        if (!paramString) return url;
        var sep = url.indexOf('?') === -1 ? '?' : '&';
        return url + sep + paramString;
    }

    var params = buildThriveCartParams();

    document.querySelectorAll('a[href*="thrivecart"]').forEach(function (link) {
        link.href = appendParams(link.href, params);
    });

    window.thrivecartPassthrough = params;
})();
</script>

Embeddable ThriveCart checkout

If you embed ThriveCart directly on your WordPress page, add passthrough variables to the embed div using data-thrivecart-querystring:

<div
  data-thrivecart-account="yoursubdomain"
  data-thrivecart-tpl="v2"
  data-thrivecart-product="1"
  class="thrivecart-embeddable"
  data-thrivecart-embeddable="tc-yoursubdomain-1-XXXXXX"
  data-thrivecart-querystring="passthrough[gclid]=VALUE&passthrough[utm_source]=VALUE">
</div>
<script async src="//tinder.thrivecart.com/embed/v1/thrivecart.js" id="tc-yoursubdomain-1-XXXXXX"></script>

Generate the data-thrivecart-querystring value dynamically from handl_utm with a small server-side or client-side script so click IDs and custom fields are always current.

Limitations and when to use Method 3

ThriveCart does not cookie UTMs. If a visitor lands with UTMs, browses several pages, then reaches checkout through a link that was not rewritten by UTM Grabber, attribution is lost. Always ensure every path to checkout runs through utm-out, global append, or the passthrough script above.

Native UTM reporting requires Pro+. ThriveCart's built-in Sources reporting (filtering by UTM in the dashboard) requires a Pro+ license and Stripe Connect+ on the product. Standard plan users should rely on passthrough + webhooks instead.

Only five UTMs in native reporting. gclid, fbclid, msclkid, referrer, and custom fields are not part of ThriveCart's native UTM dashboard , use passthrough and send them to your CRM via Method 3: Webhook on success page.

Verify tracking

  1. Visit your sales page with test UTM parameters in the URL (e.g. ?utm_source=test&utm_campaign=docs&gclid=test123)
  2. Confirm UTM Grabber stored the values (check cookies or use browser dev tools: handl_utm in console)
  3. Hover over or inspect your ThriveCart buy link , UTMs and passthrough params should be appended
  4. Complete a test purchase and verify data in ThriveCart reporting (Pro+) or in your webhook/Zapier payload

Track UTMs in ThriveCart via Webhook on Success Page

UTM attribution overview

This guide explains how to send full HandL UTM Grabber attribution from ThriveCart orders to Zapier, Make (Integromat), your CRM, or any webhook , including click IDs and custom parameters that ThriveCart's native UTM reporting does not cover. Use ThriveCart passthrough variables plus a custom success page or order webhook to capture every field UTM Grabber has stored.

If you only need the five standard UTMs in ThriveCart's dashboard (Pro+), see Method 1 & 2: Pass UTMs to ThriveCart checkout.

How ThriveCart passes data after purchase

ThriveCart includes passthrough variables in three places after an order completes:

Per ThriveCart passthrough documentation, any passthrough[key]=value sent into checkout is associated with the order and forwarded to these destinations.

Step 1 , Pass UTM Grabber data into checkout via passthrough

Before the customer checks out, ensure UTM Grabber data reaches ThriveCart as passthrough variables. Use the passthrough builder script from Method 1, or manually append to your checkout URL:

https://yoursubdomain.thrivecart.com/your-product/?utm_source=google&utm_medium=cpc&utm_campaign=spring&passthrough[gclid]=abc123&passthrough[fbclid]=xyz789&passthrough[handl_landing_page]=https://yoursite.com/landing

See the full list of trackable parameters in Native WP Shortcodes.

Step 2 , Set a custom success / thank-you page

In ThriveCart, configure your product to redirect to a custom success page on your WordPress site after purchase. ThriveCart appends passthrough variables to the redirect URL automatically.

Example success page URL after order:

https://yoursite.com/thank-you/?gclid=abc123&fbclid=xyz789&utm_source=google&order_id=12345

Configure the success page under your ThriveCart product settings. See Setting your after order success / thank you page.

Step 3 , Trigger your webhook on the success page

On your WordPress thank-you page, add a script that merges URL parameters (from ThriveCart passthrough) with any remaining handl_utm cookie data, then sends everything to your webhook.

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 ThriveCart passthrough (from URL) with UTM Grabber cookie 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 follows the same pattern as our general guide: Triggering Zapier on Thank you Page.

Alternative , ThriveCart order webhook (no success page script)

Instead of a client-side script on your thank-you page, configure a ThriveCart webhook under Settings > API & Webhooks > Webhooks & Notifications. ThriveCart sends a POST on order.success that includes all passthrough variables you passed into checkout.

Point the webhook directly to Zapier's Catch Hook URL or Make's Custom Webhook module. Map fields like passthrough[gclid], passthrough[utm_source], customer email, and order total to your CRM.

This approach works on all ThriveCart plans , you do not need Pro+ for webhook-based attribution.

What data gets sent

Zapier / Make setup

  1. Ensure passthrough variables are reaching checkout (see Method 1 & 2)
  2. Create a Zap or Make scenario with Webhooks → Catch Hook (or use ThriveCart's native Zapier integration)
  3. Complete a test purchase and confirm all UTM / click ID fields arrive in the payload
  4. Map fields to HubSpot, Salesforce, Google Sheets, or your reporting tool

Why use this method?