Start free

WordPress, Shopify, Webflow and Framer

Add quietstats to your site builder in about a minute. Every option adds the same tiny, cookie-free script as the install guide; your site ID is in Your sites › Manage › Install (the id="…" in your script).

No cookies, nothing stored on your visitors’ devices. None of these add a cookie banner requirement for quietstats. Visits from you while editing (WordPress logged-in editors if you tick the box, the Shopify theme editor) aren’t counted.

WordPress plugin

⤓ Download the WordPress plugin v1.0.0 · 4.2 KB · zip

  1. In wp-admin, go to Plugins › Add New › Upload Plugin, choose quietstats-wordpress.zip, then Install Now and Activate.
  2. Open Settings › quietstats and paste your site ID. Save.
  3. Optional: tick Count outbound links, file downloads and custom events, Also count button and link clicks, or Don’t count visits from logged-in editors and admins.
  4. If you use a caching plugin (WP Rocket, LiteSpeed, SiteGround Optimizer…), clear its cache once.

The plugin prints one <script> tag in <head>. It sets no cookies, stores nothing about visitors in WordPress, makes no requests from your server and deletes its one setting when you uninstall it. Serving the script from your own domain? Put that address in Script host (own-domain guide). SHA-256 66612ccbf59317f5….

Shopify

Theme snippet (any theme, no app needed)

  1. Online Store › Themes › ⋯ next to your live theme › Edit code.
  2. Under Snippets, Add a new snippet named quietstats and paste:
{%- comment -%}
  quietstats: cookie-free analytics for Shopify (theme snippet).
  1. Online Store → Themes → … → Edit code → Snippets → Add a new snippet called "quietstats", paste this file.
  2. In layout/theme.liquid, just before </head>, add:  {% render 'quietstats', site_id: 'YOUR_SITE_ID' %}
  The tag sets no cookies and is skipped in the theme editor and preview so your own editing isn't counted.
{%- endcomment -%}
{%- assign qs_host = qs_host | default: 'https://quietstats.co.uk' -%}
{%- unless request.design_mode or site_id == blank -%}
<script data-host="{{ qs_host | escape }}" data-dnt="true" src="{{ qs_host | escape }}/js/script.js" id="{{ site_id | escape }}" async defer></script>
{%- endunless -%}
  1. Open layout/theme.liquid and paste this just before </head>, with your site ID. Save.
{% render 'quietstats', site_id: 'YOUR_SITE_ID' %}

Shopify doesn’t run theme code on checkout pages. To count orders, make a goal for your thank-you page or send totals from your server with the conversions API.

App embed (coming with the quietstats Shopify app)

With the app installed you’ll switch quietstats on under Customize › App embeds and paste your site ID: no code. The theme app extension is ready (source zip, 1.0 KB); the app listing isn’t published yet, so use the snippet above for now.

Webflow

  1. Site settings › Custom code › Head code. Paste your script:
<script data-host="https://quietstats.co.uk" data-dnt="true" src="https://quietstats.co.uk/js/script.js" id="YOUR_SITE_ID" async defer></script>
  1. Save changes, then Publish. Custom code needs a paid Webflow Site plan.

Count a button or form submit: load events.js instead of script.js and, in the element’s settings, add the custom attribute data-qs-event with a name such as Signup (and optionally data-qs-prop). Outbound links and file downloads are counted when the tag has data-auto:

<script data-host="https://quietstats.co.uk" data-dnt="true" data-auto src="https://quietstats.co.uk/js/events.js" id="YOUR_SITE_ID" async defer></script>

Framer

  1. Site Settings › General › Custom Code.
  2. Paste your script into End of <head> tag and Publish. Page changes in Framer are tracked automatically.

Or the quietstats code component

In Framer: Assets › Code › New code file, name it Quietstats, paste this, then drop the component once on your pages (for example in a shared nav) and set Site ID in its properties. It adds the script once and renders nothing.

// quietstats code component for Framer (QS-084). Cookie-free analytics.
// Recommended install is Site Settings → General → Custom Code → "End of <head> tag" with your script.
// Use this component instead if you prefer: drop it on any page (or your shared nav/footer) once and set the Site ID.
import { useEffect } from "react"
import { addPropertyControls, ControlType } from "framer"

const HOST = "https://quietstats.co.uk"

/**
 * @framerSupportedLayoutWidth any
 * @framerSupportedLayoutHeight any
 */
export default function Quietstats(props: { siteId: string; events: boolean }) {
    useEffect(() => {
        const id = String(props.siteId || "").trim().toLowerCase()
        if (!/^[a-f0-9]{6,32}$/.test(id) || typeof document === "undefined") return
        if (document.getElementById(id)) return // already on the page (custom code or another instance)
        const s = document.createElement("script")
        s.id = id
        s.async = true
        s.defer = true
        s.src = HOST + (props.events ? "/js/events.js" : "/js/script.js")
        s.setAttribute("data-host", HOST)
        s.setAttribute("data-dnt", "true")
        if (props.events) { s.setAttribute("data-auto", ""); s.setAttribute("data-clicks", "") }
        document.head.appendChild(s)
    }, [props.siteId, props.events])
    return null
}

addPropertyControls(Quietstats, {
    siteId: { type: ControlType.String, title: "Site ID", placeholder: "from Manage site → Install" },
    events: { type: ControlType.Boolean, title: "Clicks + downloads", defaultValue: false },
})

Check it’s working

Open your site in a normal browser window (not one with Do Not Track or Global Privacy Control on), then look at your dashboard or press Check install on Manage site. Visits show within a few seconds.