Source: https://measuremy.site/blog/how-to-add-analytics-to-a-framer-site

[measuremy.site](https://measuremy.site/) / [Blog](https://measuremy.site/blog)

# Adding Analytics to a Framer Site

October 22, 2026 · 4 min read

[Photo by Jakub Zerdzicki on Pexels](https://www.pexels.com/photo/hands-writing-notes-for-coding-project-at-desk-34212963/)

## What to track on a Framer site

A Framer site is published as pages with paths such as /pricing, /signup or /thank-you. The first measurements most small sites need are:

- pageviews per page
- where visitors came from
- clicks on buttons and links
- form submissions or signups
- campaign links with [UTM parameters](https://measuremy.site/blog/utm-tracking-explained)

Start with pageviews and traffic sources. Add click events or funnels later when you have a specific question to answer, such as why signups are low.

## Start with one site-wide snippet

Most external analytics tools give you a JavaScript snippet. Add it once in your Framer site settings, not on every page. A cookieless hosted tracker script may look like this:

```
<script defer src="https://a.measuremy.site/t.js" data-key="YOUR_KEY"></script>
```

Replace YOUR_KEY with the key from your analytics dashboard. The defer attribute tells the browser to load the script without blocking the page. If your analytics tool gives a different snippet, use that one and follow its own instructions.

## Where to put the snippet in Framer

In your Framer project, open site settings and find the custom code or analytics section. Paste the snippet into the site-wide head or end-of-body field. Save the change, then publish the site. Framer changes its settings layout from time to time, so check Framer's own documentation if you cannot find the field.

Do not put the snippet inside a single page's HTML embed unless you only want that page tracked. A site-wide field keeps counts consistent across the whole site. If custom code is not available in your project, check Framer's documentation or plan settings.

## Verify the tag is working

After publishing, open your site in a private or incognito window. Visit a page, click a link, then check your analytics dashboard for a visit. If no visit appears:

- make sure you published the site, not just previewed it
- confirm the key matches the one in your analytics account
- wait a few minutes for processing
- check that a browser extension or privacy setting is not blocking the script

You can also open your browser's developer tools, go to the Network tab, reload the page, and look for requests to your analytics domain. This shows whether the script loaded even if the dashboard has not updated yet.

## Track clicks on Framer buttons

Pageviews tell you which pages are popular. Clicks tell you whether people start the actions you care about, such as opening a pricing plan or starting a signup. Many analytics tools support [click tracking](https://measuremy.site/guides/funnels-and-click-tracking) with a data attribute on an element.

In Framer, adding a custom attribute depends on the component. Some components expose a custom attribute field. If not, you can use an HTML embed block for the button and add the attribute there. Check Framer's documentation for the current method. If click tracking is too fiddly, track the destination page instead. A visit to /signup or /thank-you is often enough for a small site.

## Handle Framer pages that change without reloading

Some Framer interactions load content without a full page load. If your analytics tool counts full page loads, test by navigating from one page to another and checking the dashboard. If a new pageview does not appear, check your analytics tool's documentation for single-page app or history-change tracking. This matters if your site uses overlays or internal navigation that changes content without changing the URL.

## Use page paths for funnels

Framer page slugs become paths in your analytics. A simple signup funnel might be:

- /pricing
- /signup
- /thank-you

If your analytics tool supports funnels, build one from those paths in the order visitors should take. That shows the biggest [drop-off](https://measuremy.site/blog/conversion-funnel-analysis) step without needing custom code on every page.

## Tag campaign links

For social posts, emails or ads, add [UTM parameters](https://measuremy.site/blog/what-is-the-urchin-tracking-module-and-why-utm-stuck-around) to the links you share. The analytics script captures them from the URL and credits the visit to that source. Keep a simple naming convention such as utm_source=newsletter, utm_medium=email and utm_campaign=launch. Do not put UTM tags on internal links between pages on your own site, because that can split the same visit into a new source.

## Avoid double counting

If Framer includes its own analytics and you also add an external script, you may see two sets of numbers. That is fine if you treat them as separate tools, but do not add two external pageview snippets unless you have a reason. Double counting makes every report harder to read.

## Privacy and consent

A cookieless script that does not store personal data keeps analytics simple, but privacy rules still depend on your location and your visitors. Check your own legal position before deciding what to disclose in a privacy policy.

## Keep the snippet when redesigning

If you rebuild sections or change pages, keep the site-wide snippet in settings. Do not remove it while testing because gaps make data hard to compare over time. If you move to a new analytics tool, verify the new snippet first, then remove the old one.

Adding analytics to a Framer site is mostly about pasting one site-wide snippet, publishing, and then testing in a private window. Once pageviews are working, add click events or funnels only for the decisions you actually need to make. That keeps the setup small and the reports easier to act on.

### See it on your own site

measuremy.site is cookieless analytics your coding agent can read. 30-day free trial, no card. Plans from $9/month.

[Start free trial](https://measuremy.site/login) [See the live demo](https://measuremy.site/share/measuremy.site)

Add measuremy.site analytics to this project: connect the measuremy.site MCP server at https://a.measuremy.site/mcp for all my projects (claude mcp add --scope user; it signs in with OAuth, no key, and one sign-in covers every site), then tell me how to sign in. Details: measuremy.site/llms.txt

## Free tools

- [Free UTM link builder](https://measuremy.site/tools/utm-link-builder): Add utm_source, medium and campaign to any link.
- [UTM link checker](https://measuremy.site/tools/utm-link-checker): Find broken UTM tags and see which GA4 channel a link lands in.
- [Link shortener with click tracking](https://measuremy.site/tools/link-shortener): Short links with a click count by day and country.

[All free tools](https://measuremy.site/tools)

## More from the blog

- [How to calculate your website conversion rate, and what to compare it to](https://measuremy.site/blog/calculate-website-conversion-rate)
- [Is my A/B test result significant? A plain-English guide with a worked example](https://measuremy.site/blog/is-my-ab-test-significant)
- [What is bounce rate, how is it calculated, and is yours a problem?](https://measuremy.site/blog/what-is-bounce-rate)
- [How to add a visitor counter to your website or GitHub README](https://measuremy.site/blog/add-visitor-counter-to-website)
- [How much traffic does a website get? How to estimate any site's visits](https://measuremy.site/blog/how-much-traffic-does-a-website-get)
- [How to track QR code scans: count them, and see which poster worked](https://measuremy.site/blog/track-qr-code-scans)
- [How to see how many people clicked your link (without a paid shortener)](https://measuremy.site/blog/how-many-people-clicked-my-link)
- [How to check if your Google Analytics 4 tag is installed (and only counting once)](https://measuremy.site/blog/check-if-ga4-is-installed)
- [Why GA4 shows your campaign traffic as Unassigned (and how to fix the links)](https://measuremy.site/blog/ga4-unassigned-traffic)
- [Does your redirect keep your UTM tags? How to check before a campaign goes out](https://measuremy.site/blog/redirect-drops-utm-tags)
- [How I built a self-hosted analytics MCP server on Cloudflare Workers and D1](https://measuremy.site/blog/analytics-mcp-server-cloudflare-workers)
- [UTM tracking explained: what the parameters mean and how to use them](https://measuremy.site/blog/utm-tracking-explained)
- [Conversion funnel analysis for small sites: a practical guide](https://measuremy.site/blog/conversion-funnel-analysis)
- [Sudden drop in website traffic? A checklist for finding the cause](https://measuremy.site/blog/sudden-drop-in-website-traffic)
- [What is an MCP server? A plain-English guide for people who run websites](https://measuremy.site/blog/what-is-an-mcp-server)
- [How to ask your coding agent about your analytics](https://measuremy.site/blog/how-to-ask-your-coding-agent-about-your-analytics)
- [What Is Bounce Rate and How Is It Calculated?](https://measuremy.site/blog/what-is-bounce-rate-and-how-is-it-calculated)
- [A practical website analytics retention policy](https://measuremy.site/blog/how-long-to-keep-website-analytics-data)
- [Map your site's funnel from first visit to signup](https://measuremy.site/blog/awareness-consideration-conversion-mapping-the-funnel-to-your-site)
- [What Is a Good Bounce Rate?](https://measuremy.site/blog/what-is-a-bounce-rate-and-what-is-a-good-one)
- [How to automate a weekly traffic report](https://measuremy.site/blog/how-to-automate-a-weekly-traffic-report)
- [A Practical Privacy-Friendly Analytics Checklist](https://measuremy.site/blog/privacy-friendly-analytics-checklist)
- [Adding an MCP server to Claude Code](https://measuremy.site/blog/how-to-add-an-mcp-server-to-claude-code)
- [How long should you keep analytics data?](https://measuremy.site/blog/how-long-should-you-keep-analytics-data)
- [How to Build a Small MCP Server That Actually Helps](https://measuremy.site/blog/how-to-build-your-own-mcp-server)
- [How to Find the Biggest Drop Off in a Funnel](https://measuremy.site/blog/how-to-find-the-biggest-drop-off-in-a-funnel)
- [What Is the Urchin Tracking Module?](https://measuremy.site/blog/what-is-the-urchin-tracking-module-and-why-utm-stuck-around)
- [What Microsoft MCP servers actually do](https://measuremy.site/blog/microsoft-mcp-servers-explained)
- [UTM parameters for email newsletters](https://measuremy.site/blog/utm-parameters-for-email-newsletters)
- [Track Button Clicks Without Google Tag Manager](https://measuremy.site/blog/how-to-track-clicks-on-a-button-without-google-tag-manager)
- [How to track the results of a social media post without cookies](https://measuremy.site/blog/how-to-measure-the-results-of-a-social-media-post)
- [How to track traffic from a GitHub README](https://measuremy.site/blog/how-to-track-traffic-from-a-github-readme)
- [How to measure a product launch without guessing](https://measuremy.site/blog/how-to-measure-a-product-launch)
