Graphene — paid acquisition kit (ready to deploy)
Created: 2026-05-20 Status: Drafted, NOT YET LIVE. Deploy after the 4–6 week organic-channel window from the Week-1 channel execution kit closes, OR earlier if organic signal warrants paid amplification. Companion docs:
- 2026-05-19-icp-and-competitor-analysis.md — strategy foundation, ICP, competitor table
- 2026-05-19-graphene-week-1-channel-execution.md — organic kit (Reddit / TikTok / Apple ASO)
- 2026-05-19-graphene-apple-podcasts-aso-sweep.md — per-show ASO recommendations
TL;DR
Five channels evaluated. Ranked by paid-acquisition fit for Graphene's ICP (audio-fiction listeners 22–44):
| Rank | Channel | Why it fits | Starter monthly |
|---|---|---|---|
| 1 | Reddit Ads | Native to fiction-podcast communities. Long-form copy allowed. Lower CPC ($0.40–$1.20) than Meta. Surgical subreddit targeting. | $150 |
| 2 | Apple Search Ads | Highest intent — people typing "audio drama podcast" into Apple Podcasts. Premium quality at modest spend. | $150 |
| 3 | Meta (IG-first) | Broadest reach. Best for retargeting site visitors + lookalike from existing subscribers. Audio fiction is niche so cold-prospecting CPMs run high. | $100 |
| 4 | TikTok Ads (Spark) | Amplifies organic-style creator content. Use Spark Ads on already-performing organic videos, not cold-uploaded ads. | $75 |
| 5 | Google Ads | Defensive (brand searches) + competitor-name keyword bidding where allowed. Search-only at first; YouTube pre-roll Phase 2. | $25 |
Starter monthly: $500. If results are good at week 2, scale to $1500 (3×) at week 4. Don't scale before measuring.
Prerequisites (BEFORE flipping anything on)
1. Install missing pixels
GA4 + Meta Pixel are already in layout.tsx (via NEXT_PUBLIC_GA_MEASUREMENT_ID + NEXT_PUBLIC_FB_PIXEL_ID). Missing:
- Reddit Pixel — Reddit Ads Manager → Events Manager → Create Pixel. Add the base script to layout.tsx behind
NEXT_PUBLIC_REDDIT_PIXEL_ID. FireSignUpevent on the same trigger astrackSignUpinanalytics.ts. - TikTok Pixel — TikTok Business → Ads Manager → Events → Create Pixel. Add the base script to layout.tsx behind
NEXT_PUBLIC_TIKTOK_PIXEL_ID. FireCompleteRegistrationon signup,Subscribeon subscription start.
2. Confirm conversion events fire
Open the site in incognito + use a test ad-platform debug tool (Meta Pixel Helper, Reddit Pixel debugger) to confirm:
| Event | Where it fires | Maps to (platform names) |
|---|---|---|
page_view | every page | Meta PageView, Reddit PageVisit, TikTok ViewContent, GA4 page_view |
sign_up | trackSignUp() after Supabase signup completes | Meta CompleteRegistration, Reddit SignUp, TikTok CompleteRegistration, GA4 sign_up |
purchase | trackPurchase() after Stripe webhook confirms subscription | Meta Subscribe, Reddit Purchase, TikTok Subscribe, GA4 purchase |
listen_started | first audio play on a show page | (Custom event — used for optimization later) |
3. UTM convention — single source of truth
Every paid link uses this pattern so reports stack consistently:
?utm_source={platform}&utm_medium=paid&utm_campaign={brand-and-show}&utm_content={ad-variant}&utm_term={audience-or-keyword}
Examples:
- Reddit
r/audiodramapost promoting Last Reflection, ad variant "interactive":?utm_source=reddit&utm_medium=paid&utm_campaign=graphene-last-reflection&utm_content=interactive-letters&utm_term=r-audiodrama - Apple Search Ad on keyword "fiction podcast":
?utm_source=apple-search&utm_medium=paid&utm_campaign=graphene-network&utm_term=fiction-podcast
4. Landing-page split
Don't send paid traffic to graphene.fm/ (home). Send to:
- Catalog ad →
graphene.fm/?utm_…(which renders/graphene) - Show-specific ad →
graphene.fm/seasons/[id]?utm_…(the show's detail page) - Upgrade-focused ad →
graphene.fm/graphene-plus?utm_…(the upgrade landing)
Show-specific ads convert ~2× catalog ads (specificity reduces decision friction).
1. Reddit Ads
Targeting
Subreddit targeting (use Reddit's "Communities" targeting, not interests):
Tier A (highest fit — start here):
r/audiodrama(~150K) — the audio-fiction subredditr/podcasts(~3M) — broader but filter to fiction-flair if availabler/audiobooks(~600K) — adjacent audiencer/PodcastSharing(~50K) — discovery-mode listeners
Tier B (expansion after Tier A proves):
r/WelcomeToNightVale,r/TheMagnusArchives,r/oldradiomystery— show-specific audiences with high lookalike fitr/Severance,r/RussianDoll,r/DarkNetflix— meta-fictional / unreliable-narrator fansr/horrorlit,r/printSF— adjacent fiction-reader communities likely to convert to audio
Tier C (broader reach test, Phase 2):
r/booksuggestions,r/Fantasy,r/MysteryFiction
Geo: US, UK, Canada, Australia, Ireland, New Zealand (English-only fiction). 70% spend US.
Age: 22–44.
Bid type: CPC (Cost Per Click), start at $0.60 max bid. Reddit Ads tends to overbid on auto.
Three creative variants (rotate evenly Week 1)
Variant A — Listener letters bend canon (lead)
Headline (60 char):
Listeners write to characters. The next chapter responds.
Body (300 char):
Graphene is an audio-fiction network where you can mail a character mid-story. If we like your letter, it bends the next chapter's canon. Eight original shows, weekly new chapters, free to listen. Start with The Last Reflection — a hotel where guests disappear into mirrors.
CTA button: "Listen free" → graphene.fm/seasons/[last-reflection-id]?utm_source=reddit&utm_medium=paid&utm_campaign=graphene-last-reflection&utm_content=letters-bend-canon
Visual: Screenshot of a real listener letter beside a 3-line excerpt from the chapter it influenced. (Anonymize the letter sender's name.)
Variant B — Differentiate from AI slop
Headline:
Audio fiction, written by AI characters with their own continuity.
Body:
Not "ChatGPT writes a podcast." Each show on Graphene has an AI writer with their own MBTI, backstory, and journal that shapes the next chapter. Human review on every release. Eight shows on the slate. Free.
CTA button: "Browse shows" → graphene.fm/?utm_…&utm_content=writer-fleet
Visual: 3×2 grid of writer-persona portraits with their MBTI + active show below each.
Variant C — Genre-specific (test for mystery audience)
Headline:
A mirror in every hotel room shows a different version of you.
Body:
The Last Reflection is a serialized mystery on Graphene — weekly chapters, full cast, listener letters shape canon. Ch.1 free, ~25 min. If you liked The Magnus Archives or Limetown, this is built for you.
CTA button: "Start Ch.1" → graphene.fm/seasons/[id]?utm_…&utm_content=mystery-positioning
Visual: Show's poster art at 1080×1080. Title + 1-line hook overlaid.
Variant D — r/audiodrama-tailored (community-aware copy)
Where to run: r/audiodrama ONLY. Do not run this copy in other subs — it speaks the language of the most demanding fiction-podcast community and will read as awkward / overwrought elsewhere.
Why a separate variant. r/audiodrama users are vocal about three things: (1) production quality, (2) suspicion of AI involvement, (3) hostility to marketing-speak. Generic ad copy gets downvoted into oblivion. This variant front-loads disclosure + craft signals so the community's trust filters don't immediately reject the post.
Headline (60 char):
AI-written, human-reviewed audio fiction. Honest about both.
Body (300 char):
Each writer on Graphene is an AI persona with their own MBTI + journal history shaping the next chapter. Every release runs through human review. Not slop. The Last Reflection — hotel mystery, MC sees alternate timelines in mirrors. Ch.1 free, no signup required to listen.
CTA button: "Listen Ch.1 (no signup)" → graphene.fm/seasons/[id]?utm_source=reddit&utm_medium=paid&utm_campaign=graphene-r-audiodrama&utm_content=ai-honest&utm_term=r-audiodrama
Visual: Show poster art, but DESATURATED + with a small footer line: "Each show on Graphene has an AI writer with their own continuity. Human review on every release." — embedded in the image itself so users who block UTM tracking still see the disclosure.
Why "no signup required to listen" in the CTA. r/audiodrama hates email-walls. The product already supports anonymous play on chapter 1 — leaning into that removes a major objection before they click.
Risk note. This copy honestly discloses the AI angle, which is the right call for the community but will lower CTR vs. variants A/B that don't lead with it. The trade-off is comment quality + conversion quality + not getting downvoted into oblivion. Optimize for CAC, not raw CTR, on this variant.
What to measure (per variant)
- CTR — Reddit's display benchmark is ~0.6%. Audio fiction posts often see 1.5–3% (community fit).
- CPC — should land $0.40–$1.20 in Tier A subreddits.
- Conversion rate to signup — track in GA4 with the UTM filter. Healthy = 3–8%.
- CAC (cost per signup) — target < $5 for Tier A subreddits. < $12 acceptable for Tier B.
- Comment sentiment — Reddit Ads still get organic comments. Read them. If 3+ critical comments mention "feels AI-generated" → quality issue, pause + investigate.
Budget
- Tier A: $100 split across 3 variants ($33 each) → 7-day learning phase
- Tier B test: $50 once Tier A has a winning variant identified
2. Apple Search Ads (ASA)
Why it punches above its weight
Apple Search Ads is the only paid channel where the buying intent is "I am literally typing this into the podcast app right now." Conversion rates run 30–60% on well-targeted keywords. Reach is modest but quality is unmatched.
Setup
- Apple Search Ads Connect (
searchads.apple.com) — link to App Store Connect account. - Apple Podcasts ads run separately from App Store Search Ads — confirm you're in the Podcasts module.
- Each Graphene show needs to be available on Apple Podcasts (per-show feeds are in the ASO sweep doc) before you can ASA-target it.
Keywords (broad-match, then refine)
Network-level (drive to graphene.fm catalog):
audio drama podcast(high volume, broad)audio fiction podcastserialized fiction podcastinteractive podcastfiction podcast new
Show-level (drive to the show's Apple Podcasts page):
| Show | Keywords |
|---|---|
| The Last Reflection | mystery podcast hotel, mirror podcast, audio drama mystery |
| Endless Rewind | time loop podcast, audio drama time travel |
| Whispers in the Circuitry | cyberpunk podcast, sci-fi audio drama, tech horror podcast |
| Erasure | unreliable narrator podcast, psychological audio drama |
| A Reverie in Dissonance | music audio drama, orchestra podcast fiction |
| Glitches in the Fabric | simulation podcast, reality bending podcast |
| Clearance | corporate thriller podcast, mystery audio drama |
| The HOA Warz | suburban thriller podcast, dark comedy audio drama |
Competitor brand bidding (use cautiously — some networks frown on it):
welcome to night vale(high volume, audio-drama-adjacent) — ad copy must not impersonatemagnus archives(loyal audience, prime crossover)limetown,the bright sessions,wolf 359— smaller volume but very tight fit
Brand bidding is allowed by Apple but check competitor's IP-protection policies; pull a keyword immediately if challenged.
Creative
ASA shows the show's cover art + show name + author. Make sure each show's Apple Podcasts metadata is fully optimized (this is covered in the ASO sweep doc).
Apple gives you one custom ad text field per campaign. Use:
Serialized audio fiction. Listener letters shape the story.
That's the wedge, identical across all keywords, 56 characters.
Budget
- Network-level keywords: $80/mo
- Show-level keywords (top 3 shows): $70/mo split
Bid: start with Apple's recommended max CPT (cost per tap), usually $0.50–$2.00 for podcast keywords. Lower for long-tail keywords like mystery podcast hotel.
What to measure
- TTR (tap-through rate) — Apple's display benchmark is 50% for high-relevance keywords (audio fiction listeners ARE looking for fiction podcasts).
- CPS (cost per subscribe) — Apple reports this directly. Target < $1.50 per show subscribe.
- Show-level conversion — does the show's Apple Podcasts subscribe count increase after ASA launch?
3. Meta (Instagram + Facebook)
Why third, not first
Meta has scale but audio fiction is niche → cold-prospecting CPMs run high ($25–$50 for the target interest stack). Meta is most efficient when used for:
- Retargeting site visitors who didn't subscribe (low CPM, high intent)
- Lookalike audiences from existing subscribers (1% lookalike on subscribers list)
- Custom audience from email list (if/when one exists)
Use Meta as the AMPLIFIER, not the prospector.
Setup
- Meta Pixel is already installed (
NEXT_PUBLIC_FB_PIXEL_ID) — verify it's firing in Meta Events Manager → Test Events. - Add the Subscribe event firing on the Stripe webhook completion (currently fires
purchaseintrackPurchase(); confirm it maps to MetaSubscribeevent inanalytics.ts:66).
Audiences
Retargeting (priority — start here):
Visitors_30d_no_subscribe— 30-day site visitors who firedpage_viewbut notsign_upVisitors_listened_no_subscribe— fired the customlisten_startedevent but notsign_up(highest intent group)
Lookalike (Phase 2, after retargeting proves):
3. LAL_1pct_Subscribers — 1% lookalike of confirmed subscribers
4. LAL_2pct_Listeners — 2% lookalike of users who listened to any episode
Interest-based prospecting (Phase 3 only):
5. Interests: Welcome to Night Vale, The Magnus Archives, Audio drama, Audiobooks, Podcasts, Audible (Audiobooks), Limetown (Podcast), The Bright Sessions. Combine with Books and literature for breadth.
Three creative variants (Reels-first, square fallback)
Variant A — Carousel: Show roster
5-card carousel, each card a show:
- Poster + show name + 1-line hook
- Poster + show name + 1-line hook
- … (5 shows total)
- Final card: "8 shows. Weekly chapters. Free." + CTA button "Start listening" →
graphene.fm/?utm_source=meta&utm_medium=paid&utm_campaign=carousel-roster&utm_content=8-shows
Variant B — Reel: 15-sec audio clip + visual
- 0–3s: Black screen, dramatic line from the chapter as kinetic text
- 3–12s: Audio clip plays, visual is poster art + Drift Coin animation
- 12–15s: "Listener letters shape what happens next. graphene.fm"
- CTA: "Listen now"
Variant C — Static (best for retargeting): "You started but didn't finish"
Static image, dark background, show poster + text:
You played 8 minutes of "The Last Reflection." Pick it back up — listener letters in Ch.3 changed the story.
Only show to users who fired listen_started but not sign_up. Retargeting copy needs to know what the user did.
Budget
- 60% retargeting ($60), 40% lookalike + prospect ($40) at $100/mo starter
- Scale lookalike ratio up after retargeting CPA stabilizes
What to measure
- CPM — should be $20–$40 for retargeting, $30–$60 for lookalike
- CPA (cost per signup) — target < $8 retargeting, < $20 lookalike, < $35 cold prospect
- ROAS (return on ad spend) — calculate based on Graphene+ LTV; if $5/mo subscription + 6-month avg lifetime = $30 LTV, ROAS goal is 1.5× ($20 CAC)
4. TikTok Ads (Spark Ads only, not cold)
Philosophy
Cold-uploaded TikTok ads ("In-Feed Ads") historically convert poorly for niche fiction. Spark Ads — boosting an organic video that already proved completion + engagement — convert 3–5× better and feel native.
This means TikTok Ads doesn't get budget until you have at least one organic TikTok with > 20% completion rate AND > 5,000 views (from the organic-channel kit). Until then, $0 spend on TikTok.
When ready (post-organic-proof)
- Identify the best-performing organic video (highest completion rate × view count)
- Whitelist it as a Spark Ad in TikTok Ads Manager (one-click from Creator UI)
- Target: Interest in "Books & Literature", "Mystery & Thriller", "Podcasts" + Lookalike from site visitors (TikTok Pixel)
- Geo: US + UK + Canada + Australia
- Age: 18–35 (TikTok skews younger than overall ICP)
- Optimization:
Complete Payment(subscription event) — TikTok's algorithm needs this to find converters
Creative — boost organic, don't fabricate
Per the organic-channel kit, three variants are in production:
- Variant A — Interactive mechanic (listener letter influences chapter)
- Variant B — Dramatic clip + reveal
- Variant C — Writer-fleet reveal
Whichever wins organic → that's your Spark Ad creative. No new creative needed.
Budget
- $75/mo starter (low because Spark Ads are amplification, not prospecting)
- Bid: TikTok's auto-bid. Manual bidding is brittle for low-spend campaigns.
What to measure
- Completion rate — must stay > 15% as a paid ad (lower than organic but still healthy)
- CPV (cost per view) — should land $0.02–$0.06 for boosted-organic content
- CPA — target < $15 cold, < $5 retargeting (TikTok Pixel needed for retargeting)
5. Google Ads
Why last + smallest budget
Audio fiction has low search intent compared to evergreen genres (true crime, news, etc.). Google Ads is most useful for:
- Defensive brand bidding — own the SERP for "graphene podcast", "graphene audio fiction", "graphene.fm"
- Competitor brand bidding — selectively (same caveats as ASA)
- YouTube pre-roll — once a video asset exists (Phase 2)
Search campaign — defensive (priority)
Keywords (exact + phrase match):
graphene podcast[graphene fiction]"graphene audio drama"graphene.fmgraphene fm podcast
Ad copy:
Graphene — Audio Fiction Network Listen free. Listener letters shape the story. Weekly chapters. 8 original shows. Start now.
graphene.fm
Budget: $15/mo. Brand keywords are cheap ($0.10–$0.50 CPC). The point is to own the SERP, not drive volume.
Search campaign — competitor (optional)
Keywords:
welcome to night vale podcast(Phrase Match)magnus archives podcast(Phrase Match)limetown podcast,wolf 359 podcast(Phrase Match)
Ad copy:
Like Welcome to Night Vale? Try Graphene — listener-driven audio fiction. 8 shows. Free.
graphene.fm
Budget: $10/mo. Bid low ($0.50 max). The volume is modest and competitor brands will outbid you on their own terms — that's fine, you only want the searchers who clicked past their #1 result.
YouTube pre-roll (Phase 2 — needs video asset)
Skip until you have:
- A 30-sec trailer video for at least one show (poster art animation + 25-sec audio clip + CTA card)
- $200+/mo Google Ads budget capacity
When ready: target Podcasts > Fiction channel category + interest-based audiences. CPV target $0.04–$0.10.
Budget split scenarios
Starter — $250/mo (lean test)
| Channel | Amount | Goal |
|---|---|---|
| Reddit Ads | $100 | Top 1 priority — qualitative + quantitative signal |
| Apple Search Ads | $100 | High-intent baseline conversion data |
| Meta (retargeting only) | $50 | Recover undecideds from organic visits |
| TikTok | $0 | Defer until organic proves |
| Google (brand only) | $0 | Defer until you have brand awareness to defend |
Default — $500/mo (recommended starting budget)
| Channel | Amount | Notes |
|---|---|---|
| Reddit Ads | $150 | $100 Tier A + $50 Tier B test |
| Apple Search Ads | $150 | Network + 3 priority show keywords |
| Meta (Retargeting + LAL) | $100 | $60 retargeting + $40 lookalike |
| TikTok Spark Ads | $75 | Boost organic winner |
| Google Ads (brand) | $25 | Defensive only |
Scale — $1500/mo (post-week-2 if results warrant)
| Channel | Amount |
|---|---|
| Reddit Ads | $400 |
| Apple Search Ads | $400 |
| Meta | $350 |
| TikTok | $250 |
| Google (search + YouTube starter) | $100 |
Don't scale until week-2 results show CAC < $15 blended across all channels.
Two-week decision tree
Run all channels concurrently for 14 days, then evaluate:
If blended CAC < $10
You over-shot fit. Scale 3× immediately. The market is hungry.
If blended CAC $10–$25
Healthy. Identify the lowest-CAC channel and increase its budget 50%. Trim worst-performing channel 50%.
If blended CAC $25–$60
Concerning but salvageable. Review:
- Are conversion events firing correctly? (Test the funnel manually.)
- Is the landing page converting? (Check
landing_page_visit→sign_upratio.) - Are the ad creatives generating the right intent? (High CTR + low conversion = wrong audience.)
If blended CAC > $60
Pause everything. The ICP-message-channel triangle is misaligned. Go back to the ICP doc and reconsider. Common causes:
- Wrong landing page (sending paid traffic to /graphene catalog instead of show-specific page)
- Pixel misfires (you're paying for clicks but events aren't tracking, so optimization breaks)
- Sub-Reddit / Pinterest / TikTok showing ads to the wrong age band
If a single channel dominates (>60% of conversions)
That's the channel. Triple its budget, deprioritize the others. Don't be "balanced" out of fear.
KPI dashboard — what to actually look at
Track these weekly in a Google Sheet (or build an admin dashboard later):
| KPI | Target (Wk 4) | Source |
|---|---|---|
| Cost per signup, blended | < $15 | (Total ad spend ÷ signups attributed) |
| Cost per paying subscriber, blended | < $30 | (Total ad spend ÷ Graphene+ subscriptions started) |
| % of signups from paid | 30–50% | UTM-tagged sign_up events ÷ total sign_up events |
| Best-performing channel CAC | < $8 | The single channel doing the heaviest lifting |
| Subscription LTV | Track | Average revenue per Graphene+ subscriber × avg months retained |
| ROAS (LTV / CAC) | > 1.5× | LTV ÷ CAC. Below 1× means you're paying more to acquire than you'll ever earn. |
What's NOT in this doc (intentionally)
- Influencer / podcast critic sponsorships — qualitatively different from paid ads. Worth their own doc once paid is steady.
- Affiliate program — needs subscription-LTV data to set commission rate. Revisit Q3.
- Email drip sequence — owned channel, separate workstream.
- SEO / content marketing — separate workstream; long timeline; doesn't overlap with paid in a meaningful way for niche audio fiction.
- Substack / Medium guest posting — owned-network play, not paid acquisition.
- Display network / programmatic ads — too low intent for niche fiction; skip.
When to deploy this kit
Earliest possible deploy: Week 4 of organic. Per the Week-1 channel kit:
Wait 4-6 weeks for organic signal first.
The 4–6 week wait gives you:
- A qualitative read on which message resonates (from Reddit comments)
- A quantitative baseline (organic conversion rate to subscribe)
- At least one TikTok winner to Spark-amplify
- Apple ASO compounding effect (organic ranks before you pay)
Pull-forward triggers that justify deploying paid before Week 4:
- A single show breaks 1K Apple Podcasts subscribes in < 14 days (signal the wedge works)
- An organic Reddit post produces 50+ sub. conversions in 48h (paid scaling validated)
- A TikTok lands > 100K views with > 25% completion (Spark Ads readiness)
Defer triggers that mean "don't deploy this kit yet":
- Apple ASO sweep not complete (no per-show keyword infrastructure)
- Reddit r/audiodrama post hasn't been published (no qualitative ground truth)
- Conversion events not firing reliably (you'd be optimizing blind)
Revisit cadence
This kit is a starting framework, not a fixed plan. Revisit every 30 days with the data you've collected. The scheduled-prompt for 2026-06-02 marketing revisit is the formal forum for the first review.