Installing the OTTO Pixel is the first step to unlocking AI-powered SEO automation — but when it’s installed more than once, OTTO may:
Show “Duplicate Installation Detected” in Diagnostics
Fail to fully enable
Misread page state or slow down verification
The tricky part: you might not realize it’s installed twice (the plugin, GTM, theme code, etc.).
This guide explains exactly how to confirm, fix, and prevent duplicates across WordPress, Shopify, Wix, GTM, GoHighLevel, Webflow, Squarespace, custom sites, and more.
🔎 TL;DR — What “duplicate pixel” really means
🔎 TL;DR — What “duplicate pixel” really means
OTTO has detected multiple instances of the OTTO Pixel loading on your site.
Typically:
WordPress plugin + GTM + manual
<script>Script injected on multiple templates or pages
Apps, CDNs, or minifiers re-injecting the same script
OTTO needs one clean installation path and one UUID per project.
🧭 Quick path: How to confirm you have a duplicate
🧭 Quick path: How to confirm you have a duplicate
Use both of these methods:
1) Check the live HTML manually
Open your homepage in a browser (the same domain you configured in Search Atlas).
Right-click → View Page Source.
Press Ctrl+F (Windows) / Cmd+F (Mac) and search for:
sa-dynamic-optimization searchatlas data-uuid
Count how many times the OTTO script appears:
If you see two or more script blocks with the OTTO src/UUID →, you definitely have duplicates.
If you only see one, it may still be duplicated via GTM or apps → continue with method 2.
2) Confirm via OTTO Diagnostic (recommended)
Go to Search Atlas → AI SEO → All Sites.
Click on your site to open the OTTO SEO Automation dashboard.
Click Scan → Run Diagnostics.
OTTO will begin scanning your site for the installed Pixel.
During this stage, you’ll see the message:
“Running Diagnostics…
We’re checking the selected page for any OTTO implementation issues.
This might take a few seconds — hang tight!A detailed report will be ready shortly.”
Wait for the diagnostic to complete, then scroll through the results.If OTTO sees multiple instances, you’ll see a message like:
“Duplicate Installation Detected”
If you see that status, you can be sure OTTO is detecting more than one Pixel, and you should go ahead with the platform-specific fix.
🧰 Universal Fix Checklist (do this before you dive into platform specifics)
🧰 Universal Fix Checklist (do this before you dive into platform specifics)
Goal: keep one install method, remove everything else.
Choose ONE source of truth
WordPress plugin or
GTM or
Manual
<head>script orCMS global “Custom Code / Code Injection” or
GHL Global Section
Never mix methods (e.g., plugin + GTM + manual script).
Remove all other copies of the OTTO script
Delete extra
<script>tags from theme files, page builders, embeds, or extra sections.Remove GTM tags that inject OTTO if the plugin is your source.
Remove plugin / app embeds if GTM or manual script is the source.
Clear caches everywhere
Browser: hard reload (Ctrl+Shift+R / Cmd+Shift+R) or open in Incognito.
WordPress cache (via Search Atlas plugin):
WordPress → Search Atlas → Settings → Settings dropdown → Advanced → Error Logs → Clear All Cache Plugins.
Cache plugins / host: click “Purge / Clear All Cache” in WP Rocket, LiteSpeed, W3TC, host panel, etc.
CDN / WAF: e.g. Cloudflare → Caching → Purge Everything.
CMS publish: Shopify/Wix/Webflow/Squarespace → Save + Publish / Publish to domains.
Force OTTO to re-check
Search Atlas → AI SEO → All Sites → Select your site → Scan → Run Diagnostics.
Wait 3–5 minutes and refresh.
If the duplicate is fully resolved, the diagnostic will stop showing the “Duplicate Installation Detected” message.
🖥️ Platform-by-Platform Fix Playbooks
🟩 WordPress (Plugin vs GTM vs manual script)
🟩 WordPress (Plugin vs GTM vs manual script)
Most common root causes
OTTO installed via the Search Atlas plugin and via GTM or theme/header code.
Script added in
header.phporfunctions.phpplus plugin injection.Staging → production migration that left old code and the plugin active.
Cache/minification plugins cloning or delaying the script.
How to fix (plugin as source of truth — recommended)
Keep the Search Atlas WordPress plugin as the only OTTO source.
Remove any OTTO scripts from:
GTM tags
header.php,functions.php, or other theme files
In WordPress → Search Atlas → Settings:
Ensure Authentication Successful.
API Key, Plugin Auth Token, and OTTO Pixel UUID are populated.
Enable OTTO is toggled on.
Clear cache via:
Search Atlas → Settings → Settings dropdown → Advanced → Error Logs → Clear All Cache Plugins.
If GTM is your source of truth instead
In WordPress, disable OTTO features in the plugin or disconnect Pixel injection.
Remove any manual OTTO scripts from theme files.
In GTM:
Use one Custom HTML tag with the OTTO script.
Trigger: All Pages or Initialization – All Pages.
Advanced Settings: fire Once per page.
Publish the container.
Re-run OTTO Diagnostics.
🟨 Google Tag Manager (GTM)
🟨 Google Tag Manager (GTM)
Common root causes
Two GTM containers installed simultaneously.
OTTO script both in GTM and hard-coded in the theme.
Event-based firing or multiple triggers causing repeated loads.
How to fix
View Source → search for
googletagmanager.com/gtm.js?id=and confirm only one container ID.In GTM:
Use one Custom HTML tag for OTTO.
Trigger: All Pages (or Initialization – All Pages).
Advanced Settings → “Once per page”.
Remove any OTTO scripts hard-coded into templates.
Publish your GTM container.
Re-run OTTO Diagnostics and verify “Duplicate Installation” is gone.
🟦 GoHighLevel (GHL / Ideation)
🟦 GoHighLevel (GHL / Ideation)
Common root causes
Script added in a non-global section on multiple pages.
Script added inside several funnel steps or duplicated sites.
Fixing “Pixel not detected” by pasting the script everywhere instead of using a single Global Section.
How to fix
Remove OTTO code from individual pages and funnel steps.
Use one Custom Code element inside a Global Section in the header layout area (per the GHL OTTO guide).
Save and confirm “Apply to Global Section” in the modal.
Publish your changes.
Rerun Diagnostics.
🟪 Wix (Editor & Studio)
🟪 Wix (Editor & Studio)
Common root causes
Script applied only to a single page.
Script duplicated via Velo or custom masterPage.js.
Script in Custom Code + another copy inside a global section.
How to fix
Go to Settings → Custom Code → + Add Custom Code.
Paste your OTTO script:
Apply to: All Pages
Load code on: Each Page Load
Place code in: Head
Remove all other instances:
Page-level custom code
Velo injection
Global sections are duplicating the script
Publish the site.
Rerun Diagnostics.
🟥 Shopify
🟥 Shopify
Common root causes
Script added in
theme.liquid+ via app embeds or another app.Script added in multiple layout or section files.
The old theme still contains the Pixel, while the new one does as well.
How to fix
Shopify Admin → Online Store → Themes → Edit code.
Open layout/theme.liquid.
Search for your OTTO script/UUID.
Keep one script just above
</head>.Search the rest of your theme for duplicates (sections, snippets, app blocks).
Remove all extras.
Save, publish, and rerun Diagnostics.
🟫 Webflow, Squarespace, Blocs, “Custom Site”, etc.
🟫 Webflow, Squarespace, Blocs, “Custom Site”, etc.
Common root causes
Script added in multiple places:
Site Settings → Custom Code → Head
Page Settings → Custom Code
Embed elements
Certain builders misbehave when the script is literally the very first tag in
<head>.
How to fix
Keep one global installation only:
Webflow: Site Settings → Custom Code → Head Code.
Squarespace: Settings → Advanced → Code Injection → Header.
Custom: one global layout file
<head>.
Remove all page-level or block-level OTTO scripts.
If a builder is sensitive, move the script a few lines down in
<head>(after a meta or charset tag).Publish the site.
Rerun Diagnostics.
🧩 Edge cases you should also rule out
Staging and Production are both live and being crawled.
Multiple domains share the same codebase, each of which fires the Pixel.
Consent managers are injecting a second script after acceptance.
CDNs that “bundle” JS and end up duplicating code.
Two OTTO projects configured for the same domain (rare, but worth checking if nothing else explains it).
✅ Post-fix: How do you know you’re clean
Use these three checks:
1) DevTools → Network
Open browser DevTools → Network tab.
Reload the page.
Filter by your OTTO script URL or “searchatlas”.
You should see only one request.
2) View Source / Elements
Only one
<script id="sa-dynamic-optimization" ... data-uuid="YOUR-UUID">in the HTML.
3) OTTO Diagnostic in Search Atlas
AI SEO → All Sites → Select site → Scan → Run Diagnostics
Results should now show:
✅ Correct Installation (JS detected)
✅ No duplicate installation detected
✅ Fixes deployed / OTTO Enabled
If Diagnostics still says “Duplicate Installation Detected”, you still have more than one script source somewhere.
🛡️ Preventing duplicates (governance you can copy-paste into your internal SOPs)
Define a single “source of truth” for third-party scripts (e.g., “All tracking goes via GTM only” or “OTTO always via plugin only”).
Maintain a simple script registry: who added what, where, and why.
Lock GTM publishing or require approvals for changes in
<head>templates.Comment manual blocks with something like:
<!-- DO NOT DUPLICATE — OTTO Pixel lives here -->Add a QA step in every release:
DevTools → Network → confirm only one OTTO request
Run OTTO Diagnostic once after significant changes to the theme/structure.
A properly installed, single instance of the OTTO Pixel ensures your site is ready for automation. It unlocks accurate scanning, activates your Knowledge Graph, and enables OTTO to do what it’s best at—finding and fixing SEO problems in real time.
By following this guide, you’ll avoid the most common missteps we see across our support team and community. Whether you’re using GTM, a plugin, or manual code, remember: one method, one place, one clean load.
Still seeing issues? Run the OTTO Diagnostic, check your browser’s DevTools, and if needed, reach out with a link to your site and a screenshot of your script setup — we’re here to make sure your setup is clean, compliant, and ready for scale.
Welcome to smarter SEO.



