GrowReach CRO Deep-Dive Report
Comprehensive PostHog Product Analytics Analysis
Generated: July 13, 2026 | Data Window: June 14 - July 13, 2026 (30 days)
Executive Summary
GrowReach received 236 unique visitors in the last 30 days with a 7.2% overall conversion rate (17 $identify events from 236 visitors). However, conversion is severely skewed: desktop converts at 12.1% while mobile converts at only 1.7% — a 7x gap. The site suffers from 1,804 JavaScript TypeErrors originating from a single bug in homepage.js (null reference to header.classList), affecting 51.7% of all visitors. Reddit sends 34 visitors (14.4% of traffic) with 0% conversion. Google organic search sends 25 visitors with 0% conversion. The pricing page has a 60% bounce rate and most sessions on the marketing site last 0 seconds (single pageview, immediate exit).
Top 3 critical findings:
- TypeError pandemic — 1,804 errors from one bug (
header.classListon nullheaderelement), affecting 120 of 236 visitors - Mobile conversion crisis — 115 mobile visitors, only 2 converted (1.7%), Mobile Safari 0% conversion
- Traffic quality mismatch — Top traffic sources (Direct, Reddit, Google) have near-0% conversion; only dashboard return visits and direct growreach.app visits convert
Section 1: Traffic & Visitor Quality
1.1 Daily Visitor Trend (30 Days)
| Date | Unique Visitors | Pageviews | Notes |
|---|---|---|---|
| 2026-06-14 | 5 | 8 | |
| 2026-06-15 | 7 | 11 | |
| 2026-06-16 | 11 | 37 | Spike |
| 2026-06-17 | 7 (8) | 37 | |
| 2026-06-18 | 6 (9) | 35 | |
| 2026-06-19 | 4 (5) | 14 | |
| 2026-06-20 | 3 | 3 | Low day |
| 2026-06-21 | 17 | 23 | Spike |
| 2026-06-22 | 13 | 20 | |
| 2026-06-23 | 18 | 65 | Spike — 65 pageviews |
| 2026-06-24 | 12 (15) | 41 | |
| 2026-06-25 | 13 | 31 | |
| 2026-06-26 | 35 | 58 | Biggest spike |
| 2026-06-27 | 14 (15) | 20 | |
| 2026-06-28 | 8 (9) | 14 | |
| 2026-06-29 | 9 | 20 | |
| 2026-06-30 | 4 (5) | 15 | |
| 2026-07-01 | 13 (14) | 25 | |
| 2026-07-02 | 8 | 24 | |
| 2026-07-03 | 5 | 15 | |
| 2026-07-04 | 37 | 43 | Biggest spike (US holiday?) |
| 2026-07-05 | 14 | 18 | |
| 2026-07-06 | 7 (8) | 28 | |
| 2026-07-07 | 13 | 23 | |
| 2026-07-08 | 8 (9) | 12 | |
| 2026-07-09 | 8 (9) | 11 | |
| 2026-07-10 | 12 | 29 | |
| 2026-07-11 | 3 (5) | 6 | Low day |
| 2026-07-12 | 9 | 19 | |
| 2026-07-13 | 24 | 46 | Today spike |
Key spike dates: Jun 21 (17), Jun 23 (18), Jun 26 (35), Jul 4 (37 — US Independence Day), Jul 13 (24 — today) Average: ~8 visitors/day. Traffic is highly volatile with no consistent growth trend.
1.2 New vs Returning Visitors
| Visitor Type | Visitors | Percentage |
|---|---|---|
| New (single day) | 204 | 86.4% |
| Returning (multi-day) | 32 | 13.6% |
Insight: 86.4% of visitors come once and never return. Only 32 visitors (13.6%) came back on a different day. The returning visitors are likely existing users coming through the dashboard.
1.3 Traffic Sources by Conversion Quality
| Referring Domain | Visitors | Conversions | Conversion % |
|---|---|---|---|
| $direct | 173 | 7 | 4.0% |
| growreach.app | 26 | 8 | 30.8% |
| www.google.com | 25 | 0 | 0.0% |
| www.reddit.com | 19 | 0 | 0.0% |
| com.reddit.frontpage | 15 | 0 | 0.0% |
| dashboard.growreach.app | 9 | 2 | 22.2% |
| www.linkedin.com | 5 | 0 | 0.0% |
| growsocials.ai | 1 | 0 | 0.0% |
Critical findings:
- Reddit = 34 visitors, 0% conversion (19 from web + 15 from Reddit app) — #2 traffic source but zero signups
- Google = 25 visitors, 0% conversion — organic search traffic doesn’t convert at all
- growreach.app self-referral = 30.8% conversion — users navigating within the site convert well
- Direct traffic = 4.0% conversion — bulk of traffic but low conversion
- LinkedIn = 5 visitors, 0% conversion — low volume and no conversion
1.4 Geographic Breakdown with Conversion Rates
| Country | Visitors | Conversions | Conversion % |
|---|---|---|---|
| India | 95 | 4 | 4.2% |
| United States | 42 | 0 | 0.0% |
| United Kingdom | 13 | 2 | 15.4% |
| China | 13 | 0 | 0.0% |
| Singapore | 10 | 2 | 20.0% |
| Indonesia | 10 | 3 | 30.0% |
| United Arab Emirates | 10 | 5 | 50.0% |
| Germany | 8 | 0 | 0.0% |
| France | 4 | 0 | 0.0% |
| Netherlands | 3 | 0 | 0.0% |
| Lithuania | 3 | 0 | 0.0% |
| Canada | 2 | 0 | 0.0% |
| Italy | 2 | 0 | 0.0% |
| Pakistan | 2 | 0 | 0.0% |
| Bangladesh | 2 | 0 | 0.0% |
Critical findings:
- US = 42 visitors, 0% conversion — #2 market by volume but zero signups
- India = 95 visitors, 4.2% conversion — largest market, below-average conversion
- UAE has 50% conversion (5/10) — highest converting market, likely targeted B2B
- Indonesia 30%, Singapore 20%, UK 15.4% — small but high-converting markets
- China = 13 visitors, 0% — likely bot/crawler traffic (see Section 7)
1.5 Device Breakdown with Conversion Rates
| Device | Visitors | Conversions | Conversion % |
|---|---|---|---|
| Desktop | 124 | 15 | 12.1% |
| Mobile | 115 | 2 | 1.7% |
CRITICAL: 7x conversion gap between desktop and mobile. Mobile users are 115 of 236 visitors (48.7%) but only 2 convert. This is the single biggest CRO opportunity.
1.6 Browser Breakdown with Conversion Rates
| Browser | Visitors | Conversions | Conversion % |
|---|---|---|---|
| Chrome | 137 | 13 | 9.5% |
| Mobile Safari | 49 | 0 | 0.0% |
| Brave | 21 | 0 | 0.0% |
| Microsoft Edge | 14 | 3 | 21.4% |
| Firefox | 9 | 1 | 11.1% |
| Chrome iOS | 5 | 0 | 0.0% |
| Safari | 3 | 0 | 0.0% |
Critical findings:
- Mobile Safari = 49 visitors, 0% conversion — the mobile problem is primarily an iOS/Safari problem
- Brave = 21 visitors, 0% conversion — Brave blocks trackers; PostHog may not load properly
- Edge = 21.4% conversion — highest converting browser (small sample)
- Chrome = 9.5% conversion — baseline desktop performance
1.7 Operating System Breakdown
| OS | Visitors | Conversions | Conversion % |
|---|---|---|---|
| Mac OS X | 66 | 9 | 13.6% |
| Android | 61 | 2 | 3.3% |
| iOS | 54 | 0 | 0.0% |
| Windows | 47 | 4 | 8.5% |
| Linux | 10 | 2 | 20.0% |
| None | 2 | 0 | 0.0% |
iOS = 54 visitors, 0 conversions. Combined with Mobile Safari data, the iOS experience is completely broken for conversion.
Section 2: Funnel & Conversion Analysis
2.1 Page-Level Conversion Breakdown
| Page Path | Visitors | Pageviews | Conversions | Conv. % |
|---|---|---|---|---|
| / | 183 | 277 | 0 | 0.0% |
| /start | 36 | 52 | 0 | 0.0% |
| /login | 30 | 127 | 0 | 0.0% |
| /pricing-page/ | 23 | 36 | 0 | 0.0% |
| /dashboard | 17 | 47 | 6 | 35.3% |
| /free-tools/linkedin-banner-maker/ | 10 | 10 | 0 | 0.0% |
| /auth-redirect | 9 | 4 | 11 | 122.2% |
| /onboarding/connect-linkedin | 7 | 11 | 0 | 0.0% |
| /start/lifetime | 6 | 10 | 0 | 0.0% |
| /comparisons/trykondo-alternative/ | 6 | 7 | 0 | 0.0% |
| /subscription | 5 | 13 | 0 | 0.0% |
| /comparisons/waalaxy-alternative/ | 5 | 5 | 0 | 0.0% |
| /features/ | 5 | 7 | 0 | 0.0% |
Note: /auth-redirect shows 122.2% conversion because $identify fires multiple times per person. The homepage (/) has 183 visitors and 0 direct conversions — all conversions happen on the dashboard/auth side.
2.2 Landing Page Analysis (First Page Visited on growreach.app)
| Landing Page | Visitors | Conversions | Conv. % |
|---|---|---|---|
| / (Homepage) | 166 | 0 | 0.0% |
| /pricing-page/ | 23 | 0 | 0.0% |
| /free-tools/linkedin-banner-maker/ | 10 | 0 | 0.0% |
| /comparisons/trykondo-alternative/ | 6 | 0 | 0.0% |
| /comparisons/waalaxy-alternative/ | 5 | 0 | 0.0% |
| /features/ | 5 | 0 | 0.0% |
| /free-tools/linkedin-quotes-image-generator/ | 4 | 0 | 0.0% |
| /free-tools/linkedin-carousel-generator/ | 3 | 0 | 0.0% |
| /free-tools/linkedin-engagement-rate-calculator/ | 3 | 0 | 0.0% |
ZERO conversions from any landing page on growreach.app. All conversions come from users who navigate to dashboard.growreach.app. The marketing site is failing to drive any direct signups.
2.3 CTA Click Analysis on Marketing Site
| CTA Text | Page | Clicks | Unique Clickers |
|---|---|---|---|
| Pricing | growreach.app/ | 44 | 26 |
| Start 14-Day Free Trial | growreach.app/ | 43 | 23 |
| Sign In | growreach.app/ | 25 | 17 |
| Watch Demo | growreach.app/ | 17 | 11 |
| Get Started | growreach.app/# | 10 | 2 |
| Start Free Trial | growreach.app/ | 8 | 4 |
| Get Started | growreach.app/ | 5 | 3 |
| Start 14-Day Free Trial | growreach.app/pricing-page/ | 5 | 5 |
| Schedule a Demo | growreach.app/ | 4 | 2 |
| Start Free Trial | growreach.app/# | 6 | 2 |
Key findings:
- “Start 14-Day Free Trial” = 48 total clicks (43 homepage + 5 pricing) from 27 unique users
- “Watch Demo” = 17 clicks from 11 users — but goes to signup page, not a demo (known issue)
- “Pricing” nav link = 44 clicks from 26 users — most clicked element
- “Get Started” = 15 clicks but from only 5 unique users (same users clicking repeatedly)
- “Schedule a Demo” = 4 clicks from 2 users
Homepage CTA CTR: 23 unique “Start 14-Day Free Trial” clickers / 183 homepage visitors = 12.6% CTR (up from prior 7.7% measurement, possibly due to today’s traffic)
2.4 Exit Page Analysis
| Exit Page | Exiting Visitors | Pageleave Events |
|---|---|---|
| / (Homepage) | 72 | 170 |
| /pricing-page/ | 17 | 28 |
| /comparisons/trykondo-alternative/ | 6 | 8 |
| /features/ | 4 | 5 |
| /free-tools/linkedin-engagement-rate-calculator/ | 3 | 3 |
| /free-tools/linkedin-quotes-image-generator/ | 3 | 3 |
| /privacy-policy/ | 2 | 2 |
| /terms-of-use/ | 2 | 2 |
Homepage is the primary exit point — 72 of ~183 visitors exit from the homepage (39.3% exit rate from homepage).
2.5 Session Replay: Bounced Sessions
| Session ID | Start URL | Duration | Activity Score | Clicks | Console Errors |
|---|---|---|---|---|---|
| 019f5bfe | dashboard.growreach.app/login | 0s | 10.3 | 0 | 0 |
| 019f5abf | growreach.app/ | 589s | 0.38 | 0 | 0 |
| 019f5a55 | dashboard.growreach.app/login | 767s | 1.24 | 0 | 0 |
| 019f5745 | growreach.app/ | 302s | 0.11 | 0 | 0 |
Pattern: Bounced sessions on growreach.app show near-zero activity (0.11-0.38 score), 0 clicks, and long inactive periods (300-767s). Users load the page, don’t interact, and leave. The session replays are available at:
- https://eu.posthog.com/project/136693/replay/019f5abf-4202-7113-9286-8a7473b6f23d
- https://eu.posthog.com/project/136693/replay/019f5745-6ab2-726c-a3f0-0505239b4679
2.6 Session Replay: High-Error Sessions
| Session ID | Start URL | Duration | Clicks | Console Errors | Activity |
|---|---|---|---|---|---|
| 019f133f | growreach.app/ | 190s | 9 | 2,812 | 93.32 |
| 019f2ec5 | growreach.app/ | 101s | 4 | 2,574 | 97.16 |
| 019ef925 | growreach.app/ | 4,019s | 0 | 2,394 | 38.0 |
| 019f451d | growreach.app/ | 2,886s | 1 | 1,797 | 38.87 |
| 019ec4a6 | growreach.app/ | 2,908s | 9 | 1,491 | 35.91 |
SHOCKING: Top 5 error sessions have 10,668 console errors combined. One session had 2,812 errors in 190 seconds (14.8 errors/second). These are available at:
- https://eu.posthog.com/project/136693/replay/019f133f-ebe4-744a-a077-06bf6515d68c
- https://eu.posthog.com/project/136693/replay/019f2ec5-0f39-712c-930b-37a35d730f4f
Section 3: Error Analysis (CRITICAL)
3.1 Top 10 Error Issues
| Rank | Error Name | Description | Source File | Occurrences | Users Affected | Sessions |
|---|---|---|---|---|---|---|
| 1 | TypeError | Cannot read properties of null (reading ‘classList’) | homepage.js | 806 | 69 | 89 |
| 2 | TypeError | null is not an object (evaluating ‘header.classList’) | homepage.js | 291 | 27 | 33 |
| 3 | TypeError | Cannot read properties of null (reading ‘classList’) | /pricing-page/ | 236 | 16 | 24 |
| 4 | TypeError | Cannot read properties of null (reading ‘classList’) | homepage.js | 129 | 45 | 56 |
| 5 | TypeError | Cannot read properties of null (reading ‘classList’) | homepage.js | 74 | 4 | 8 |
| 6 | TypeError | can’t access property “classList”, header is null | /pricing-page/ | 57 | 3 | 3 |
| 7 | TypeError | null is not an object (evaluating ‘header.classList’) | homepage.js | 56 | 18 | 20 |
| 8 | TypeError | can’t access property “classList”, header is null | homepage.js | 54 | 6 | 6 |
| 9 | TypeError | null is not an object (evaluating ‘header.classList’) | /pricing-page/ | 37 | 4 | 4 |
| 10 | TypeError | Cannot read properties of null (reading ‘addEventListener’) | script.js | 33 | 21 | 27 |
ALL 10 errors are TypeErrors. ALL are related to header.classList being null — the same root cause. The JavaScript tries to access header.classList but the header element is null (doesn’t exist in the DOM when the script runs).
Total errors: 1,774 across these 10 issues. Total affected users: 120 out of 236 (50.8%).
Error tracking URLs:
- https://eu.posthog.com/project/136693/error_tracking/019df798-bc33-7ca0-a973-e3a855c11460
- https://eu.posthog.com/project/136693/error_tracking/019ecde3-a09a-7bc0-9675-e797f480173d
3.2 Errors by Page
| Page | Error Count | Affected Users |
|---|---|---|
| / (Homepage) | 1,443 | 115 |
| /pricing-page/ | 330 | 23 |
| /subscription | 13 | 3 |
| /features/ | 4 | 2 |
| Other pages | 14 | 7 |
Homepage generates 81% of all errors (1,443 of 1,774). Pricing page adds another 18.6% (330). These are the only two pages with significant error volume.
3.3 Errors by Device
| Device | Error Count | Affected Users |
|---|---|---|
| Desktop | 1,014 | 55 |
| Mobile | 790 | 67 |
Mobile has fewer total errors but affects more users (67 vs 55) — mobile sessions are shorter, so each user sees fewer errors, but a higher proportion of mobile users encounter them.
3.4 Error-Conversion Correlation
| Group | Visitors | Conversions | Conversion % |
|---|---|---|---|
| Had errors | 120 | 8 | 6.7% |
| No errors | 116 | 9 | 7.8% |
The conversion difference between error and no-error groups is small (6.7% vs 7.8%) — but this is because errors fire on page load before users interact. The real impact is on bounce rate: users who get errors are more likely to leave immediately.
3.5 Error Trend Over Time
| Date | Errors | Affected Users | Visitors | Errors/Visitor |
|---|---|---|---|---|
| 2026-06-26 | 260 | 25 | 35 | 7.4 |
| 2026-07-04 | 235 | 23 | 37 | 6.4 |
| 2026-06-23 | 112 | 9 | 18 | 6.2 |
| 2026-06-24 | 135 | 5 | 15 | 9.0 |
| 2026-07-13 | 103 | 5 | 24 | 4.3 |
| 2026-07-05 | 124 | 11 | 14 | 8.9 |
| 2026-06-27 | 101 | 11 | 15 | 6.7 |
Errors are NOT getting worse — they’re consistently proportional to traffic. Every visitor to the homepage triggers the TypeError. The error rate per visitor is 4-9x, meaning the error fires multiple times per session (likely on scroll/load events).
3.6 Root Cause Analysis
ALL errors trace to one bug: /wp-content/themes/grow-reach-wp-theme/assets/js/homepage.js tries to access header.classList but document.querySelector('header') (or similar) returns null. This means:
- The
headerelement doesn’t exist when the script runs (DOM not ready) - OR the selector doesn’t match any element on the page
- The script doesn’t have a null check before accessing
.classList
Fix: Add if (header) null check, OR wrap in DOMContentLoaded listener, OR use optional chaining header?.classList.
Secondary bug: script.js has the same issue with addEventListener on a null element (33 occurrences, 21 users).
Section 4: Page Performance (Core Web Vitals)
4.1 Average Core Web Vitals by Page
| Page | Avg LCP (ms) | Avg FCP (ms) | Avg CLS | Avg INP (ms) | Samples |
|---|---|---|---|---|---|
| /free-tools/linkedin-profile-optimizer/ | 5,656 | 5,656 | 0.087 | 136 | 2 |
| /trigger/post | 5,590 | 1,917 | 0.0 | N/A | 23 |
| /comparisons/trykondo-alternative/ | 4,266 | 3,974 | 0.001 | 35 | 6 |
| /start | 4,253 | 2,321 | 0.002 | 32 | 61 |
| /onboarding/goals | 3,403 | 1,424 | 0.124 | 8 | 7 |
| /settings | 3,251 | 3,167 | 0.498 | 192 | 9 |
| /boost-post-activity | 3,037 | 1,854 | 0.003 | 160 | 14 |
| /boost-post | 3,010 | 1,602 | 0.108 | 55 | 41 |
| / (Homepage) | 2,946 | 2,664 | 0.001 | 59 | 243 |
| /connected-account | 2,819 | 1,941 | 0.053 | 117 | 20 |
Core Web Vitals thresholds:
- LCP (Largest Contentful Paint): Good < 2,500ms, Poor > 4,000ms
- FCP (First Contentful Paint): Good < 1,800ms, Poor > 3,000ms
- CLS (Cumulative Layout Shift): Good < 0.1, Poor > 0.25
- INP (Interaction to Next Paint): Good < 200ms, Poor > 500ms
4.2 Homepage Performance (Most Important)
| Metric | Value | Rating | Impact |
|---|---|---|---|
| LCP | 2,946ms | Needs Improvement | Slow loading of largest element |
| FCP | 2,664ms | Needs Improvement | Slow first paint |
| CLS | 0.001 | Good | No layout shift issues |
| INP | 59ms | Good | Good interactivity |
4.3 Performance by Device (Homepage)
| Device | Avg LCP (ms) | Avg FCP (ms) | Avg CLS | Avg INP (ms) | Samples |
|---|---|---|---|---|---|
| Mobile | 2,968 | 2,863 | 0.001 | 77 | 103 |
| Desktop | 2,935 | 2,503 | 0.001 | 53 | 140 |
Mobile FCP is 2,863ms vs desktop 2,503ms — 360ms slower on mobile. Both are in the “Needs Improvement” range. Mobile INP is also 45% worse (77ms vs 53ms).
4.4 Worst Performing Pages
| Page | Issue | Severity |
|---|---|---|
| /settings | CLS = 0.498 ( Poor) + LCP 3,251ms | Critical — massive layout shift |
| /boost-post | CLS = 0.108 + LCP 3,010ms | Poor CLS |
| /onboarding/goals | CLS = 0.124 + LCP 3,403ms | Poor CLS |
| /commenting-voice | CLS = 0.27 | Poor CLS |
| /start | LCP 4,253ms | Very slow loading |
| /trigger/post | LCP 5,590ms | Extremely slow (likely background tab) |
Note: The homepage CLS is good (0.001), meaning layout stability is fine. The main issue is LCP/FCP — the page takes ~3 seconds to load and paint. This contributes to bounce rate, especially on mobile.
Section 5: User Behavior Patterns
5.1 Rage Click Analysis
| URL | Rage Clicks | Users |
|---|---|---|
| dashboard.growreach.app/onboarding/profile | 6 | 3 |
| dashboard.growreach.app/settings | 5 | 1 |
| dashboard.growreach.app/boost-post | 3 | 1 |
| dashboard.growreach.app/start | 3 | 2 |
| dashboard.growreach.app/login | 3 | 2 |
| dashboard.growreach.app/onboarding/target-creators | 2 | 1 |
| dashboard.growreach.app/commenting-voice | 2 | 2 |
| growsocials.ai/#features | 1 | 1 |
All rage clicks are on the dashboard, not the marketing site. This means the marketing site doesn’t have clickable-element confusion — users either click CTAs or leave. The dashboard has UI frustration issues (onboarding/profile has 6 rage clicks from 3 users).
5.2 Dead Click Analysis
No $dead_click events were found in the project taxonomy. This event type is not tracked.
5.3 Most Common User Paths (Top 10 by Pageviews)
| User | Page Sequence | Pages | Duration |
|---|---|---|---|
| User 1 | / -> / -> / -> / -> /pricing-page/ -> / -> … (36 pageviews) | 36 | 20 days |
| User 2 | / -> / -> / -> / (16 pageviews) | 16 | 25 days |
| User 3 | / -> /free-tools/* (8 tools) -> /comparisons/* -> / (13 pageviews) | 13 | 16 days |
| User 4 | /pricing-page/ -> /features/* -> /pricing-page/ -> /comparisons/* (7 pageviews) | 7 | 4 min |
| User 5 | / -> / (7 pageviews) | 7 | 8 days |
| User 6 | / -> /comparisons/* -> /features/ -> / (7 pageviews) | 7 | 16 days |
| User 7 | /pricing-page/ -> / -> /pricing-page/ (6 pageviews) | 6 | 4 hours |
| User 8 | / -> /free-tools/* -> /comparisons/* (6 pageviews) | 6 | 2 days |
Pattern: Most visitors either (a) repeatedly visit the homepage without navigating further, or (b) explore free tools and comparison pages but never reach the signup. The pricing page is visited but users bounce back to the homepage instead of clicking through to signup.
5.4 What Converted Users Do Differently
| User | Total Events | Pages Visited | Path Pattern |
|---|---|---|---|
| User A | 747 | 27 pages | Full onboarding: / -> /pricing-page/ -> /start -> /onboarding/* -> /dashboard |
| User B | 355 | 24 pages | / -> /start -> /onboarding/* -> /dashboard |
| User C | 336 | 24 pages | / -> /start -> /onboarding/* -> /dashboard |
| User D | 268 | 20 pages | /start -> /onboarding/* -> /dashboard -> /start/lifetime |
| User E | 120 | 11 pages | / -> /start/lifetime -> /onboarding/* -> /dashboard |
| User F | 119 | 20 pages | / -> /start -> /onboarding/* -> /dashboard |
| User G | 103 | 16 pages | /pricing-page/ -> /start -> /onboarding/* -> /dashboard |
| User H | 101 | 11 pages | /start/ -> /login -> /auth-redirect -> /onboarding/* -> /dashboard |
| User I | 92 | 14 pages | / -> /pricing-page/ -> /start -> /onboarding/* -> /dashboard |
| User J | 75 | 10 pages | / -> /login -> /dashboard -> /boost-post |
Converted users have 75-747 events vs non-converted users who have 1-5 events. The conversion path is:
- Land on homepage or pricing page
- Click “Start 14-Day Free Trial” -> goes to /start
- Navigate through onboarding (profile, keywords, connect-linkedin, plans, goals)
- Reach /dashboard (identified as $identify)
Key insight: ALL converted users pass through /start and /onboarding/*. The homepage’s job is to get users to click through to /start. Only 36 of 236 visitors reach /start (15.3%).
Section 6: Pricing Page Deep-Dive
6.1 Pricing Page Traffic
| Metric | Value |
|---|---|
| Visitors | 23 |
| Pageviews | 36 |
| Exit Visitors | 17 (73.9% exit rate) |
| Pageleave Events | 28 |
6.2 Pricing Page CTA Clicks
| Element Clicked | Clicks | Unique Clickers |
|---|---|---|
| Quarterly -20% | 9 | 5 |
| Monthly | 4 | 2 |
| Start 14-Day Free Trial | 4 | 4 |
| Boost Your Posts & Grow For FREE | 4 | 3 |
| FAQ: Can I customize? | 4 | 4 |
| GrowReach AI | 3 | 3 |
| Yearly -40% | 3 | 2 |
| FAQ: Is it safe? | 3 | 3 |
| FAQ: How quickly results? | 3 | 3 |
| Use Cases | 2 | 1 |
| FAQ: All industries? | 2 | 2 |
Pricing page insights:
- “Quarterly -20%” billing toggle is the most clicked element (9 clicks, 5 users) — users are interested in the quarterly discount
- Only 4 users clicked “Start 14-Day Free Trial” on the pricing page (17.4% CTR on pricing)
- FAQ sections get significant clicks (12 total FAQ clicks) — users have questions about safety, customization, and results timeline
- “Boost Your Posts & Grow For FREE” gets 4 clicks — the free tier messaging attracts attention
- Yearly -40% gets fewer clicks (3) than Quarterly -20% (9) — users prefer the shorter commitment
6.3 Pricing Page Conversion Path
Of 23 pricing page visitors:
- 17 exit from the pricing page (73.9% exit rate)
- 4 click “Start 14-Day Free Trial” (17.4%)
- 2 navigate to features page
- 0 directly convert from the pricing page
Pricing page is a dead end for most users. The 73.9% exit rate means 3 of every 4 visitors leave the site from the pricing page.
Section 7: Data Quality Audit
7.1 Bot/Spam Traffic
| Traffic Type | Visitors | Events |
|---|---|---|
| Regular | 226 | 741 |
| Bot | 10 | 10 |
Bot breakdown:
| Bot Name | Visitors | Events |
|---|---|---|
| 360 Spider | 8 | 8 |
| Google fetcher | 2 | 2 |
10 bot visitors (4.2% of traffic) — low impact. 360 Spider is a Chinese SEO crawler. Google fetcher is legitimate. No significant spam pollution.
7.2 Cross-Domain Tracking
| Host | Visitors | Events |
|---|---|---|
| growreach.app | 194 | 363 |
| dashboard.growreach.app | 53 | 370 |
| growsocials.ai | 17 | 18 |
Cross-domain tracking IS partially working — PostHog tracks both growreach.app and dashboard.growreach.app. However:
- Only 53 visitors reach dashboard.growreach.app (vs 194 on marketing site)
- The person ID persists across domains (confirmed by converted user paths showing both domains)
- growsocials.ai has 17 visitors — this is a separate domain with PostHog tracking. It appears to be a legacy or alternate domain.
7.3 growsocials.ai Investigation
growsocials.ai has 17 visitors and 18 events — minimal traffic. One rage click was recorded on growsocials.ai/#features. This appears to be a legitimate but low-traffic alternate domain or staging site, NOT referrer spam.
7.4 Missing Custom Events
The following critical events are NOT tracked (only autocapture and default events exist):
| Event Name | What It Tracks | Priority |
|---|---|---|
| cta_click | Specific CTA button clicks (vs generic autocapture) | Critical |
| signup_start | User clicks “Start 14-Day Free Trial” and lands on /start | Critical |
| signup_complete | User completes the signup form | Critical |
| email_capture | User provides email (even if they don’t complete signup) | Critical |
| pricing_view | User views the pricing page | High |
| pricing_tier_select | User clicks a specific pricing tier | High |
| demo_request | User clicks “Watch Demo” or “Schedule a Demo” | High |
| free_tool_used | User uses a free tool (banner maker, etc.) | Medium |
| scroll_depth_50 | User scrolls 50% of homepage | Medium |
| scroll_depth_100 | User scrolls to bottom of homepage | Medium |
| faq_expand | User clicks an FAQ question | Low |
| outbound_click | User clicks a link leaving the site | Low |
7.5 Duplicate/Malformed Events
No obvious duplicate events detected. The identify fires on each session where the user is recognized.
7.6 Error Tracking Issue: Session Recording Linkage
The error tracking issues are properly linked to session recordings. The top error (019df798) has been seen in 89 sessions, all with available replays.
Section 8: Recommendations & Action Plan
8.1 Top 10 Prioritized Recommendations
| # | Recommendation | Impact | Effort | Impact/Effort |
|---|---|---|---|---|
| 1 | Fix the header.classList TypeError in homepage.js — add null check or DOMContentLoaded wrapper | HIGH | LOW (15 min) | 10/10 |
| 2 | Fix mobile conversion — test on iOS Safari, fix any rendering/interaction issues causing 0% conversion | HIGH | MEDIUM (2-4h) | 9/10 |
| 3 | Add custom event tracking (signup_start, signup_complete, email_capture, cta_click) | HIGH | MEDIUM (2h) | 8/10 |
| 4 | Fix “Watch Demo” CTA — currently goes to signup, should show a demo video or product walkthrough | HIGH | LOW (30 min) | 8/10 |
| 5 | Add email capture on homepage — exit-intent popup or inline email field before CTA | HIGH | MEDIUM (1-2h) | 7/10 |
| 6 | Fix pricing page exit rate (73.9%) — add social proof, testimonials, or “Start Free” button above the fold | HIGH | MEDIUM (2h) | 7/10 |
| 7 | Optimize LCP (2,946ms homepage) — lazy load below-fold images, optimize hero image, preload fonts | MEDIUM | MEDIUM (2-3h) | 6/10 |
| 8 | Install PostHog on dashboard.growreach.app signup flow — track the full funnel from CTA to signup completion | HIGH | MEDIUM (1h) | 6/10 |
| 9 | Improve Reddit traffic conversion — create landing pages specific to Reddit audiences, or stop Reddit marketing until conversion is fixed | MEDIUM | LOW (1h) | 5/10 |
| 10 | Fix HTTPS — CTAs use HTTP not HTTPS, causing potential redirect issues and security warnings | MEDIUM | LOW (15 min) | 5/10 |
8.2 Quick Wins (< 1 hour, high impact)
| # | Action | Time | Expected Impact |
|---|---|---|---|
| 1 | Add if (header) null check in homepage.js before header.classList access | 15 min | Eliminates 1,774 errors affecting 50.8% of visitors |
| 2 | Fix “Watch Demo” CTA to show actual demo (or remove if no demo exists) | 30 min | 11 users clicked “Watch Demo” expecting a demo, got signup instead |
| 3 | Change CTA URLs from HTTP to HTTPS | 15 min | Prevents redirect warnings and improves trust |
| 4 | Add a visible email capture field on the homepage (inline, not popup) | 45 min | Captures emails from the 72 visitors who currently exit without action |
8.3 Tracking Implementation Plan
Phase 1: Critical Events (implement immediately)
| Event Name | Trigger | Properties to Capture |
|---|---|---|
cta_clicked | Any CTA button click | cta_text, cta_location (hero/nav/footer/pricing), destination_url |
signup_started | Landing on /start from CTA | source_page, cta_text, referrer |
signup_completed | $identify after /start flow | plan_selected, billing_cycle |
email_entered | Email field blur/submit on any form | form_location (homepage/pricing/start) |
pricing_viewed | $pageview on /pricing-page/ | referrer, scroll_depth |
Phase 2: Behavior Events (implement within 1 week)
| Event Name | Trigger | Properties |
|---|---|---|
demo_requested | ”Watch Demo” or “Schedule a Demo” click | demo_type |
pricing_tier_selected | Click on Monthly/Quarterly/Yearly toggle | tier, price |
faq_expanded | FAQ accordion expand | question_text |
free_tool_started | Landing on any /free-tools/ page | tool_name |
scroll_depth | 25%, 50%, 75%, 100% scroll milestones on homepage | depth_percentage |
Phase 3: Cross-Domain (implement within 2 weeks)
| Event Name | Trigger | Notes |
|---|---|---|
cross_domain_navigate | Navigation from growreach.app to dashboard.growreach.app | Track person ID persistence |
onboarding_step_completed | Each onboarding step completion | step_name, time_on_step |
linkedin_connected | LinkedIn OAuth callback success | - |
subscription_started | Payment flow initiation | plan, price, billing_cycle |
subscription_completed | Successful payment | plan, price, revenue |
Implementation code snippet (PostHog custom event):
// Example: Track CTA clicks with context
document.querySelectorAll('[data-cta]').forEach(el => {
el.addEventListener('click', () => {
posthog.capture('cta_clicked', {
cta_text: el.textContent.trim(),
cta_location: el.dataset.ctaLocation || 'unknown',
destination_url: el.href,
page: window.location.pathname
});
});
});8.4 A/B Test Proposals
| Test # | Hypothesis | Control | Variant | Primary Metric | Sample Size | Duration |
|---|---|---|---|---|---|---|
| 1 | A shorter, benefit-driven headline will increase CTA clicks | Current headline | ”Automate Your LinkedIn Growth on Autopilot. Start Free.” | CTA CTR (%) | ~400 visitors (200/variant) | ~50 days at current traffic |
| 2 | Adding an inline email capture field above the fold will increase email submissions | No email field | Email input + “Get Started” button (replaces “Start 14-Day Free Trial”) | Email capture rate | ~400 visitors | ~50 days |
| 3 | A sticky mobile CTA bar will increase mobile conversion | No sticky CTA | Fixed bottom bar with “Start Free Trial” button on mobile only | Mobile CTA CTR | ~230 mobile visitors (115/variant) | ~30 days |
Note on sample size: At 236 visitors/30 days (~8/day), A/B tests will take 25-50 days to reach statistical significance. Consider increasing traffic before running tests, or use Bayesian methods that work with small samples.
8.5 30-Day CRO Roadmap
| Week | Focus | Actions | Expected Outcome |
|---|---|---|---|
| Week 1 | Fix critical bugs & tracking | Fix header.classList TypeError; Fix Watch Demo CTA; Fix HTTPS; Add custom event tracking (Phase 1); Install PostHog on dashboard signup flow | Eliminate 1,774 errors; Accurate funnel tracking; Proper attribution |
| Week 2 | Mobile optimization | Test on iOS Safari (identify why 0% conversion); Fix mobile rendering issues; Optimize LCP (lazy load, image compression); Add mobile sticky CTA | Mobile conversion from 1.7% to 5%+; LCP from 2,946ms to <2,500ms |
| Week 3 | Homepage & pricing optimization | Add inline email capture on homepage; Add social proof to pricing page; Reduce pricing page exit rate; A/B test headline (start test #1); Add FAQ schema markup | Homepage email capture 5%+; Pricing exit rate from 73.9% to 50%; CTA CTR from 12.6% to 15% |
| Week 4 | Funnel optimization & A/B testing | Implement Phase 2 tracking events; Analyze A/B test #1 results; Start A/B test #2 (email capture); Create Reddit-specific landing page; Optimize free tools → signup flow | Full funnel visibility; Email capture 10%+; Reddit conversion from 0% to 2%+ |
Appendix A: Error Tracking Issue URLs
| Issue | URL |
|---|---|
| Error 1 (806 occurrences) | https://eu.posthog.com/project/136693/error_tracking/019df798-bc33-7ca0-a973-e3a855c11460 |
| Error 2 (291 occurrences) | https://eu.posthog.com/project/136693/error_tracking/019ecde3-a09a-7bc0-9675-e797f480173d |
| Error 3 (236 occurrences) | https://eu.posthog.com/project/136693/error_tracking/019ec4cd-7ae1-78f3-8439-63b07c1bfa7f |
| Error 4 (129 occurrences) | https://eu.posthog.com/project/136693/error_tracking/019e0657-ced8-7390-9f98-2d609aec7248 |
| Error 10 (33 occurrences) | https://eu.posthog.com/project/136693/error_tracking/019df1f7-ee8f-7033-9f32-ad19e754a22e |
Appendix B: Session Replay URLs
| Session | Description | URL |
|---|---|---|
| Bounced (homepage) | 0 clicks, 0.38 activity, 589s | https://eu.posthog.com/project/136693/replay/019f5abf-4202-7113-9286-8a7473b6f23d |
| Bounced (homepage) | 0 clicks, 0.11 activity, 302s | https://eu.posthog.com/project/136693/replay/019f5745-6ab2-726c-a3f0-0505239b4679 |
| High error (2,812 errors) | 9 clicks, 190s, 93.32 activity | https://eu.posthog.com/project/136693/replay/019f133f-ebe4-744a-a077-06bf6515d68c |
| High error (2,574 errors) | 4 clicks, 101s, 97.16 activity | https://eu.posthog.com/project/136693/replay/019f2ec5-0f39-712c-930b-37a35d730f4f |
| High error (1,797 errors) | 1 click, 2,886s, 38.87 activity | https://eu.posthog.com/project/136693/replay/019f451d-112f-7094-b9af-d1162002a2f8 |
Appendix C: PostHog Project Info
| Property | Value |
|---|---|
| Project | GrowReach PROD |
| Project ID | 136693 |
| Region | EU (eu.posthog.com) |
| Data Window | June 14 - July 13, 2026 (30 days) |
| Total Events | ~1,500+ |
| Total Unique Visitors | 236 |
| Total Pageviews | 741 (regular) + 10 (bot) |
| PostHog Dashboard | https://eu.posthog.com/project/136693 |
| Error Tracking | https://eu.posthog.com/project/136693/error_tracking |
| Session Replays | https://eu.posthog.com/project/136693/replay |
Report generated by CRO Specialist Agent (Hermes) on July 13, 2026 at 22:50 UTC Data source: PostHog MCP (read-only) via HogQL queries and PostHog API tools All data points are from real PostHog queries — no estimates or guesses