Framer tracking

Framer Conversion Tracking: GA4, Google Ads & Meta CAPI Setup

This is for startups, SaaS teams and agencies who build their marketing site in Framer and send paid traffic to it. Framer sites navigate between pages without full reloads, and its forms finish on the same page, so standard tracking misses page views and leads. I install GTM properly, track every page and form submission, and add server-side events for the conversions you bid on.

Framer · Lead generation
  • Page views tracked across Framer's client-side navigation
  • Native Framer form submissions counted once, on success
  • Sign-up and demo clicks to your app tracked across domains
  • Server-side Meta CAPI and Google Ads enhanced conversions
Quick answer

Proper Framer tracking means adding GTM once in the site-wide custom code, sending a page view on every client-side route change, tracking native forms by their success state or redirect, and keeping Framer's preview and staging domains out of reports. Server-side GTM can add Meta CAPI events, using form webhooks or your app's sign-up data.

Tracking flow

How tracking works on Framer

The events I set up on Framer, and where each one is sent.

Why it breaks

Why Framer tracking goes wrong

Page changes without a reload

After the first page, Framer usually swaps pages in the browser instead of loading new ones. A GTM page-view trigger fires once, so GA4 and Meta miss most of the pages people visit.

Scripts that run twice

Framer's custom code can run once or on every page visit. Put a GTM or pixel snippet in the wrong mode, or in both site and page settings, and you get duplicate containers and doubled events.

Forms don't load a thank-you page

Native Framer forms show a success state on the same page unless you set a redirect. Click triggers on the submit button count failed and empty submissions as leads.

Staging domains in your data

Framer sites also live on a Framer subdomain, and custom code only runs on the published site, not the canvas preview. Without hostname rules, team tests on the Framer domain end up as conversions.

The real conversion is in your app

For SaaS sites, the sign-up or trial happens on app.yourdomain.com, not in Framer. Without cross-domain setup, Google Ads loses the click that started it.

What I set up

My Framer tracking setup

GTM & page views

  • GTM in the site-wide custom code, set to run once
  • Duplicate snippets removed from page settings and embeds
  • Page views on each client-side route change, without duplicates
  • Hostname rules for Framer's own domains
  • GA4 key events that match your funnel

Lead tracking

  • Native Framer form success tracked as a lead
  • Embedded tools such as Typeform, Tally or Calendly tracked through their own events
  • Demo, pricing and sign-up button clicks
  • UTMs and click IDs passed to forms and your app
  • Enhanced conversions for leads in Google Ads

App & cross-domain

  • Cross-domain tracking between Framer and your app domain
  • Sign-up and trial events from your app's dataLayer
  • Offline conversions for activated or paying accounts
  • Shared event IDs for browser and server copies

Server-side & consent

  • Server-side GTM on Stape or Google Cloud with a tracking subdomain
  • Meta Conversions API for leads and sign-ups
  • Form submissions sent server-side through a form webhook where available
  • Consent banner connected to Consent Mode v2
  • Live-site testing in Tag Assistant, GA4 DebugView and Events Manager
Event map

Events I track on Framer

EventWhen it firesSent to
page_viewFirst load and every client-side page changeGA4, Meta Pixel (PageView)
generate_lead / LeadFramer form shows its success state or redirectsGA4, Google Ads, Meta Pixel + CAPI
book_demo_clickClick on a demo or booking buttonGA4, Meta Pixel
book_appointment / ScheduleEmbedded scheduler confirms a bookingGA4, Google Ads, Meta
sign_up_clickClick through to your app's sign-up pageGA4
sign_up / CompleteRegistrationAccount created in your appGA4, Google Ads, Meta Pixel + CAPI
Process

How the setup works

  1. 01

    Audit

    I check custom code in site and page settings, embeds and any analytics already connected, and test what currently fires on your live domain.

  2. 02

    Plan

    We agree on the conversions that matter, such as a demo request, a booked call or a sign-up in your app, and how each should be valued.

  3. 03

    Build

    I set up GTM, route-change page views, form and click events, cross-domain tracking and, where it helps, server-side GTM.

  4. 04

    Publish and test

    Custom code only runs on the published site, so I publish and test real submissions on your live domain.

  5. 05

    Hand over

    You get an event map and notes on what to check when you add pages, forms or new embeds.

Page views on a Framer site

A Framer site loads the first page normally, then handles most clicks between pages in the browser. That makes the site feel fast, but it means the browser never reloads, so tags that fire on page load only fire once.

I track page views from the URL changes instead, using a history change trigger in GTM or a small script that pushes a page_view event to the dataLayer. Then I check GA4's enhanced measurement settings so page views aren't sent twice, and confirm in DebugView that each page appears once.

Framer forms and your app

Native Framer forms can show a success state or redirect to a page after submission. I track the success state directly, so only completed submissions count, or use a thank-you page if you'd rather. Where the form is sent to a webhook, that can also feed server-side GTM so Meta CAPI gets a server copy of the lead.

For SaaS sites, the most valuable conversion usually happens in your app. I set up cross-domain tracking so the visit continues from Framer into the app, and have the app push sign-up events, so Google Ads and Meta can credit the right campaign.

FAQ

Framer tracking FAQ

How do I add Google Tag Manager to Framer?

Add the GTM head snippet at the start of the head and the noscript snippet at the start of the body in the site-wide custom code settings, set to run once, then publish. Custom code doesn't run in the canvas preview.

Why does GA4 show so few page views on my Framer site?

Because Framer navigates between pages without full reloads, and a standard page-view trigger only fires on the first load. Send page views on route changes, and check that enhanced measurement doesn't duplicate them.

How do I track Framer form submissions in Google Ads?

Track the form's success state, or set a redirect to a thank-you page, and fire the Google Ads conversion from that event. Don't use a button click, as it counts failed submissions.

Can I send Meta Conversions API events from Framer?

Framer doesn't run server code, so I use server-side GTM on a subdomain of your domain. Browser events are forwarded there, and form webhooks or your app can send server copies with a shared event ID.

Can you track sign-ups that happen in my app, not in Framer?

Yes. I set up cross-domain tracking between the Framer site and your app, and work with your developers so the app pushes a sign-up event that GTM sends to GA4, Google Ads and Meta.

Guides

Read next

Meta Pixel vs Conversion API: Why You Need Both
Meta Ads & CAPI

Meta Pixel vs Conversion API: Why You Need Both

The Pixel tracks from the browser, the Conversion API from your server. Here is why the best Meta tracking setups run both, with shared event IDs.

6 min read · November 1, 2026

Want your Framer tracking fixed?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.