Cohort study · 335 new users · March 1 – 31, 2026

The register form
is the new front door.

A SaaS conversion review of every Rating Captain Local signup in March 2026, stitched together from production database, Pipedrive, GA4 (RATING LOCAL SEO), Sentry (rc-local) and Microsoft Clarity. The biggest leak isn't onboarding anymore — 921 visitors started the registration form and only 117 submitted it (12.7%). For the 335 that did sign up: 47% finish onboarding, 28% engage in-app, 17% come back tomorrow, 3.3% ever pay.

Cohort: 335 new users — incl. 14 coworkers, 1 soft-deleted Period: 2026-03-01 → 2026-04-01 Sources: google_profiles.users, user_usages, locations, keywords, subscriptions / Pipedrive pipeline 21 / GA4 396020608 / Sentry rc-local / Clarity
Signed up
335
14 coworkers · 1 deleted
Register form submit rate
12.7% 117/921
▼ 804 abandoned (GA4)
Finished onboarding
157 46.9%
▼ 178 dropped
Has GBP location
191 57.0%
85% connect Google · 28pt loss
Reached "aha moment"
127 37.9%
tracking ≥1 keyword
Returned after day 0
57 17.0%
83% never log in again
Finished guided tour
1 0.3%
single Spanish user
Trial → Paid
11 3.3%
target ≥ 5% — 1.5× gap
Active Stripe subs
8 2.4%
8 active · 3 churned/expired

01The conversion funnel

Each row is a step from the user's perspective. The bar shows what fraction of signups got there (so the marketing-side rows above 100% are unique visitors / form attempts). The drop between consecutive bars is where the user gave up or got blocked.

1. Visit /register page (GA4: 657 unique users)
657
196%
2. Started the register form (GA4 form_start, multi-session)
921
275%
3. Submitted the register form (GA4 form_submit · 12.7% of starts)
117
35%
4. Account created (DB row)
335
100%
5. Connected Google account (users.google_id set)
286
85.4%
6. Pulled in a GBP location
191
57.0%
7. Onboarding marked finished
157
46.9%
8. Tracking a keyword (the "aha moment" — auto-seeded on Google connect; incl. 2 coworkers)
127
37.9%
9. Did anything in-app at all (reply / post / scan / refresh)
95
28.4%
10. Came back any later day
57
17.0%
11. Came back D2–D7 (week-1 retention)
47
14.0%
12. Came back W2–W4
16
4.8%
13. Finished guided tour
1
0.3%
14. Ever started a Stripe subscription (active or churned)
11
3.3%
15. Currently paying (active Stripe sub)
8
2.4%

02Where they fall off — and what was happening on the screen

Step transitionPass-throughLost
Register form started → submitted12.7%−804
Form submitted → Account created (Google OAuth bypass)286%*+218
Account → Connected Google85.4%−49
Connected Google → Has GBP location66.8%−95
Has location → Tracking a keyword66.5%−64
Tracking keyword → Did any in-app action74.8%−32
Did action → Returned after D060.0%−38
Returned → Started Stripe sub19.3%−46
Started sub → Still paying today72.7%−3

*Form submission < account count because Google-OAuth signups skip the form entirely. The real signal is the 12.7% form completion — 88% of people who start the form never finish it.

Three kill-zones

Kill-zone 1 · NEW The register form itself: 921 starts → 117 submits. 87% abandon mid-form. Clarity logs 39 Cloudflare Turnstile error 300030 events on registration — captcha is silently failing on a meaningful slice.

Kill-zone 2 Polish onboarding completion: 26.4% (39/148) vs English 63.2% (108/171) — a 36.8-point gap on the home market. Worse than Mar–Apr (21pt). Either translation is degraded or PL users are hitting a step EN users skip.

Kill-zone 3 Connected Google → has location: 286 → 191 (28pt loss). 95 users complete Google OAuth but never select a GBP profile — likely the SelectLocation.vue Sentry crash (scrollToItem on null) is taking out the picker.

Activation isn't sticky 127 users tracking a keyword → 95 acted → 57 returned. Only 45% of "activated" users return next day — keywords were auto-seeded, never investigated.

