OptimizeLeads UTM Tracking Integration
Capture UTM parameters in OptimizeLeads opt-ins with HandL UTM Grabber so source, medium, campaign, click ID, and referrer data follow every lead.
- Capture UTMs in OptimizeLeads form with HandL UTM Grabber
- Send OptimizeLeads UTMs via Zapier or Webhook
Capture UTMs in OptimizeLeads form with HandL UTM Grabber
UTM attribution overview
This guide explains Capture UTMs in OptimizeLeads form 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.
Add the fields you would like to capture in Optimize Press
Don't worry if you can't make them hidden right now.
Add the following code in Footer in Tracking
<script>
var vars = ["utm_campaign","utm_medium","utm_source","utm_term","utm_content","gclid","handl_original_ref","handl_ip","fbclid","_fbc","_fbp","gaclientid","user_agent"]
for (v of vars){
document.querySelector("[placeholder='"+v+"']").style.display="none"
}
window.addEventListener('message', event => {
if (event.data.handl) {
merged = event.data
for (v of vars){
if (merged[v] != undefined){
console.log(v, merged[v])
var input = document.querySelector("[placeholder='"+v+"']")
input.value=merged[v]
input.setAttribute('value', input.value);
}
}
}
});
</script>
Edit the plugin file handl-utm-grabber.js:109
Inser the lines at 109
$('.optimize-leads-link-trigger').click(function(){
setTimeout(function(){
var merged = jQuery.extend( {'handl':true}, handl_utm )
var frames = document.getElementsByClassName("optimize-leads-frame")
for (frame of frames){
frame.contentWindow.postMessage(merged, '*');
}
}, 100)
})
Send OptimizeLeads UTMs via Zapier or Webhook
UTM attribution overview
This walkthrough covers sending full UTM Grabber data from OptimizeLeads 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 OptimizeLeads guide.
When a webhook makes sense
Native fields in OptimizeLeads 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
- Create a Catch Hook trigger and copy the URL
- Run a test conversion with UTMs in the landing URL
- Confirm gclid, utm_source, and email (if present) show up in the payload
- Map fields into your CRM or spreadsheet
Parameter reference: Native WP Shortcodes.
Make users: see Make Integromat integration.