Funnel behaviour analytics + retargeting

Retarget on behaviour, not pageviews.

RetaFunnel records how people move through your landing pages, quizzes and VSLs: scroll depth, seconds of video, quiz answers, clicks, forms. Then it turns that behaviour into audiences and conversion events for Meta and Google, server-side.

  • One script tag, < 7 KB, zero dependencies
  • Hosted in Frankfurt
  • Works with any page builder or AI agent
Funnel · Spring VSL
last 7 days · 8,412 sessions
Landing
100%
VSL started
−28%
72%
VSL ≥ 50%
−31%
41%
Opt-in
−23%
18%
Call booked
−12%
6%
Segment · VSL ≥ 50%, no opt-in
synced
max_video_pct ≥ 50 and is_lead = false · window 30d
→ Meta audience Seg_VSL50_NoLead
1,240
people · 4 min ago
VSL retention · vsl_main
still watchingCTA appears
10066330 0:002:305:007:3010:00 50% · 41% watching

01 How it works

Install once. See what people do. Act on it.

No tag manager, no event plan, no data layer. The tracker infers the funnel from the page: videos, quiz steps, forms and buttons are picked up automatically or marked with one attribute.

1

Install, or let your AI agent install

Paste one script tag, or give your agent the connect link. It adds the tag, marks every CTA, video and form, and verifies each event in test mode.

<!-- that is the whole install --> <script src="https://t.retafunnel.com/rf.js" data-site="SITE_KEY" defer></script>
2

See behaviour, not just hits

Scroll depth, seconds watched on HTML5, Vimeo and YouTube players, quiz steps and answers, clicks, active time, forms, bookings and purchases, per session and per person.

-- one wide row per session max_scroll_pct 75 max_video_pct 58 quiz_last_step 4 / 7 clicked cta_hero, cta_pricing is_lead false
3

Retarget and attribute

Describe a segment in behaviour terms. RetaFunnel syncs it to Meta and Google as an audience or conversion event, and ties later sales back to the ad that started it.

-- segment rule all: [ max_video_pct >= 50, is_lead = false ] sync: meta.capi Seg_VSL50_NoLead google.customer_match

02 Product

Everything a direct-response funnel needs, nothing a BI team needs.

Built for landing pages, quizzes, VSLs and lead forms, where the question is never "how many pageviews" but "who watched enough to be worth a second ad".

Behaviour tracking

Scroll milestones, video milestones on HTML5, Vimeo and YouTube, quiz steps and answers, clicks, active time, form start and submit, Calendly bookings, purchases.

tracker 6.5 KB gzipped · 0 dependencies

Behaviour segments

Any combination of what people did, over sessions, visitors or identified persons. Templates for the usual suspects: VSL 25/50/75% non-leads, quiz abandoners by step, high-intent non-converters.

max_video_pct >= 50 and is_lead = false

Meta and Google sync

Each segment becomes a Conversions API event for anonymous visitors and a Custom Audience or Customer Match list for identified people. Standard Lead, Schedule and Purchase events go server-side too.

capi · custom audiences · offline conversions

Ads breakdown with names

Campaign, ad set and ad, with the names pulled from Meta and Google, next to spend, cost per lead, ROAS and the behaviour metrics for the traffic each one sent.

level = campaign | adset | ad

Sales attribution for lead-form funnels

Hidden fields carry the visitor id into your CRM. Sales come back by webhook (Stripe, Calendly, any CRM or Zapier), CSV import or by hand. First-touch, last-touch and linear models over windows up to 180 days, with a touch timeline per lead.

first_touch · last_touch · linear · window ≤ 180d

Experiments

A variant from the URL, the script tag or one call. Every report filters by variant; the experiment page shows lead rate, revenue, uplift and a two-proportion p-value.

?variant=B · z-test p-value

Scroll heatmaps and comparison

Reach per 5% band of the page, two funnels or two pages side by side, and every chart with the previous period ghosted behind it.

compare=previous · 5% bands

Pre-launch checklist and templates

Launch is enabled when the tracker is live, every step is registered, a test session passed and test mode is off. Start from VSL, quiz, lead-form, webinar or checkout templates.

launch_funnel · checklist 7/7

Annotations

Markers on every time chart for page changes, campaigns and incidents. Written automatically when a funnel launches, an experiment starts or a page is re-instrumented.

kind = note | page_change | campaign | experiment

03 Built for AI agents

Your agent builds the page. It should instrument it too.

RetaFunnel ships an MCP server with 51 tools and 6 resources. Paste one line into Claude Code, Cursor or any MCP client: the agent creates the site and funnel, edits the HTML so every element is tracked, verifies each event in test mode, creates the default retargeting segments and launches. No dashboard clicks.

  • Deterministic instrumentation. instrument_html applies rules, not a model call, so the markup is predictable and lintable.
  • Proof before launch. Expected events versus received, per CTA, scroll band, video milestone and quiz step.
  • Scoped tokens. Per-workspace connect links with setup, read or write scopes, revocable, every call logged.
51
MCP tools
6
resources
1
line to paste

04 Sales attribution

The sale happens three weeks later, in a different tool. Keep the thread.

