Runbear Signup Funnel & Landing Conversion Analysis — 2026-06-04 재검증
Executive summary
distinct_id overlap as a diagnostic proxy only.- 분석은 signup database, product analytics, landing code history의 read-only evidence를 기준으로 작성했다. Credentials, account identifiers, local paths, project IDs는 public artifact에서 제외했다.
- DB
public."User"."createdAt"기준 signup truth: 총 9,483 users, Runbear/internal-like email 188명 제외 시 external 9,295 users. 최근 365일(2026-06-04 실행 시점 rolling) external signups는 3,407명, 2026 YTD external signups는 933명이다. - 이전 초안의 “production
runbear.ioPostHog pageview 없음” 결론은 현재 재검증 결과와 맞지 않는다. 현재 PostHog project에는 최근 365일 productionrunbear.io/www.runbear.iopageview가 729,230건 / 333,619 visitors 존재한다(단일 fixed snapshot: 2025-06-04 01:30:00 → 2026-06-04 01:30:00 UTC). - 다만 true landing→signup conversion rate는 아직 blocker다. production landing visitor와 signup-like event가 같은
distinct_id로 겹치는 수는 342명뿐이며,first_signup >= first_landing조건으로는 0명이다. 이는 anonymous→identified stitching 또는 event timestamp/order 문제가 커서 PostHog만으로 최종 CVR을 확정하면 안 된다는 뜻이다. - PostHog signup-like event reconciliation도 불완전하다. 최근 365일 DB total signups는 3,498명인데 PostHog는
create_user4,515 events/4,177 actors,user_signed_up571 actors,user_signup286 actors로 서로 맞지 않는다. - Landing changes와 signup 변화는 인과가 아니라 correlation만 볼 수 있다. 2026-05-12 V3 redesign 이후 DB signup/day는 30d pre 3.70/day → observed 23d post 4.48/day로 소폭 회복했지만, PostHog same-id signup overlap은 낮고 identity blocker가 남아 있다.
Evidence source status (public-safe)
| Source | Status in this report | Public-safe evidence summary |
|---|---|---|
| Signup database (PostgreSQL) | Used | Read-only aggregate signup counts and monthly trends were queried; connection details omitted |
| Product analytics (PostHog) | Used | Read-only landing, pageview, journey, event, and traffic-quality aggregates were queried; project/account identifiers omitted |
| Landing code history (git) | Used | Landing-related commits and file-level stats were inspected for timeline evidence |
| Issue tracker / Linear | Not used | Not needed for DB + analytics + git-first funnel analysis |
| LLM observability / Langfuse | Not used | Not needed for signup/landing funnel question |
Signup truth from PostgreSQL
Source: public."User", signup completion truth = "createdAt". Default external filter: (email NOT ILIKE '%runbear%' OR email IS NULL).
| Metric | Value |
|---|---|
| Total users | 9,483 |
| Internal/runbear-like emails | 188 |
| External/non-runbear users | 9,295 |
| First user createdAt | 2023-11-14 14:47:54+00 |
| Latest user createdAt | 2026-06-03 05:02:29.031+00 |
| Total signups last 365d | 3,498 |
| Internal/runbear-like signups last 365d | 91 |
| External signups last 365d | 3,407 |
| External signups 2026 YTD | 933 |
Monthly signup trend — recent external signups:
| Month | External | Internal | Total |
|---|---|---|---|
| 2025-06 | 561 | 9 | 570 |
| 2025-07 | 401 | 4 | 405 |
| 2025-08 | 362 | 11 | 373 |
| 2025-09 | 335 | 2 | 337 |
| 2025-10 | 312 | 6 | 318 |
| 2025-11 | 281 | 3 | 284 |
| 2025-12 | 267 | 2 | 269 |
| 2026-01 | 257 | 20 | 277 |
| 2026-02 | 219 | 11 | 230 |
| 2026-03 | 180 | 7 | 187 |
| 2026-04 | 120 | 4 | 124 |
| 2026-05 | 131 | 10 | 141 |
| 2026-06 partial | 26 | 2 | 28 |
Interpretation: signup velocity declined through 2025 H2 → 2026 Apr and recovered slightly in May/early June, but traffic/channel denominator and identity join are required before attributing movement to landing changes.
PostHog production landing coverage
Production host coverage exists and is large. A fixed 365-day snapshot (2025-06-04 01:30:00 → 2026-06-04 01:30:00 UTC) returned 729,230 pageviews / 333,619 visitors across runbear.io and www.runbear.io. Both hosts are present; www.runbear.io is tiny at 9 pageviews, so production traffic is effectively runbear.io.
Top hosts over last 365d:
| Host | Pageviews | Visitors |
|---|---|---|
runbear.io | 729,221 | 333,602 |
app.runbear.io | 537,974 | 6,480 |
docs.runbear.io | 112,179 | 35,465 |
auth.runbear.io | 88,783 | 39,973 |
cal.com | 545 | 463 |
Recent production landing volume:
| Window | Pageviews | Visitors |
|---|---|---|
| last 30d | 123,799 | 37,514 |
| last 90d excluding last 30d | 137,599 | 75,309 |
| last 365d excluding last 90d | 467,832 | 221,386 |
Top production landing paths:
| Path | Pageviews | Visitors |
|---|---|---|
/ | 84,148 | 48,874 |
/pricing | 20,372 | 12,184 |
/use-cases | 15,871 | 9,105 |
/posts/ | 4,952 | 4,360 |
/solutions/integrations/slack/mcp/servers | 7,105 | 3,927 |
/changelog/ | 4,870 | 3,919 |
/integrations | 3,716 | 3,139 |
/ai-agent-for-account-managers | 3,550 | 2,889 |
/demo/ | 2,869 | 2,583 |
Top referrers:
| Referrer domain | Pageviews | Visitors |
|---|---|---|
$direct | 610,574 | 277,559 |
www.google.com | 70,845 | 36,729 |
syndicatedsearch.goog | 4,253 | 3,496 |
www.reddit.com | 4,572 | 2,952 |
www.bing.com | 2,695 | 1,666 |
www.youtube.com | 3,382 | 1,447 |
www.producthunt.com | 1,538 | 838 |
chatgpt.com | 1,316 | 584 |
www.perplexity.ai | 703 | 323 |
Signup event reconciliation
Candidate signup-like events over last 365d:
| Event | Events | Actors | Reconciliation vs DB |
|---|---|---|---|
create_user | 4,515 | 4,177 | Over DB total signups 3,498 by ~19% actors / ~29% events; not exact truth |
user_signed_up | 571 | 571 | Under DB external signups by ~83% |
user_signup | 286 | 286 | Under DB external signups by ~92% |
build_agent_signup_button_clicked | 27 | 24 | CTA click only, not signup completion |
Conclusion: DB User.createdAt remains signup truth. PostHog signup-like events are useful as behavior proxies, but not final signup truth until a canonical signup-completed event reconciles to DB within an agreed tolerance.
Landing-to-signup conversion analysis
Production landing denominator is available, but final landing→signup CVR is blocked by identity/order mismatch.
| Metric | Value | Interpretation |
|---|---|---|
| Production landing visitors last365 | 333,619 | Good denominator exists |
Same-distinct_id visitors with signup-like event | 342 | Proxy overlap only, not true conversion |
| Proxy overlap rate | ~0.103% | Lower bound / diagnostic signal, not final CVR |
Visitors where first_signup >= first_landing | 0 | Strong evidence that anonymous→identified stitching or event ordering is broken |
| DB external signups last365 | 3,407 | Truth source; much higher than PostHog landing-overlap proxy |
Do not present 0.103% as the business conversion rate. It is the measurable same-id overlap under current instrumentation. The actual production landing conversion rate requires joining anonymous landing sessions to DB users after auth.
Converted vs non-converted journey patterns
Because true landing→signup identity join is weak, “converted” below means same distinct_id has one of create_user, user_signed_up, user_signup in the last 365 days. It is a behavior proxy, not final attribution.
Top app/auth paths among signup-like actors:
| Host | Path | Pageviews | Visitors |
|---|---|---|---|
app.runbear.io | /overview | 24,828 | 2,932 |
auth.runbear.io | /en/post_login | 11,575 | 2,720 |
app.runbear.io | /assistants | 42,591 | 2,177 |
app.runbear.io | /integrations | 9,628 | 1,605 |
app.runbear.io | /assistants/new | 4,218 | 1,297 |
app.runbear.io | /billing | 8,559 | 1,281 |
auth.runbear.io | /en/login/confirm_email | 1,297 | 991 |
auth.runbear.io | /en/login | 4,440 | 954 |
auth.runbear.io | /en/login/create_org | 1,297 | 755 |
auth.runbear.io | /en/signup | 778 | 418 |
Production landing entry paths among signup-like actors:
| Entry path | Signup-like visitors |
|---|---|
/ | 166 |
/use-cases | 74 |
/use-cases/How-to-Build-an-AI-Chatbot-for-Member-Onboarding | 20 |
/use-cases/Boosting-Customer-Service-with-AI-Streamlining-Support-Operations | 16 |
/pricing | 11 |
/posts/how-ai-assistants-work | 9 |
Top non-converted production entry paths:
| Entry path | Visitors |
|---|---|
/ | 45,332 |
/use-cases | 4,068 |
/ai-agent-for-account-managers | 2,840 |
/posts/How-to-Integrate-Chat-GPT-into-Teams-in-10-Minutes--No-Coding-Required | 2,159 |
/posts/gpt-5-explained | 2,145 |
/solutions/integrations/slack/mcp/servers | 2,007 |
/pricing | 1,937 |
/use-cases/Building-AI-Teammates-That-Actively-Join-Conversations | 1,859 |
/integrations | 1,488 |
Path-level same-id signup overlap:
| Path | Visitors | Signup-overlap visitors | Overlap rate |
|---|---|---|---|
/ | 48,874 | 222 | 0.454% |
/pricing | 12,184 | 61 | 0.501% |
/use-cases | 9,105 | 129 | 1.417% |
/solutions/integrations/slack/mcp/servers | 3,927 | 18 | 0.458% |
/integrations | 3,139 | 3 | 0.096% |
/ai-agent-for-account-managers | 2,889 | 3 | 0.104% |
/use-cases/How-to-Build-a-Slack-Daily-Digest-using-Gen-AI-Without-Coding | 1,680 | 14 | 0.833% |
/use-cases/Boosting-Customer-Service-with-AI-Streamlining-Support-Operations | 1,591 | 25 | 1.571% |
Interpretation:
1. /use-cases and some concrete use-case pages have stronger signup-overlap rates than homepage/pricing. This suggests problem-specific landing journeys may be more qualified.
2. App/auth paths are well-instrumented after signup/login, but pre-auth landing identity is not joined reliably.
3. Blog/integration pages bring volume, but their observed signup overlap is weak unless they bridge users into auth/app flows.
Bot / noise / low-intent estimate
Production host visitor diagnostics over last 365d:
| Signal | Visitors | Share |
|---|---|---|
| Production-host visitors in event diagnostic query | 330,464 | 100% |
| Pageview-only once | 190,907 | 57.8% |
Low-event visitors (events <= 2) | 244,800 | 74.1% |
High-pageview visitors (pageviews >= 10) | 12,336 | 3.7% |
| Zero-span visitors | 207,303 | 62.7% |
| Single-path visitors | 245,244 | 74.2% |
Estimated non-human / low-intent reporting ranges:
| Scenario | Estimated share | Rationale |
|---|---|---|
| Conservative | 35–45% | Only obvious one-off / zero-engagement traffic treated as noise |
| Moderate | 55–65% | Pageview-only once and zero-span visitors dominate |
| Aggressive | 70–75% | Low-event and single-path visitors treated as low-intent/noise |
This is not a pure bot classifier. It is a reporting filter recommendation: dashboards should show raw, engaged, and qualified denominators side-by-side.
Landing-change timeline and correlation
Verified git commits:
| Date | Commit | Change | Git evidence |
|---|---|---|---|
| 2025-12-19 | ad88d2690 | Meta-ad landing page publish; homepage touched | page.tsx: 51 insertions |
| 2026-02-12 | f338523e3 | New landing page release | page.tsx: +7/-7 |
| 2026-03-13 | c44a1f8fd | Homepage A/B testing | landing-ab-switch, landing-v1, landing-v2: +613/-51 |
| 2026-03-16 | 7f4932961 | Website reorg / V2 reduction | landing-v2.tsx: +3/-313 |
| 2026-05-12 | 54942151e | V3 main landing redesign/default | landing-v3/*: +4,150/-3 |
Pre/post correlation windows. DB external signup/day is truth; PostHog signup overlap is diagnostic only.
| Change | Window | Period | Days | DB external/day | PH landing visitors/day | PH same-id overlap rate |
|---|---|---|---|---|---|---|
| Meta-ad landing 2025-12-19 | 14d | pre | 14 | 10.86 | 264.9 | 0.378% |
| Meta-ad landing 2025-12-19 | 14d | post | 14 | 5.29 | 269.5 | 0.053% |
| Meta-ad landing 2025-12-19 | 30d | pre | 30 | 10.13 | 299.6 | 0.234% |
| Meta-ad landing 2025-12-19 | 30d | post | 30 | 7.27 | 334.5 | 0.130% |
| New landing 2026-02-12 | 14d | pre | 14 | 10.36 | 548.6 | 0.039% |
| New landing 2026-02-12 | 14d | post | 14 | 5.86 | 245.2 | 0.291% |
| New landing 2026-02-12 | 30d | pre | 30 | 9.40 | 746.3 | 0.063% |
| New landing 2026-02-12 | 30d | post | 30 | 6.07 | 272.3 | 0.245% |
| A/B testing 2026-03-13 | 14d | pre | 14 | 6.57 | 310.5 | 0.184% |
| A/B testing 2026-03-13 | 14d | post | 14 | 5.43 | 653.3 | 0.055% |
| A/B testing 2026-03-13 | 30d | pre | 30 | 6.10 | 284.9 | 0.234% |
| A/B testing 2026-03-13 | 30d | post | 30 | 5.37 | 859.7 | 0.047% |
| V2 reduction 2026-03-16 | 14d | pre | 14 | 6.43 | 334.9 | 0.149% |
| V2 reduction 2026-03-16 | 14d | post | 14 | 5.50 | 629.1 | 0.068% |
| V2 reduction 2026-03-16 | 30d | pre | 30 | 5.70 | 273.8 | 0.207% |
| V2 reduction 2026-03-16 | 30d | post | 30 | 5.40 | 1,072.0 | 0.047% |
| V3 redesign 2026-05-12 | 14d | pre | 14 | 4.36 | 1,550.9 | 0.023% |
| V3 redesign 2026-05-12 | 14d | post | 14 | 4.57 | 1,397.6 | 0.015% |
| V3 redesign 2026-05-12 | 30d | pre | 30 | 3.70 | 1,818.9 | 0.020% |
| V3 redesign 2026-05-12 | observed 23d post | post | 23 | 4.48 | 1,304.1 | 0.020% |
Interpretation:
- DB signup velocity was already declining before several changes; do not claim landing changes caused the decline.
- V3 has a small positive DB signup/day movement, but the post window is only 23 observed days and PostHog identity join is weak.
- PH landing traffic increased materially in March/April windows while DB signups did not follow proportionally, suggesting either traffic quality changed, low-intent traffic increased, or signup attribution is broken.
Prioritized signup-rate experiments
ICE score = Impact × Confidence × Ease / 10, directional. Priority is strategic/manual: attribution repair stays #1 because it unlocks trustworthy measurement even though its rounded ICE is slightly below the dashboard cleanup item.
| Priority | Experiment | Evidence tie | Impact | Confidence | Ease | ICE | Verification metric |
|---|---|---|---|---|---|---|---|
| 1 | Fix canonical signup attribution: emit one signup-completed event with DB User.id, email hash, anonymous/session id, and first landing/session metadata | first_signup >= first_landing = 0; DB 3,407 external vs PH overlap 342 | 10 | 10 | 5 | 50 | PH canonical signup count within ±5–10% of DB, first landing path coverage >80% |
| 2 | Build raw/engaged/qualified funnel dashboard rather than one raw CVR | 57.8% pageview-only once; 74.1% low-event visitors | 8 | 9 | 7 | 50.4 | daily dashboard with raw, engaged, qualified visitors and signup joins |
| 3 | Strengthen use-case path as homepage CTA/segmentation | /use-cases overlap 1.417% vs / 0.454%; concrete use-case pages up to 1.571% | 8 | 7 | 7 | 39.2 | homepage → use-case click rate, use-case → auth-start, joined signup rate |
| 4 | Pricing-page intent bridge: clearer “start in Slack” / “book demo” bifurcation | /pricing has 12,184 visitors and 0.501% overlap; pricing no-auth path is likely high-intent leakage | 7 | 6 | 7 | 29.4 | pricing CTA CTR, auth-start, demo-booked, joined signup rate |
| 5 | Blog/integration CTA redesign by intent | Blog/integration traffic is large but signup overlap weak | 6 | 6 | 6 | 21.6 | content → auth/app transition, assisted signup rate |
| 6 | Experiment governance: minimum qualified sample and fixed measurement window before hero narrative changes | Frequent landing narrative changes make learning hard; March traffic rose without proportional DB signup movement | 7 | 7 | 5 | 24.5 | variant-level qualified sample, CI, decision log |
Blockers / next data needed
1. Canonical identity join: Need a DB-reconciled signup-completed event and anonymous→identified stitching. Without this, true landing CVR remains blocked.
2. Attribution metadata: Store first landing host/path/referrer/UTM/session id on signup or user profile analytics payload.
3. Bot/quality labeling: Add dashboard filters for raw vs engaged vs qualified traffic. Current low-event share is too high for a single raw denominator.
4. Experiment metadata: Keep variant assignment, start/end, hero copy, and sample sizes queryable so landing changes can be evaluated before the next redesign.
Evidence query snippets
-- DB signup truth
SELECT count(*) AS total,
count(*) FILTER (WHERE email ILIKE '%runbear%') AS internal_like_runbear,
count(*) FILTER (WHERE email NOT ILIKE '%runbear%' OR email IS NULL) AS external,
min("createdAt") AS first_created_at,
max("createdAt") AS latest_created_at
FROM public."User";-- Production landing coverage
SELECT properties.$host AS host, count() AS pageviews, uniq(distinct_id) AS visitors
FROM events
WHERE timestamp >= toDateTime('2025-06-04 01:30:00')
AND timestamp < toDateTime('2026-06-04 01:30:00')
AND event = '$pageview'
AND properties.$host IN ('runbear.io','www.runbear.io')
GROUP BY host;-- Candidate signup events
SELECT event, count() AS events, uniq(distinct_id) AS actors
FROM events
WHERE timestamp >= toDateTime('2025-06-04 01:30:00')
AND timestamp < toDateTime('2026-06-04 01:30:00')
AND event IN ('create_user','user_signed_up','user_signup')
GROUP BY event;-- Production landing visitors with signup-like event on the same distinct_id
SELECT uniq(l.distinct_id) AS landing_visitors_with_signup_same_id
FROM (
SELECT distinct_id
FROM events
WHERE timestamp >= toDateTime('2025-06-04 01:30:00')
AND timestamp < toDateTime('2026-06-04 01:30:00')
AND event = '$pageview'
AND properties.$host IN ('runbear.io','www.runbear.io')
GROUP BY distinct_id
) AS l
INNER JOIN (
SELECT distinct_id
FROM events
WHERE timestamp >= toDateTime('2025-06-04 01:30:00')
AND timestamp < toDateTime('2026-06-04 01:30:00')
AND event IN ('create_user','user_signed_up','user_signup')
GROUP BY distinct_id
) AS s ON l.distinct_id = s.distinct_id;# Landing commit verification examples
git show --stat --oneline --date=short ad88d2690 -- apps/landing/app/'(site)'
git show --stat --oneline --date=short 54942151e -- apps/landing/app/'(site)'