Install the tag
Everything Tiny Funnel records comes from one script tag. There is no SDK, nothing to npm install, and no build step.
1. Paste the snippet
Open your funnel, then the Install panel, and copy the snippet. It looks like this, with your own funnel id:
<script async src="https://tiny-funnel.com/tf.js" data-funnel-id="tf_YOUR_FUNNEL_ID"></script>
Put it in your site's <head>, on every page in the funnel. It is async, so it never blocks your page.
If you would rather not go hunting for your layout file, the panel has buttons that hand the snippet to Claude or ChatGPT with the request already written.
2. Allow your domain
A funnel only accepts hits from domains you have listed, so add the site you pasted the snippet into. Anyone can point a script tag at a funnel id, and this is what stops somebody else's traffic landing in your numbers.
List every domain the funnel runs across, marketing site and app both. Domains on one funnel also share visitor identity, which is what lets a journey carry across them.
3. Check it arrived
The Install panel shows what it is seeing: whether hits are arriving, and any requests refused because they came from a host that is not on the list. A rejected origin there is usually a domain you meant to add.
Click capture
Click capture is off until you turn it on, with the switch on the same panel. With it on, Tiny Funnel records clicks on interactive elements only: buttons, links and form controls, never prose or containers. Typed values are never captured, query strings and fragments are stripped from captured links, and any element carrying data-tf-private (or sitting inside one) is skipped.
It is worth turning on. Clicks are what make a stalled journey readable: you can see what somebody reached for, not just which pages they got to.
Single-page apps
Nothing extra to do. The script watches for history changes, so a route change in your app is recorded as a page view like any other.
What to do next
- Record a funnel by clicking through your own site
- Send events from your backend for conversions that finish outside the browser