03Drop-off vs. signups, by week

Signed up Finished onboarding Did any in-app action Returned after day 0

Signup volume is steady (~75/week) — but the gap between signups and "did anything in-app" is consistent at ~70% every week. There is no sign of week-over-week improvement in March; whatever is broken in onboarding is broken consistently.

04What the cohort actually does in the app

From user_usages — the only reliable in-product activity log — across all 335 cohort users, ever:

In-app actionUsers (of 335)ShareRead
Quick Scan — fetched competitor profiles5315.8%Highest-engagement feature. "Spy on competitors" is what pulls people in.
Quick Scan — generated competition map4312.8%81% of fetchers also generate the map — strong intent funnel.
Replied to a review3711.0%The classic core-feature wedge. 203 events from 37 users → ~5.5 replies/user.
Created post content (AI Posts)236.9%The flagship "magic" feature reaches 7% of signups. Heavily used by those who try it: 362 events / 23 users = 16/user.
Refreshed keyword data195.7%Despite 127 users having keywords, only 19 ever refresh — proves the keyword dashboard is a dead-end.
Reached the "aha moment" (tracking a keyword)12737.9%Includes 2 coworkers with access via parent working group. Keywords are auto-seeded on Google connect — 108 of them never refresh / quick-scan / do anything else with them.

Of 1,299 keywords ever created by this cohort, 53.4% (694) are already disabled and only 3.2% (41) are observed. The keyword tracker, the supposed core value prop, is essentially unused: more than half of all created keywords are dead before the trial ends.

05Friction map — what's actually breaking

Sentry · rc-local (last ~24h, retention is short)

IssueUsersWhere
Page not found: ./Pages/undefined.vue24Vue route resolution returns undefined → blank page on a key surface.
TypeError: …reading 'scrollToItem'16SelectLocation.vue — the "pick your GBP" dropdown. Likely cause of the 28pt OAuth→location loss.
TypeError: …reading '0'9App bundle, generic — 87 occurrences in Clarity.
TypeError: …reading 'nodeType'8App bundle.
TypeError: …reading 'locations'1this.current_group.locations — null group on dashboard load.
Cloudflare Turnstile error 3000301Sentry only catches a fraction; Clarity logs 39 events in March.
Attempt to read property "id" on null/onboarding/callback + /auth/facebook — OAuth returns.
count() error · null array/api/guided-tour/status — explains 1/335 tour completion.
QueryException: actionable_insights.location_id missing/mcp/local — DB schema drift, will block AI agent calls.

rc-local Sentry retention is configured to ~24h. To attribute volume per cause to the March cohort specifically, retention would need to be bumped.

Clarity · March 2026

SignalCount
JS error: Cannot read properties of undefined (reading '0')87
Script error (cross-origin, masked)42
Cloudflare Turnstile error 300030 (captcha fail)39
can't access property 0, d[h] is undefined17
Cannot read properties of null (reading 'locations')13
ResizeObserver loop completed12

Dead clicks (March 2026)

PageDead clicksRage clicks
/dashboard/keywords3,352117
/dashboard/keywords/quick-scan1,38714
/dashboard/reviews1,27816
/keywords/check8475
/login52110
/settings47117
/statistics38635

Same pattern as Mar–Apr: /dashboard/keywords has the highest dead-click density (3,352 dead, 117 rage) — and it's the page the only "activated" users land on. They click, nothing happens, they leave.

"39 captcha failures on the registration form, 16 crashes in the GBP location picker, and 117 rage-clicks on the keyword dashboard — the user journey is gated by three known-broken screens."

06The sales side — Pipedrive (RC Local + FB pipeline, March only)

Stage-to-stage conversion (March deals)

Stage→ next
1 · Rejestracja RC Local → 2 · WENET93.4%
2 · WENET → 3 · Leady Looker93.5%
3 · Leady Looker → 4 · Import FB98.2%
4 · Import FB → 5 · Contact98.0%
5 · Contact → 6 · SQL100%
6 · SQL → 7 · Ostatnie formalności98.2%
7 · Ostatnie formalności → 8 · Umowa96.5%
8 · Umowa → 9 · Klient98.2%
Pipeline win rate (deals that enter)23.7%
Pipeline lost rate76.4%

