Tutorial · 25 August 2026

Count a signup with cfa() — events are not billed

An open thank-you card on harbour paper, tied with lichen-green thread.

You wanted to know whether the form finished. You did not want a second line item on the invoice. Cookie Free Analytics goals are a name on the same beacon.

The client already sends an optional event name. Call cfa('signup') when the thank-you page loads. Match that name in Goals. Conversion is how many same-day visitors did it. Days cannot be joined — the HMAC salt is deleted at midnight — so “same-day” is the honest window.

Path plus event

A thank-you URL is a goal even without cfa(). An event is a goal even if the path is messy. Using both is how you survive a CMS that adds query strings. We allowlist only five UTM tags on the path; the rest is stripped. Put the signal in the event name or a clean path, not in a token in the URL.

Clicks are a second file

Outbound hosts, pdf/zip downloads, and buttons live in cf-clicks.js. The default script does not listen. Tick “also count clicks” if you want those named events. Still not billed. Still not a heatmap.

The steps

  1. 1

    Put a thank-you URL on the form

    After signup or checkout, send people to a stable path such as /thanks/signup or /thanks/paid. Cookie Free Analytics already uses those two for our own goals. Yours can be /thanks or /welcome — pick one path and keep it.

  2. 2

    Fire the event on that page

    On the thank-you page, call cfa('signup') after the snippet. The name is yours. Use the same string in Goals. The beacon is the same POST JSON as a pageview, with event_name set. No extra identity.

  3. 3

    Add the goal on the dashboard

    Open the site → Goals → +. Event name must match. You can also goal the thank-you path. Conversion is same-day visitors who did it, not a user journey.

  4. 4

    Ignore the volume for events

    Named events are not counted toward Starter or Growth pageviews. A signup is a signup. The volume wall is pageviews. Hobby is uncapped on pageviews.

Questions

Do I need cf-clicks.js for a signup?
No. cfa('signup') is in the default 1 KB script. cf-clicks.js is the opt-in file for outbound links, downloads, and buttons. Tick it in site settings if you want those, not for a thank-you event.
Is a goal a funnel?
No. A goal is one named event. Growth funnels chain two to eight steps (path or cfa event) on the same UTC day. Neither stitches identity across midnight. No session replay.

Goals · What the script sends · Our signup thank-you

All notes · How a visitor is counted