Hyrax — end-to-end marketing funnel

Spend → traffic → funnel → signups, by channel, source, country, device · Data pulled live from Google Ads, Vercel, PostHog, Reddit Ads, X Ads, GA4 · Aug 7, 2026
Dates: Source:
Google Ads spend in range (Reddit/X in §4)
site visitors in range/source (Vercel)
0
verified external signups since Aug 5
8
internal/test signups (team, filtered out)

1 · Inputs: what goes in the top

Google Ads spend per day split search vs Demand Gen (bars, left axis) and blog posts published per day (line, right axis). Reddit runs ~$110-140/day and X ~$40-50/day; their APIs report window totals, shown in §4. Responds to the date controls.

2 · The funnel — ads to first job, end to end

Starts where money is spent. Impressions and clicks are platform-reported; site visits are Vercel by UTM source; app stages are PostHog, external people only (8 team/test accounts removed). The funnel uses the three windows where every ad platform reports verified totals. Counts under 10 are directional.
Window: Channel:

3 · Inside the app

PostHog app events since Aug 5, split external vs internal (team). This is where the funnel hands off to product.
EventExternalInternal (team)Read
Reached the app4 people22 people4 real prospects crossed over in 3 days
Created an account08the acquisition funnel ends here today
Onboarding: connect-org screen shown6 views (1 person)19 views (8 people)one external user hit the connect screen 6 times
Onboarding: sample repo opened2 (1 person)13 (8 people)sample-repo path is being exercised in testing
GitHub org connected13the external connect is an existing customer
Jobs submitted / completed2 / 2 (1 person)0an existing customer ran two jobs to completion
Plan changed10one external plan change in the window
Payment failed10a paying external user hit a payment failure; follow up
Rage clicks255 team rage clicks during onboarding testing is a UX signal in itself

4 · Targets and kill rules

The bar this funnel is judged against, set Aug 7. Benchmark sources: GrowthSpree 2026 ($60M+ managed B2B SaaS spend), PipeRocket 2026 (dev-tools cut), Affect Group 2026 (Demand Gen), AdBacklog 2026 (Reddit), WordStream 2026, WebFX (X).
MetricTodayTargetRule
Site visitors / day~6002,000scale winners only; no junk reach buys
Verified external signups / day0100 (leadership goal)first measurable week starts Monday Aug 10
Visitor → signup rate0%2.5-4% (PLG benchmark)pricing v2 + signup CTA + tagged landings shipped Aug 7
Cost per verified signup, per channelnot measurable until UTM handoff ships<$150 (dev-tools CPL benchmark: $855 avg, $180-350 typical B2B)any channel above $150 after one full week of attribution gets cut
Text-ad CTR floorX at 0.2%0.5%X verdict Aug 12 with Reddit text; below floor = cut
Platform-pixel conversionsReddit claims 111 in 3 daysnever steer budget; PostHog-verified numbers only

5 · What's failing and the fix

Every red number on this page, its root cause, the fix, and where the fix stands. Dates are commitments already made, not aspirations.
Failingvs benchmarkRoot causeFixStatus
0 external signups2.5-4% of visitors expectedHomepage CTA pointed at sign-in; 75% of clicks were mobile; ads landed on untagged pages; old pricingSignup CTA fixed + mobile excluded + ads moved to /code-review + pricing v2 and onboarding rebuildALL SHIPPED Aug 5-7 · first measurable week starts Mon Aug 10
No channel attribution for signupsPostHog runs in the app only; UTMs die at the site→app boundaryMarketing-site snippet + cross-domain UTM handoff + identify-by-email at signup (GTM5-66)v0 prompt built, awaiting paste · due this week
Internal/test filter relies on geographyApp does not identify users by email at signupSame GTM5-66 ship adds identify; filter switches from city-cluster to email domainbundled with the row above
X CTR 0.17-0.21%1-3% benchmark, 0.5% kill floorBroad targeting, weak creative resonance; 226K impressions for 381 clicks in 3 daysTagline reframe test running at $50/day; hard verdict with Reddit textVERDICT Aug 12 · below floor = cut
Reddit clicks land untagged on the homepageReddit API partner tier blocks destination edits programmaticallyManual edit in Reddit Ads Manager: destination → /code-review, desktop-only, budget to ~$150/dayPENDING · 2-minute manual change
Reddit pixel claims 111 conversions in 3 days, reality 0$50-150 per qualified B2B signup benchmarkPixel counts view-through and page events, not accountsStanding rule shipped to §4: platform pixels never steer budget; PostHog-verified onlyRULE IN EFFECT Aug 7
hyrax.dev/signup returns 404No redirect on the marketing site; buttons link to app.hyrax.dev/signup directlyOne-line redirect via v0 promptPENDING · found Aug 7
GA4 dead since Jul 28Site redeploy shipped without the tagPostHog becomes the single behavioral source of truth once site snippet ships; GA4 stays for Google Ads conversion import onlydecision folded into GTM5-66
External payment failure (1 user)Unknown; single event in PostHog Aug 5-7Identify the account and follow up directlyNEW · surfaced by this report
2 DG ads "approved (limited)" on YouTubeYouTube content requirements flag on 2 of 5 videosAug 7 URL change re-triggered full review of all 5 adsre-review in progress

5b · Campaign verdicts by channel