Stage conversion is extraordinary for March — every single transition clears 93%+, three of them above 98%. Yet only 11 of 335 (3.3%) of cohort signups eventually paid Stripe. The "lost" rate is not lost deals; it's deals that never get touched in the first place.

What's actually happening with the deals

  • Every new RC Local signup auto-creates a 0-PLN deal in pipeline 21 stage 239 (origin: API), titled "Szansa sprzedaży {email}" — same pattern as Mar–Apr.
  • 42.1% of signups (141 / 335) don't even have a pipedrive_id stored back on the user — a sync gap that worsened from 36% in Mar–Apr. Sales has no link back from CRM to the actual user record for nearly half the cohort.
  • Read in combination: the 23.7% win rate from Pipedrive doesn't represent the whole cohort — it represents the ~58% of signups Pipedrive even knows are real users. The true trial→paid for March is 11/335 = 3.3%.
  • Once an SDR contacts a deal, conversion is essentially deterministic (93%+ at every later stage). The bottleneck is "which of yesterday's 30 deals deserves a call?" — and there is no PQL signal to answer that.

07SaaS conversion expert read

Industry benchmarks for a freemium / free-trial PLG SaaS in this space (local SEO, GBP tooling, ~Birdeye / GMB Crush adjacent):

MetricRC Local · March 2026SaaS benchmarkVerdict
Register form started → submitted12.7%55–75%5× below — biggest single leak
Register page → Account created (counts Google OAuth)51%35–55%OK once they push past the form
Signup → Real activation (any in-app action)28.4%40–55%~2× below benchmark
Day-1 return rate17.0%35–45%2× below benchmark (slight improvement vs Mar–Apr)
Week-1 retention (D2–D7)14.0%25–35%2× below — this run is meaningfully better than Mar–Apr (7.7%)
Trial → Paid (ever)3.3%5–10% (PLG) · 15–25% (sales-led)1.5× below PLG floor (improving from 2.0%)
Trial → Currently paying2.4%4–8%2× below benchmark
Guided tour completion0.3% (1 user)40–60%Effectively broken
PL onboarding completion vs EN26.4% vs 63.2% (-36.8pt)±5ptCatastrophic locale gap

The funnel shape has shifted since the Mar–Apr review. The biggest leak is no longer onboarding — it's the registration form itself. 88% of people who start filling it never submit it, and Clarity directly attributes 39 of those to Cloudflare Turnstile failures. Beyond the form, the product holds up surprisingly well at the OAuth step (85% connect Google) but then crumbles at the GBP location picker (a known Sentry crash) and at the keyword dashboard (3,352 dead clicks). Despite those problems, March is directionally better than Mar–Apr on every late-funnel metric (D1 return, week-1 retention, trial→paid all improved 1.5–2pp), suggesting recent fixes are landing — they're just being eaten by the new top-of-funnel leak.

08What to fix — prioritized

P1 · This week · biggest single lever (NEW for March)

Unblock the registration form: 88% of starters never submit it

921 users started form_start in March. 117 made it to form_submit. Clarity attributes 39 Cloudflare Turnstile 300030 errors on the registration page directly. Combined with the form-validation churn (no inline error states for password rules, no field-level retry), the form is the single biggest hole in the entire funnel.

Expected lift: form completion 12.7% → 35–45% → +60–100% more signups
P1 · This week · localization emergency

Fix the Polish onboarding funnel — 36.8pt gap is widening

EN: 63.2% finish onboarding (108/171). PL: 26.4% (39/148). The gap was 21pt in Mar–Apr; it is now 36.8pt. Same product, but Polish users — the home market and largest single language — finish less than half as often.

Expected lift: +10pp PL completion → +14% finished-onboarding overall
P1 · This sprint

Fix the GBP location picker (SelectLocation.vue scrollToItem crash)

