Skip to content

Cherry City PPC — Phase 1 Prospecting

Phase 1 Meta paid campaign that drives the unified Cherry City LP. Companion to unified-cherry-city-lp/spec.md — the LP spec covers what gets built; this spec covers the campaign that drives traffic to it. Goal is brand awareness + retargeting-pool building, not direct conversion. Phase 2 (retargeting on warmed pool, Sales-objective optimization) is a separate spec authored when warm pool reaches the launch trigger.

Why

Per docs/marketing/paid-meta.md, Salem's cold-traffic audience is too small (≤5k for the 5% LAL of Salem +25mi) for direct Sales-objective optimization to clear Meta's Learning Phase. Meta's recommended floor for stable conversion optimization is 500k–1M reach; Cherry City is two orders of magnitude below that. The strategy is phased: Phase 1 (this spec) builds awareness + warm pool with Traffic-LPV optimization; Phase 2 retargets the warmed pool with Sales-objective conversion campaigns.

LandingFunnelChoice (the unified mid-funnel event built in the LP spec) fires here as a measurement signal + retargeting-audience seed — not as the optimization target. Optimization on a custom event in a 5k pool is theater; the algorithm needs within-pool variance the pool can't provide. The event is consumed in Phase 2.

Locked decisions

Campaign

  • Campaign name: Cherry City - Unified Prospecting (published 2026-05-06)
  • Ad set name: TOFU - Advantage Lookalike 5 percent
  • Ad name: This sucks
  • Objective: Traffic (not Sales)
  • Performance goal: Maximize Number of Landing Page Views (not Link Clicks — LPV filters out immediate bounces and improves traffic quality)
  • Budget: $100/day, fully Phase 1. Do not split with retargeting until warm pool exists.
  • Schedule: continuous; review at 14-day intervals
  • Migration (executed 2026-05-06): duplicated existing META_CherryCity_Monthly; changed Objective to Traffic during the duplicate creation flow. Both META_CherryCity_Monthly and META_CherryCity_Hourly paused at launch (not deleted) — preserves historical data + post-level engagement on existing winning ads for future Use Existing Post.

Audience

  • Audience type: Advantage+ Audience (Meta AI-driven targeting). 2026 default best practice for Traffic-objective campaigns at $50+/day with proven audience seed signal.
  • Audience suggestion: 5% LAL Monthly Members (existing seed)
  • Geo: Salem, OR + 25 mi radius (locked — Meta cannot expand outside the geo, only within it)
  • Age suggestion: 25–45 (skewed toward the 30s drummer ICP per docs/marketing/icp.md; Advantage+ may flex outside this if signal supports it)
  • Exclude (hard filter): existing-customer Custom Audience (existing — reuse from Monthly campaign). Hard exclusions are respected even under Advantage+ Audience.

Why Advantage+ over manual targeting: Meta gutted detailed interest stacking on Jan 15 2026; the manual "interest layer" alternative has lost most of its material. At Cherry City's $100/day budget on a 5k LAL pool, Meta's algorithm finds within-pool variance better than manual stacking can. Advantage+ exits Learning Phase ~30% faster and is the 2026 default for accounts ≥$50/day. See docs/marketing/paid-meta.md for fuller reasoning.

Plan B if Advantage+ underperforms after 14 days (CPM rising fast, low LPV-per-dollar, frequency >5/week with no LPV growth): override audience to manual — 5% LAL Monthly Members + 3 broad music-related interests (verify which still resolve in Ads Manager: e.g., "Music," "Musical instruments," "Concerts") + Page-based interest layer (Guitar Center, Sweetwater, Reverb — gear retailers, not instrument brand Pages). Hold this in reserve, don't run it as a parallel ad set.

Frequency cap is not directly settable under Traffic objective (Meta restricts frequency capping to Reach objective). Manage frequency via monitoring + creative refresh.

