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. BothMETA_CherryCity_MonthlyandMETA_CherryCity_Hourlypaused 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:
- LP
/lp/cherry-citylive — owned by unified-cherry-city-lp/spec.md - Pixel + CAPI events for
LandingFunnelChoice— fires on fork-CTA clicks (per LP spec) - Pixel + CAPI events for
ScrollDepth75— fires once per session when scroll passes 75% on the LP, plus matching CAPI server event witheventIDfor dedup. Same dedup pattern asLandingFunnelChoice. 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:
- 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.
- Define Custom Audiences per the table above. Audiences → Create Audience → Custom Audience → Website (for Pixel-based) or Engagement (for Page engagers).
- 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 setTOFU - Advantage Lookalike 5 percent, adThis sucks. - Configure ad set:
- Performance goal: Maximize Number of Landing Page Views
- Audience type: Advantage+ Audience
- Audience suggestion: 5% LAL Monthly Members
- Hard exclusion: existing-customer Custom Audience
- Age suggestion: 25–45
- Geo: Salem +25mi
- Placements: Advantage+ Placements (default)
- Budget: $100/day
- Schedule: continuous
- Configure ad per the Copy + Creative sections above.
- Pause original Monthly + Hourly campaigns. Do not delete.
- 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 — 90daudience 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.