Every campaign that spent money in the last 21 days, with its result and its status decision. Windows stated per row.
ChannelCampaignSpend / result (window)Verdict
Google SearchCodeReview_NonBrand$73/day recent · 25 start-free clicks at $7.81 (Jul 30–Aug 6) · tracked signup Aug 6 · CPC $8.15 vs $8.50-14 dev-tools benchmarkWINNER — budget raised to $150/day Aug 7
Google SearchDevSecOps_NonBrand$75-118/day · tracked signup Aug 7WINNER — $120/day + tCPA $35 set Aug 7
Google SearchBrand-Defense$10-24/day · protects the brand queryKEEP — $10/day
Google SearchCodeSecurity_NonBrand$34/day avg · 0 signups (Aug 1–7)PAUSED Aug 7 — winners-only consolidation
Google SearchCompetitorSwitchers_NonBrand$46/day avg · 0 signups (Aug 1–7)PAUSED Aug 7
Google SearchSonarQubeSwitchers_NonBrand$50/day avg · 0 signups (Aug 1–7)PAUSED Aug 7
Google DGDeveloper Review Aug2026 (old)$388 on Aug 5 alone, 1,177 clicks — 2-3 AM international mobile YouTubePAUSED Aug 5 — replaced, never re-enable
Google DGDeveloper Review US (new)735 clicks / $118 today at $0.16 vs $0.40-1.20 optimal benchmark · CTR 3.3% vs 1.5-2.5% optimal · desktop-only, US, daytime, lands on /code-reviewSCALED — $200/day, Max Clicks
RedditTextOnly_Traffic$647 / 2,732 clicks at $0.24 vs $0.60-2.50 benchmark · CTR 3.4% vs 0.2-0.5% benchmark (21 days)WINNER on clicks — verdict on signups Aug 12
RedditQ3_Connect (video)$1,739 / 21 days · 289 pixel conversions at $6.02, unverifiedPAUSED — spend concentrated on text + ConvAds
Reddit3× ConvAd Signups (VibeCoding / Security / ReviewFatigue)$182 / 21 days · 210 pixel conversions at $0.69-1.08, unverifiedACTIVE — verify against PostHog when UTM handoff ships
XText Ads GitHub App v2$360 / 391 clicks · 141K impressions Aug 5 alone · 0 signupsSTOPPED Aug 6
XReframe Text Ads Aug2026$42 yesterday / 84 clicks · CTR 0.21% vs 1-3% benchmark, below the 0.5% kill floor · 0 signupsTEST at $50/day — Tristan's tagline test, runs to verdict
LinkedInAll campaigns (July relaunch)$1,599 Jul 21-27 · 2 real leadsCUT Jul 27 — only Tyler thought-leader boosts remain ($60+$60/day nominal)
MetaAll campaignsCUT Aug 1 (GTM reset)

6 · Spend: how much, over time, and the split

Left: total spend per week by channel. Right: percent distribution for the last full 7 days (Google Jul 31–Aug 6 computed from daily data; Reddit and X Jul 30–Aug 6 as reported by their APIs).
Google spend by week (computed from daily API data): $984 → $1,338 → $1,803 in the current 4-day week, with Demand Gen going from zero to over half the mix after the Aug 4 launch. Add LinkedIn's final week ($1,599, Jul 21-27, cut Jul 27) and Reddit's $2,568 over the trailing 21 days for the full picture. Last 7 days across all live channels: $2,906, split Google 67% / Reddit 26% / X 7%. The $600/day cap took effect Aug 6; Aug 6 ran $761 because two budget changes crossed mid-day, and Aug 7 is pacing inside the cap.

7 · Daily visitors, annotated with every change

Vercel unique visitors per day for the selected source; the selected date range is shaded. Aug 7 is partial.
July's 500-800/day baseline was paid social: mobile, short sessions, high bounce. The Aug 1 reset cut it on purpose and traffic fell to ~120/day. The Aug 5 spike (1,235) was the old Demand Gen campaign spending overnight on international mobile YouTube; it was found that morning and the campaign was rebuilt the same day. Aug 6 onward is the clean baseline: desktop, US, business hours, tagged landing pages.

8 · Traffic by source

Vercel unique visitors by UTM source within the selected dates.

9 · Traffic by country

Vercel unique visitors by country within the selected dates. Product scope is US-only at launch; all Google campaigns are now US-only.

10 · Traffic by device

Vercel unique visitors by device within the selected dates.
All 8 raw signups came from desktop; zero from mobile. GA4's last full baseline (Jul 8-27, tag died Jul 28) measured mobile paid sessions at 30-52 seconds with 80%+ bounce, versus 75-459 seconds on desktop. Mobile is excluded on every non-brand Google campaign as of Aug 7. This split shifts toward desktop from today.

11 · What changed, in order

DateChangeEffect
Jul 27LinkedIn campaigns cut ($1,599 for 2 real leads)Paid social spend to zero
Aug 1GTM reset: Meta cut, budget concentrated on Google/Reddit/XTraffic -85%, junk removed
Aug 44 Demand Gen YouTube videos liveNew reach channel
Aug 53 AM anomaly diagnosed and campaign rebuilt US-only, 7 AM-11 PM ET; PostHog live in appOvernight junk eliminated; signups measurable
Aug 6Maximize Clicks bidding; $600/day all-channel capDG cost per click $0.91 → $0.16
Aug 7Mobile excluded on all non-brand; ads land on tagged /code-review; homepage CTA routed to signup (was signin); 3 losing search campaigns paused; winners' budgets raisedEvery Google dollar on desktop, US, business hours, converting pages