286 users connect Google but only 191 ever pull a location — a 28pt loss between OAuth success and having a usable workspace. Sentry RC-LOCAL-T4 logs 16 users hitting scrollToItem on null in SelectLocation.vue; that's almost certainly the cause. The remaining 79 users connect their Google but the picker silently breaks.

Expected lift: has-location 57% → 75%+ → +20% activation
P2 · 2 weeks

Auto-trigger D1 return: "Your first scan is ready"

D1 return is 17%. Quick Scan is the most-used in-app feature (53 users / 15.8%) — but it sits behind a manual click most users never make. Auto-run a Quick Scan in the background after Google connect, and 12h after signup send a one-click email: "Your competitors are ranking #1 for these 5 keywords near you — see the map →".

Expected lift: D1 return 17% → 28–32%, week-1 retention 14% → 22%
P2 · 2 weeks

Wire Pipedrive PQL signal · close the 42% sync gap

The Pipedrive sync gap worsened: 42.1% of March signups (141/335) have no pipedrive_id at all (vs 36% in Mar–Apr). Stage conversion is essentially perfect (93–100% at every step) — sales just doesn't know who to call.

Expected lift: trial→paid 3.3% → 6–8% from sales-assist alone
P2 · sprint

Kill dead clicks on /dashboard/keywords (3,352 / 117 rage in March)

Same screen, same problem as Mar–Apr — 3,352 dead clicks and 117 rage clicks in March alone, on the page that was supposed to be our activation screen. Of 1,299 keywords created in March, only 41 (3.2%) are observed and 694 (53.4%) are already disabled. Users land here, click things that don't respond, and abandon.

Expected lift: D1 return +5–8pp, perceived value of keyword tracker
P2 · 1 week

Fix the guided tour (1 of 335 finished it in March)

Only one Spanish user finished it. Sentry RC-LOCAL-18A: /api/guided-tour/status returns 500 on a null array — the tour state endpoint is broken on first call. The current trigger requires ?guided_tour=true in the URL, which nobody has.

Expected lift: tour completion 0.3% → 35–50%, secondary feature discovery
P3 · 4 weeks

Lifecycle email by activation events, not days

MailerLite groups today are TRIAL_PL/TRIAL_EN + day-based. Switch to event triggers: "signed up but didn't connect Google in 24h", "connected Google but no location in 24h", "has keyword but no quick-scan in 48h". Each gets a one-click magic-link straight to the next required action.

Expected lift: D2–D7 return 14% → 22–28%
P3 · 4 weeks

Bump rc-local Sentry retention to 30 days

Today rc-local Sentry retention is ~24h. Every cohort retro requires guessing whether a March crash count was 24 users or 240. Bump retention so future report runs can correlate per-error volume to the exact cohort window.

Expected lift: precision of every future onboarding diagnosis

09If you only do three things

  1. Unblock the registration form. 88% of starters never submit. Disable Turnstile for low-risk traffic, add Google Sign-Up at the top of the form, and instrument form_field_error. This single fix could double signup volume without touching marketing spend.
  2. Fix the Polish funnel. 26.4% finish vs 63.2% in English on your home market — a gap that has widened since last month. Translation QA + 10 Clarity recordings filtered to browserLanguage=pl by Friday.
  3. Patch SelectLocation.vue. 286 connect Google but only 191 pull a location. Sentry has the smoking gun (scrollToItem on null, 16 users in 24h). Defensive null-guard + a "Pick manually / Switch account" fallback recovers the entire 28pt drop and lifts everyone downstream.

Data sources used in this report:
· production Aurora MySQL — google_profiles.users, onboarding_accounts, locations, keywords, working_groups, working_group_keywords, coworkers, user_usages, subscriptions
· GA4 property 396020608 "RATING LOCAL SEO" — page paths, events, host filter local.ratingcaptain.com for in-app traffic; full property for /register and form events
· Sentry org ratingcaptain project rc-local — last ~24h issue list (retention not extended; recommend bumping to 30d)
· Microsoft Clarity (RC project) — JS errors, dead/rage clicks, exit pages, 2026-03-01 → 2026-04-01
· Pipedrive — pipeline 21 (RC Local + FB), stage conversion stats, 2026-03-01 → 2026-04-01