marketing

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:


TL;DR

Five channels evaluated. Ranked by paid-acquisition fit for Graphene's ICP (audio-fiction listeners 22–44):

RankChannelWhy it fitsStarter monthly
1Reddit AdsNative to fiction-podcast communities. Long-form copy allowed. Lower CPC ($0.40–$1.20) than Meta. Surgical subreddit targeting.$150
2Apple Search AdsHighest intent — people typing "audio drama podcast" into Apple Podcasts. Premium quality at modest spend.$150
3Meta (IG-first)Broadest reach. Best for retargeting site visitors + lookalike from existing subscribers. Audio fiction is niche so cold-prospecting CPMs run high.$100
4TikTok Ads (Spark)Amplifies organic-style creator content. Use Spark Ads on already-performing organic videos, not cold-uploaded ads.$75
5Google AdsDefensive (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. Fire SignUp event on the same trigger as trackSignUp in analytics.ts.
  • TikTok Pixel — TikTok Business → Ads Manager → Events → Create Pixel. Add the base script to layout.tsx behind NEXT_PUBLIC_TIKTOK_PIXEL_ID. Fire CompleteRegistration on signup, Subscribe on 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:

EventWhere it firesMaps to (platform names)
page_viewevery pageMeta PageView, Reddit PageVisit, TikTok ViewContent, GA4 page_view
sign_uptrackSignUp() after Supabase signup completesMeta CompleteRegistration, Reddit SignUp, TikTok CompleteRegistration, GA4 sign_up
purchasetrackPurchase() after Stripe webhook confirms subscriptionMeta Subscribe, Reddit Purchase, TikTok Subscribe, GA4 purchase
listen_startedfirst 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/audiodrama post 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 adgraphene.fm/?utm_… (which renders /graphene)
  • Show-specific adgraphene.fm/seasons/[id]?utm_… (the show's detail page)
  • Upgrade-focused adgraphene.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 subreddit
  • r/podcasts (~3M) — broader but filter to fiction-flair if available
  • r/audiobooks (~600K) — adjacent audience
  • r/PodcastSharing (~50K) — discovery-mode listeners

Tier B (expansion after Tier A proves):

  • r/WelcomeToNightVale, r/TheMagnusArchives, r/oldradiomystery — show-specific audiences with high lookalike fit
  • r/Severance, r/RussianDoll, r/DarkNetflix — meta-fictional / unreliable-narrator fans
  • r/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

  1. Apple Search Ads Connect (searchads.apple.com) — link to App Store Connect account.
  2. Apple Podcasts ads run separately from App Store Search Ads — confirm you're in the Podcasts module.
  3. 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 podcast
  • serialized fiction podcast
  • interactive podcast
  • fiction podcast new

Show-level (drive to the show's Apple Podcasts page):

ShowKeywords
The Last Reflectionmystery podcast hotel, mirror podcast, audio drama mystery
Endless Rewindtime loop podcast, audio drama time travel
Whispers in the Circuitrycyberpunk podcast, sci-fi audio drama, tech horror podcast
Erasureunreliable narrator podcast, psychological audio drama
A Reverie in Dissonancemusic audio drama, orchestra podcast fiction
Glitches in the Fabricsimulation podcast, reality bending podcast
Clearancecorporate thriller podcast, mystery audio drama
The HOA Warzsuburban 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 impersonate
  • magnus 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:

  1. Retargeting site visitors who didn't subscribe (low CPM, high intent)
  2. Lookalike audiences from existing subscribers (1% lookalike on subscribers list)
  3. 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 purchase in trackPurchase(); confirm it maps to Meta Subscribe event in analytics.ts:66).

Audiences

Retargeting (priority — start here):

  1. Visitors_30d_no_subscribe — 30-day site visitors who fired page_view but not sign_up
  2. Visitors_listened_no_subscribe — fired the custom listen_started event but not sign_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:

  1. Poster + show name + 1-line hook
  2. Poster + show name + 1-line hook
  3. … (5 shows total)
  4. 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)

  1. Identify the best-performing organic video (highest completion rate × view count)
  2. Whitelist it as a Spark Ad in TikTok Ads Manager (one-click from Creator UI)
  3. Target: Interest in "Books & Literature", "Mystery & Thriller", "Podcasts" + Lookalike from site visitors (TikTok Pixel)
  4. Geo: US + UK + Canada + Australia
  5. Age: 18–35 (TikTok skews younger than overall ICP)
  6. 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:

  1. Defensive brand bidding — own the SERP for "graphene podcast", "graphene audio fiction", "graphene.fm"
  2. Competitor brand bidding — selectively (same caveats as ASA)
  3. 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.fm graphene 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)

ChannelAmountGoal
Reddit Ads$100Top 1 priority — qualitative + quantitative signal
Apple Search Ads$100High-intent baseline conversion data
Meta (retargeting only)$50Recover undecideds from organic visits
TikTok$0Defer until organic proves
Google (brand only)$0Defer until you have brand awareness to defend
ChannelAmountNotes
Reddit Ads$150$100 Tier A + $50 Tier B test
Apple Search Ads$150Network + 3 priority show keywords
Meta (Retargeting + LAL)$100$60 retargeting + $40 lookalike
TikTok Spark Ads$75Boost organic winner
Google Ads (brand)$25Defensive only

Scale — $1500/mo (post-week-2 if results warrant)

ChannelAmount
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_visitsign_up ratio.)
  • 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):

KPITarget (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 paid30–50%UTM-tagged sign_up events ÷ total sign_up events
Best-performing channel CAC< $8The single channel doing the heaviest lifting
Subscription LTVTrackAverage 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.

2026 05 20 Graphene Paid Acquisition Kit — Docs | HiveJournal