Fix guide · Framer · easy · about 20 min
Duplicate Meta Pixel events on Framer
For the finding “Duplicate Meta events”. Not on Framer? See the general guide.
What this means
The same event (for example PageView or Lead) was sent twice for the same pixel ID within about a second, or the same pixel was set up twice on the page. On Framer, this nearly always means the pixel is installed in two places.
Why it costs you money:
- Meta counts some conversions twice, so your reports look better than reality.
- Meta’s optimization learns from inflated data and may spend budget on the wrong people.
This is about two identical browser events. A browser event plus a server (Conversions API) event for the same action is expected; Meta merges those when they share an event ID.
How to confirm it yourself
- Open your published site in a private (incognito) window, open developer tools (F12), go to Network and filter by
facebook.com/tr. - Accept cookies.
- In each request’s payload,
idis the pixel ID andevis the event name. Two requests with the sameidand sameevat almost the same moment are a duplicate. Differentidvalues mean two different pixels, which is a separate question. - Click to another page of the site and watch again: each page change should produce one
PageViewper pixel ID, not two.
Meta Ads Data Advisor (Meta’s Chrome extension, formerly Meta Pixel Helper) reports “Duplicate Pixel code” as a common setup error, and the Test events tool in Meta Events Manager will show the event twice.
How to fix
-
Check every place a Framer site can load the pixel:
- Project Settings > Custom Code. Each piece of custom code is a separate script with its own placement and page selection, so check every script, including ones limited to selected pages. Look for
fbevents.jsandfbq('init'. - Embeds and code components on the canvas, including components bought from the marketplace.
- Plugins that add tracking (for example Pixelary or PixelFlow). These install a browser pixel for you; if you also pasted Meta’s base code, you have two.
- Your GTM container, whether GTM is loaded by Framer’s Cookie Banner or by a snippet in custom code.
- Project Settings > Custom Code. Each piece of custom code is a separate script with its own placement and page selection, so check every script, including ones limited to selected pages. Look for
-
Check that GTM is installed only once. Framer’s Cookie Banner loads GTM itself when its GTM ID property is filled in. If a GTM snippet is also pasted into custom code, remove that snippet. If you see
gtm.jsrequests for two different container IDs, check both containers: if each has a Meta tag, every event is sent twice. -
Keep one installation, remove the rest. If you use a tracking plugin or a Conversions API tool, the usual choice is to keep that and remove the manual base code from custom code and GTM. If you manage everything in GTM (for example together with Framer’s Cookie Banner), remove the pixel from custom code and from plugins.
-
Check how page views are sent. Framer switches between pages without a full page reload (the address changes through the browser’s History API). The Meta Pixel already sends a
PageViewby itself on these changes. A secondPageViewon every page change comes from something that sends it again, for example:- a GTM
PageViewtag on a History Change trigger; - a custom code script that calls
fbq('track', 'PageView')and is set to Run on every page visit.
Remove the extra one. Also check GTM for two tags sending the same event on overlapping triggers.
- a GTM
-
Publish the Framer site (and GTM, if you changed it).
Pixelary is built by the same team as IsPixelWorking. Our check treats every tool the same way: a duplicate is a duplicate, whichever tool caused it.
Common causes
- Meta’s base code is pasted into Framer’s custom code and a tracking plugin installs its own pixel.
- The pixel is in custom code and in GTM.
- Two GTM containers on the page both contain a Meta tag.
- A
PageViewtag or script runs on every page change, on top of the pixel’s own automaticPageView. - A template or marketplace component came with a pixel already embedded.
How to verify the fix
- In a private window on the published site, accept cookies and check that each event appears once per pixel ID: on page load, after clicking a button that sends an event, and after moving to another page.
- Re-run the check on IsPixelWorking. The issue should be gone.
Sources
- Framer Help, How to add custom code: https://www.framer.com/help/articles/how-to-add-custom-code/
- Framer Updates, Custom Code (scripts, “Once” and “On Every Page Visit”): https://www.framer.com/updates/custom-code
- Framer Academy, Add a fully functional Cookie Banner to your Framer site: https://www.framer.com/learn/cookie-banner/
- Framer Marketplace, Pixelary plugin: https://www.framer.com/marketplace/plugins/pixelary/
- Meta for Developers, Meta Pixel implementation for single page applications (automatic
PageViewon history changes): https://developers.facebook.com/docs/meta-pixel/implementation/tag_spa - Meta for Developers, Meta Ads Data Advisor (formerly Meta Pixel Helper; “Duplicate Pixel code”): https://developers.facebook.com/docs/meta-pixel/support/pixel-helper
- Meta Business Help Center, About Meta Ads Data Advisor: https://www.facebook.com/business/help/198406697184603
- IsPixelWorking live test, 2026-10-01: on published Framer sites (framer.com, superlist.com), clicking an internal link changed the URL with
history.pushStateand did not load a new document. On a site with the Cookie Banner and a GTM ID,gtm.jswas requested by Framer’s site script, with no GTM snippet in the page HTML.