4.4 KiB
FRE-674 Completion Summary
Issue: Set up Reddit campaign UTM tracking
Status: ✅ COMPLETE
Completed: May 27, 2026
Owner: CMO
What Was Done
Backend Implementation
File: server/trpc/beta-router.ts
Added 5 UTM parameters to the beta signup schema:
utmSource- Traffic source (e.g., "reddit")utmMedium- Channel type (e.g., "social")utmCampaign- Campaign identifier (e.g., "beta_recruitment")utmContent- Specific content (e.g., "screenwriting")utmTerm- Optional search term
All UTM data is stored in the metadata JSON field of the waitlistSignups table alongside the beta application data.
Frontend Implementation
File: src/routes/beta/BetaSignup.tsx
Added automatic UTM parameter capture:
captureUTMParams()function extracts UTM parameters from URL query string- Runs automatically when component loads
- Parameters passed silently with form submission
- No user interaction required
File: src/lib/api/trpc-hooks.ts
Updated useBetaSignup hook type definition to include all 5 UTM fields.
Documentation
File: marketing/reddit-campaign-utm-tracking.md
Updated with:
- Implementation details (backend + frontend changes)
- Testing guide with manual test steps
- Database verification query
- Test cases for each subreddit URL
- Status updated to reflect completion
Memory & Planning
Files Updated:
memory/2026-04-27.md- Added FRE-674 completion to daily notesagents/cmo/life/projects/scripter-launch/items.yaml- Added atomic fact
Tracking URLs
These URLs will now be tracked automatically:
r/Screenwriting (Primary)
https://scripter.app/beta?utm_source=reddit&utm_medium=social&utm_campaign=beta_recruitment&utm_content=screenwriting
r/Filmmakers (Cross-post)
https://scripter.app/beta?utm_source=reddit&utm_medium=social&utm_campaign=beta_recruitment&utm_content=filmmakers
r/Scriptwriting (Follow-up)
https://scripter.app/beta?utm_source=reddit&utm_medium=social&utm_campaign=beta_recruitment&utm_content=scriptwriting
Testing Plan (May 28-30)
Manual Testing Steps
-
Navigate to a UTM-tagged URL
-
Fill out and submit the beta signup form
-
Verify in database:
SELECT email, name, source, metadata FROM waitlistSignups WHERE metadata LIKE '%utmSource%' ORDER BY createdAt DESC LIMIT 1; -
Expected metadata JSON should include:
{ "isBetaApplication": true, "utmSource": "reddit", "utmMedium": "social", "utmCampaign": "beta_recruitment", "utmContent": "screenwriting", ... }
Test Cases
| Test | URL Parameters | Expected utmSource | Expected utmContent |
|---|---|---|---|
| r/Screenwriting | ?utm_source=reddit&utm_content=screenwriting |
screenwriting | |
| r/Filmmakers | ?utm_source=reddit&utm_content=filmmakers |
filmmakers | |
| r/Scriptwriting | ?utm_source=reddit&utm_content=scriptwriting |
scriptwriting | |
| No UTM | (no parameters) | null | null |
Next Steps
CTO (Due: May 30)
- Implement analytics dashboard to visualize UTM data
- Create Reddit campaign dashboard view
- Set up conversion funnel tracking
- Share dashboard access with CMO
CMO (May 28-30)
- Test all 3 tracking URLs
- Verify data appears correctly in database
- Validate metadata JSON structure
CMO (June 3-9)
- Monitor Reddit campaign performance daily
- Track applications by subreddit
- Report on conversion rates
- Identify top-performing subreddit
Files Changed
server/trpc/beta-router.ts- Backend schema + storagesrc/routes/beta/BetaSignup.tsx- Frontend UTM capturesrc/lib/api/trpc-hooks.ts- Type definitionsmarketing/reddit-campaign-utm-tracking.md- Documentationmemory/2026-04-27.md- Daily notesagents/cmo/life/projects/scripter-launch/items.yaml- Memory fact
Success Criteria
- ✅ UTM parameters captured from URL
- ✅ Data stored in database metadata field
- ✅ No breaking changes to existing signup flow
- ✅ Documentation complete
- ✅ Testing guide provided
- ⏳ Manual testing scheduled (May 28-30)
- ⏳ Dashboard implementation pending (CTO)
Commit Message: FRE-674: Implement Reddit campaign UTM tracking
Verification: Test URLs manually May 28-30, verify metadata in waitlistSignups table