Creative

  • Format: AI-generated split-image still, four aspect-ratio variants (Canva-composed)
  • Image asset: this-sucks-ad.png (canonical 4:5; other ratios composed in Canva)
  • Aspect ratios uploaded via Flexible media:
  • 4:5 (1080×1350) — Facebook Feed, Instagram Feed (primary)
  • 1:1 (1080×1080) — Marketplace, FB right column, IG Explore, Search results
  • 9:16 (1080×1920) — Reels (FB + IG), Stories (FB + IG + Messenger)
  • 16:9 — Audience Network, in-stream image overlays
  • Top half: cramped working-class apartment, band rehearsing despite the chaos. Mixed-use clutter (laundry, kids' toys, mail, dirty mugs, takeout, baby monitor, closed laptop). "Quiet Hours" notice on door. Marshall stacks. Practical daylight. Working faces.
  • Bottom half: same band in actual Cherry City studio. Acoustic treatment + installed mood lighting (purple). Professional, on-brand.
  • Headline overlay: "This sucks." (top) / "This doesn't." (bottom)
  • Price line (small, white, bottom of image): "Go private from $285 mo or drop-in from $15 hr"
  • Logo: Metrognome, bottom right
  • Placements: Advantage+ Placements (with all four aspect-ratio variants uploaded via Flexible media — Meta auto-matches each variant to the placements it fits)

Creative rationale + voice principles documented in docs/marketing/positioning.md and docs/marketing/brand-voice.md.

Copy

  • Primary text: "Salem bands: practicing in your apartment sucks. Cherry City built rooms for this."
  • Headline (under image): "Salem rehearsal studios — from $15/hr"
  • Description: blank
  • CTA button: Learn More
  • Destination URL: production /lp/cherry-city

Voice consistency rule: in-image headline, primary text, and Meta headline must use the audience's word ("sucks"), not synonyms.

Custom audiences

Define before launch (zero-cost; populates from day 1; not running ads against them in Phase 1, but they accumulate retargeting fuel for Phase 2). URL rule per Meta best practice: URL contains, not URL equals.

Audience name Source Rule Lookback
LP visitors — 30d Pixel / Website URL contains /lp/cherry-city 30 days
LP visitors — 60d Pixel / Website URL contains /lp/cherry-city 60 days
LP visitors — 90d Pixel / Website URL contains /lp/cherry-city 90 days
LandingFunnelChoice (any) — 90d Pixel / Website event = LandingFunnelChoice 90 days
LandingFunnelChoice (monthly) — 90d Pixel / Website event = LandingFunnelChoice AND content_name = "monthly" 90 days
LandingFunnelChoice (hourly) — 90d Pixel / Website event = LandingFunnelChoice AND content_name = "hourly" 90 days
ScrollDepth75 — 90d Pixel / Website event = ScrollDepth75 90 days
Page engagers — 365d Engagement Facebook Page + Instagram Account engagement 365 days

The Page-engagers audience can be defined immediately (no LP dependency). All others gate on Pixel/CAPI events going live (see Engineering dependencies below).

Engineering dependencies

This campaign cannot launch until the following ship:

  1. LP /lp/cherry-city live — owned by unified-cherry-city-lp/spec.md
  2. Pixel + CAPI events for LandingFunnelChoice — fires on fork-CTA clicks (per LP spec)
  3. Pixel + CAPI events for ScrollDepth75 — fires once per session when scroll passes 75% on the LP, plus matching CAPI server event with eventID for dedup. Same dedup pattern as LandingFunnelChoice. Specified in unified-cherry-city-lp/spec.md.

Verify all three events in Events Manager → Test Events tab once the LP is live, by manually triggering each on production, before launching the campaign.

Custom Conversions are NOT required in Phase 1 — Custom Audiences can reference the raw Pixel custom events directly. Custom Conversion wrapping may be needed in Phase 2 if these events become Sales-objective optimization targets.

Setup runbook (Meta Ads Manager)

After engineering ships:

  1. Verify events fire. Events Manager → Data Sources → Pixel → Test Events. Click each fork CTA on production; scroll the page past 75%. All three events register live.
  2. Define Custom Audiences per the table above. Audiences → Create Audience → Custom Audience → Website (for Pixel-based) or Engagement (for Page engagers).
  3. Duplicate the existing Cherry City Monthly campaign in Ads Manager. During the duplicate creation flow, change Campaign Objective to Traffic. Set names: campaign Cherry City - Unified Prospecting, ad set TOFU - Advantage Lookalike 5 percent, ad This sucks.
  4. Configure ad set:
  5. Performance goal: Maximize Number of Landing Page Views
  6. Audience type: Advantage+ Audience
  7. Audience suggestion: 5% LAL Monthly Members
  8. Hard exclusion: existing-customer Custom Audience
  9. Age suggestion: 25–45
  10. Geo: Salem +25mi
  11. Placements: Advantage+ Placements (default)
  12. Budget: $100/day
  13. Schedule: continuous
  14. Configure ad per the Copy + Creative sections above.
  15. Pause original Monthly + Hourly campaigns. Do not delete.
  16. Submit for review. Meta review typically 24–48 hr.

Monitoring + saturation signals

Phase 1 operates on a small audience (~5k people) with a $100/day budget. Saturation density is roughly 50:1 spend-to-audience — fast saturation is expected, likely 2–3 weeks. Plan creative refresh batches ahead of need.

Watch (Meta best practice 2026):

  • Frequency: alert at >2.5/week; refresh creative at >4
  • CTR: alert at –20% drop over a 2-week window (creative fatigue)
  • CPM: alert on consecutive weekly increases (audience exhaustion)
  • Warm pool size: track LP visitors — 90d audience growth; this is the Phase 2 launch trigger

If saturation hits before the warm pool is large enough to retarget, the lever is creative refresh and/or audience override (override Advantage+ to the manual Plan B fallback per the Audience section) — not premature Phase 2 launch on an undersized warm pool.

Phase 2 trigger

Launch a separate Phase 2 retargeting campaign when LP visitors — 90d reaches 1500–2000 unique users — the floor for retargeting to deliver consistent signal at Meta's typical $20–30 CPM.

Phase 2 design is out of scope here. A new spec (cherry-city-ppc-retargeting or similar) will be authored at trigger time. It will optimize on Lead, InitiateCheckout, and Purchase events under Sales objective against the warmed Custom Audiences populated by this campaign.

Estimated trigger arrival: 4–8 weeks post-Phase-1-launch, depending on CTR and conversion-to-LP rate.

Known gaps

  • Plan B fallback unverified. If Advantage+ Audience underperforms in the first 14 days, override is documented in the Audience section but the specific manual interests (e.g., "Music," "Musical instruments," "Concerts") need to be verified in Ads Manager before override — many 2026-era interest categories were consolidated or deprecated. Verify at override time, not now.
  • Phase 2 retargeting spec is deferred until the launch trigger hits.

Spec leads code. Tracked in plan.md.