In almost all cases, this comes down to something in how the script was installed on your site — not an issue on our end. Setup and installation of the tracking script are fully managed by you; our team isn't able to access or troubleshoot the technical implementation on your website. The steps below will help you find and fix the issue yourself.
Run a quick diagnostic check
Open your browser's developer console (F12 → Console tab) on your website and paste this:
(function(){var c=typeof cbq==='function',f=typeof fbq==='function',x=typeof xbq==='function',h=null,id=null;document.querySelectorAll('script').forEach(function(s){var t=s.textContent||'';var m=t.match(/cbq\(['"]setHost['"],\s*'"['"]\)/);if(m)h=m[1];var p=t.match(/cbq\(['"]init['"],\s*'"['"]\)/);if(p)id=p[1]});if(!h&&c&&cbq.queue){cbq.queue.forEach(function(a){if(a[0]==='setHost')h=a[1];if(a[0]==='init'&&!id)id=a[1]})}console.log('%cSignals Gateway Check','font-weight:bold;font-size:14px');console.log('cbq loaded:',c?'YES':'NO');console.log('fbq loaded:',f?'YES':'NO');console.log('wrapper active (xbq):',x?'YES':'NO');console.log('tracking host:',h||'NOT FOUND');console.log('pixel id:',id||'NOT FOUND');if(h){var sdk=performance.getEntriesByType('resource').some(function(r){return r.name.indexOf(h+'/sdk/')===0});console.log('events.js loaded:',sdk?'YES':'NO');var img=new Image();img.onload=img.onerror=function(){console.log('tracking domain:','REACHABLE')};setTimeout(function(){if(!img.complete)console.log('tracking domain:','TIMEOUT - check DNS')},5000);img.src=h+'/favicon.ico?t='+Date.now()}else{console.log('tracking domain:','CANNOT CHECK (no host found)')}})();
What the results mean
Output | What it means | What to do |
| The script isn't actually on the page, even if you added it | Re-check where the code was placed — see Where the code needs to go below |
| Script is present but incomplete, or blocked by a cookie consent tool | Try again after accepting cookies on the page |
| The script didn't load from your tracking domain | |
| Your tracking domain isn't resolving | Same as above — this is a DNS issue |
Everything shows | The script is working correctly | See Still not resolved below |
Where the code needs to go
The most common reason code "added to the head" still doesn't fire:
It needs to sit directly in your site's
<head>HTML — not inside a tag manager container, a CMS "custom code" block that only loads conditionally, or a section/template partial that doesn't render on every page.If you're using a tag manager (like Google Tag Manager), the tag needs to fire on All Pages with high priority, and shouldn't be gated behind a cookie consent trigger.
To confirm it actually rendered: right-click your site → View Page Source (not Inspect) and search for cbq('setHost'. If you don't see it there, the code isn't loading — even if it's saved in your CMS or theme editor.
Check for a script conflict
A common cause when the code is installed correctly but events still don't come through is a conflict with another script on your site — most often a duplicate Meta pixel.
In your page source (right-click → View Page Source), search for:
A second instance of
connect.facebook.net/en_US/fbevents.jsoutside our snippet — this means you have a duplicate Meta pixel installedMore than one instance of
cbq(— there should only be one
In the browser console, check:
typeof xbq— should return'function'. If it returns'undefined', something re-declared the Meta pixel after our snippet loadedAny red errors mentioning
cbq,fbq, or your tracking domain
What you see | Likely cause | What to do |
| A duplicate, standalone Meta pixel is overriding our script | Remove the standalone Meta pixel — our snippet already includes Meta pixel functionality |
| A cookie consent tool (OneTrust, Cookiebot, etc.) is blocking it until visitors accept cookies | Test again after accepting cookies |
| An ad blocker or privacy extension may be blocking the request | This only affects those individual visitors — there's no workaround |
Console error: | The snippet loaded asynchronously via a tag manager and fired before it was ready | Make sure it fires on All Pages with high priority, not gated behind a consent trigger |
Still not resolved
Since setup is self-managed, we're not able to debug your site's code directly — but if you've worked through the steps above and are still stuck, contact support with:
Your tracking domain settings
A screenshot of the diagnostic output from the console script above
We'll do our best to point you in the right direction based on what the diagnostic shows.
