Microsoft Advertising (UET) GoHighLevel Survey Completed Event Tracking for GoHighLevel
Quick answer: Select Microsoft Advertising (UET) and the GoHighLevel Survey Completed event in the free container builder wizard, enter your tracking ID, then import the generated file into Google Tag Manager - the trigger is wired up automatically, no manual setup required.
Configure the GoHighLevel Survey Completed event so Microsoft Advertising (UET) fires correctly on your GoHighLevel store, then generate an importable Google Tag Manager container - no manual tag, trigger, or variable setup required.
Generate my Microsoft Advertising (UET) GoHighLevel Survey Completed container →
How it works
- Open the container builder with Microsoft Advertising (UET) and the GoHighLevel Survey Completed event already selected.
- Enter your tracking ID/pixel credentials for this platform.
- Generate and download the GTM container JSON file.
- In Google Tag Manager: Admin > Import Container > choose the file > Merge into a new workspace, then verify in Preview mode before publishing.
Track GoHighLevel Survey Completed with other platforms
- Track GoHighLevel Survey Completed with Google Analytics 4
- Track GoHighLevel Survey Completed with Google Ads
- Track GoHighLevel Survey Completed with Meta Pixel
- Track GoHighLevel Survey Completed with TikTok Pixel
- Track GoHighLevel Survey Completed with Pinterest Tag
- Track GoHighLevel Survey Completed with LinkedIn Insight Tag
- Track GoHighLevel Survey Completed with X (Twitter) Pixel
How this event is built in your container
GoHighLevel Survey Completed is detected automatically. GoHighLevel surveys are embedded as iframes just like forms. This bridge listens for window messages from HighLevel-owned domains and matches a survey-completed payload.
This container includes a small Custom HTML tag, firing on All Pages, that listens for that native event and pushes dataLayer.push({ event: 'ghl_survey_submission', ... }) itself - unlike this plugin's other events, there's no code for you to add manually.
For this to work, though:
- A native GoHighLevel survey embedded on a page that has your GTM container snippet installed.
For reference, here is the exact script this container's bridge tag runs:
(function(){
if (window.__gtmcbGhlSurveySubmission) { return; }
window.__gtmcbGhlSurveySubmission = true;
var trusted = ['leadconnectorhq.com','msgsndr.com','gohighlevel.com','highlevel.com','myfunnels.com'];
var pattern = /survey[-_ ]?(submit|submitted|complete|completed|finished)|(submit|complete|completed)[-_ ]?survey/;
var lastFired = 0;
function isTrusted(origin) {
try {
var host = new URL(origin).hostname;
return trusted.some(function (s) { return host === s || host.slice(-(s.length + 1)) === '.' + s; });
} catch (e) { return false; }
}
function flatten(data) {
if (typeof data === 'string') { return data; }
try { return JSON.stringify(data); } catch (e) { return ''; }
}
window.addEventListener('message', function (event) {
if (!isTrusted(event.origin)) { return; }
var payload = event.data;
var flat = flatten(payload).toLowerCase();
if (!flat || !pattern.test(flat)) { return; }
var now = Date.now();
if (now - lastFired < 1500) { return; }
lastFired = now;
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'ghl_survey_submission'
});
});
})();The Microsoft Advertising (UET) tag itself is added automatically and wired to this trigger - you won't need to create or configure it by hand in GTM.
Troubleshooting
The event never fires.
Log window message events in the browser console while finishing the survey and compare the payload with the pattern in this bridge tag - HighLevel's message wording isn't a documented contract and can change. Adjust the regular expression in the tag to match what you see.
Surveys fire the form event instead.
If HighLevel sends the same message for forms and surveys on your account, select only one of the two events to avoid double-counting.
The event fires, but values show up blank or undefined.
Check that the pushed object's key names match exactly (case-sensitive) - a mismatched key like "Value" instead of "value" will show as undefined in GTM's variable preview.
GoHighLevel Survey Completed fires twice for the same action.
You likely also have a manually-added Microsoft Advertising (UET) snippet listening for the same action alongside this container's own bridge tag. Remove the manual one, or disable it, before publishing.
Frequently asked questions
What triggers the GoHighLevel Survey Completed event?
It's detected automatically - GoHighLevel surveys are embedded as iframes just like forms. This bridge listens for window messages from HighLevel-owned domains and matches a survey-completed payload.. This container includes a ready-made bridge tag for it, so there's nothing to configure manually.
Why should I track GoHighLevel Survey Completed with Microsoft Advertising (UET) specifically?
It shows engagement further up the funnel, which Microsoft Advertising (UET) can use to build audiences and understand what leads to a purchase, even before the sale happens.
Is this free to set up?
Yes - the free tier covers 1 tracking platform at a time. If you need this event across several platforms in one container, unlocking full access covers all of them together.
Will this conflict with Microsoft Advertising (UET) code I already added manually?
It can, if the same event fires twice from two separate sources. Remove any manually-added Microsoft Advertising (UET) tag for this event before importing the generated container, or use GTM's Preview mode to confirm it only fires once.
How long does setup take?
A few minutes - select Microsoft Advertising (UET) and the GoHighLevel Survey Completed event in the wizard, enter your tracking ID, download the container, and import it into GTM.
Do I need to add any code to my site for GoHighLevel Survey Completed?
No. Unlike most events in this wizard, this one ships its own small Custom HTML tag inside the container itself that detects the submission and pushes it to the dataLayer - there's no snippet to paste into your theme or a code snippets plugin.
Are there any conditions for this to actually work?
A native GoHighLevel survey embedded on a page that has your GTM container snippet installed.