Lead-form funnels lose the story the moment the form is submitted. RetaFunnel fills hidden fields with the visitor id and attribution, matches later sales by hashed email or phone, and attributes revenue back to the sessions and ads that led there.

  • Three ways in. Webhooks from Stripe, Calendly or any CRM, CSV import with matched and unmatched rows, or mark a sale by hand on the Leads page.
  • Three models. First touch, last touch and linear, over the person's sessions, up to 180 days.
  • Back to the platforms. Imported sales are sent as Meta Purchase events and Google offline conversions, which is the part that actually changes delivery.
MR
Lead · m…@…it
sha256 9f1c…e2a0 · 3 sessions
customer · €1,900
  1. MAR 03 · 21:14
    Meta ad click
    Spring VSL / Lookalike 1% / Ad 3
    fbc captured
  2. MAR 03 · 21:31
    Watched VSL to 68%
    scrolled 75%, clicked cta_pricing, left without opting in
  3. MAR 09 · 09:02
    Google search, booked call
    brand query · gclid · form with hidden fs_visitor_id
  4. MAR 21 · 16:40
    Purchase €1,900
    Stripe webhook, matched on email hash
    → Meta Purchase · Google offline conv.
First touch
€1,900
Last touch
€1,900
Linear
€950 / €950

05 Test mode and privacy

Prove every event before launch. Keep the data in Europe.

Test mode

Test data never touches live reports or ad syncs.

Flag a session with ?_rf_test=1, a data-test attribute, or switch the whole site into test mode for 30 minutes and click through the funnel yourself. Test rows are isolated at ingest, excluded from every report, segment refresh and Meta or Google sync, and purged after 7 days.

pageview + attributionreceived
scroll 25 / 50 / 75 / 1004 / 4
video vsl_main 10 → 1006 / 6
click cta_footermissing · fix suggested
form_submit + identifyreceived

Privacy

EU hosting, consent modes per site and page, hashed identifiers.

Data lives in Frankfurt. Each site picks a consent level, auto, implied or strict, and any page can override it. Emails and phones are hashed with SHA-256 before storage, IPs truncated to /24, and every workspace sets its own retention. A deletion endpoint cascades through sessions, persons and synced audiences.

Region
Frankfurt (EU)
Consent modes
auto · implied · strict
Identifiers
SHA-256 hashed
Retention
per workspace
  • Works with Cookiebot, Iubenda and Complianz consent signals, or fs.consent().
  • Runs on Cloudflare and Supabase; Workers-compatible code checked on every deploy.

06 Pricing

Priced on sessions. Every feature on every plan.

A session is one visit to one of your sites, up to 30 minutes of inactivity. Test sessions are never counted.

Starter
€49 / month
up to 50,000 sessions / month
  • Unlimited sites and funnels
  • Behaviour segments, Meta and Google sync
  • Sales attribution, experiments, heatmaps
  • MCP server and REST API
  • 1 workspace
Start free
Scale
Contact
above 500,000 sessions / month
  • Everything in Growth
  • Volume pricing and annual terms
  • Dedicated ingest capacity
  • Unlimited workspaces
  • Onboarding for your agency or team
Talk to us

All plans: data hosted in the EU (Frankfurt), consent modes per site and page, hashed identifiers and per-workspace retention. Prices exclude VAT.

07 Questions

Things people ask before installing.

Does it replace the Meta pixel or Google tag?

No. Keep them for standard events if you like. RetaFunnel reads the existing _fbp and _fbc cookies when a pixel is present, sends its own events server-side through the Conversions API and deduplicates with event_id. What it adds is the behaviour layer: audiences built from what people watched, scrolled, answered and clicked.

What does the tracker do to page speed?

The script is 6.5 KB gzipped with no dependencies and loads with defer. It batches events every 5 seconds and on exit via sendBeacon, so a typical session produces three to five small requests. Video player APIs are loaded only when a Vimeo or YouTube embed is on the page.

How does it know what a quiz step or a CTA is?

Buttons, links, forms and videos are detected automatically and named from their id or text. For precise names you add one attribute: data-track="cta_hero", data-quiz-step="3", data-video-id="vsl_main". An AI agent using the MCP server adds these for you and validates the page.

Can I retarget people who never gave an email?

Yes. For anonymous visitors each synced segment fires a Conversions API event named after it, with fbp, fbc, client IP and user agent. In Meta you build a Website Custom Audience on that event. Identified people are added to Custom Audiences and Google Customer Match lists by hashed email or phone.

Where is the data stored and how is consent handled?

In Frankfurt, on Supabase, behind Cloudflare Workers. Each site chooses a consent level: auto measures the session anonymously until consent is granted and then upgrades it in place, implied tracks from the first pageview, strict sends nothing until consent. Any page can override the site default. Identifiers are hashed, IPs truncated, retention is yours to set.

Which tools can connect through MCP?

Any MCP-capable client: Claude Code, Claude Desktop, Cursor or your own agents. The server speaks Streamable HTTP and ships a stdio wrapper for local use. Its instructions and an onboarding://start resource tell the agent the exact procedure, so it does not need to know the product beforehand.

Your next ad should know what the last one did.

Install in a minute, or hand the connect link to your agent. Free to start, test mode included, data in the EU.

<script src="https://t.retafunnel.com/rf.js" data-site="SITE_KEY" defer></script>