Eugene Kostiuchenko · Performance marketing · Paid acquisition · Case study
Proof of method
The gap became the method: I rebuilt the tracking between launches, and on launch two Meta's purchase count matched the payment processor exactly — 7 = 7.
01 Context
This was a paid freelance project for a video-maker with 20+ years behind the camera. The product was a $9 mobile-filmmaking intensive — a tripwire. A tripwire is not meant to earn: its job is to convert an anonymous click into a paying customer with a contact in Telegram, so the real money can come later from an upsell (an online course at $149, or 1-on-1 mentoring at $899).
The funnel ran end to end: Meta Ads → landing page → WayForPay checkout → Telegram bot (delivery + warm-up) → upsell.
The project ran as two launches, and my role grew between them — that growth is the spine of this case:
The landing page and payments belonged to another contractor. My zone was tracking and running the ads: two campaigns, $253.
Ten weeks between launches — not idle: the bot was rebuilt around warm-up, the tracking was fixed.
Russian- and Ukrainian-speaking diaspora. I owned everything end to end — the site, the whole measurement layer, the offer, the Telegram bot, the ads. One campaign, $248.
Both launches together came to ~$501. This was a diagnostic budget with a diagnostic goal: not to scale, but to find where the funnel breaks and test the economics of the model. Every conclusion below is calibrated to that scale — 22 purchases is a signal, not a statistic, and I treat it that way throughout.
02 Hypothesis
The upsell hypothesis failed: direct pitches for the big course met silence. The takeaway — a buyer has to warm up and reach out themselves, which needs a nurture sequence, not a cold pitch. That became the main change for launch two.
Does the funnel carry to a new, colder, more expensive market (diaspora: higher CPM), with a setup corrected for the Act 1 lessons — Instagram-only from day one, an age focus, a clean attribution signal (strict 7-day click / 1-day view, all AI creative enhancements off, manual placements) — and a bot rebuilt around multi-step warm-up instead of direct selling?
Two further questions inside the launch, not raised on Ukraine: which placement inside Instagram (Reels / Feed / Stories) buys intent cheapest, and which of three creative angles resonates. Both were answered by campaign structure — three creatives in one ad set, letting Meta's delivery optimization decide, instead of splitting a thin budget across an A/B test.
03 Setup
Top layer: I built and owned the full stack — landing page, analytics, and conversion tracking with a CAPI safeguard (GA4, GTM, Meta Pixel + one-click Conversions API) — so decisions rested on data I could verify.
Ukraine: two Sales / ABO campaigns optimizing for InitiateCheckout — FB+IG together vs IG-only — to isolate the placement variable. Landing and payments sat with the other contractor.
Poland: Sales / ABO, optimizing for InitiateCheckout (too few purchases to optimize on Purchase directly), $25/day, broad targeting with hard limits in Controls (geo, age 22+, languages RU+UA), 3 creatives on different angles in one ad set — natural delivery optimization instead of splitting the budget on an A/B test.
04 Metrics
Spend and clicks come from Ads Manager. Payments come from WayForPay. I keep them in separate columns on purpose — the whole point of the case is what happens when you stop trusting one and start checking it against the other.
The funnel's biggest loss is not where Meta shows it: 77% of reported checkout intent never became money.
Source: Meta Ads Manager (impressions, clicks, InitiateCheckout) vs WayForPay (settled payments) · both launches, Mar–Jul 2026
| UA · FB+IG | UA · IG-only | PL · IG-only | |
|---|---|---|---|
| Role | tracking + ads | tracking + ads | full ownership |
| Spend | $134.96 | $117.88 | $248.05 |
| Impressions | 24,598 | 18,566 | 27,926 |
| CTR | 5.07% | 2.26% | 1.82% |
| CPC | $0.11 | $0.28 | $0.49 |
| InitiateCheckout (Meta) | 45 | 18 | 33 |
| Payments (WayForPay) | 9 | 6 | 7 |
| CPA on real payments | $15.00 | $19.65 | $35.44 |
| Tripwire ROAS | 0.60x | 0.46x | 0.25x |
Tripwire ROAS = revenue from the $9 product against that campaign's spend. Full-funnel ROAS (0.40x) is covered under economics below.
The headline of the whole project: Meta claimed 96 checkouts, the payment processor confirmed 22. About 77% of the platform's checkout events never became money.
Source: Meta Ads Manager (InitiateCheckout) vs WayForPay (settled payments) · both launches · UA 63→15 (24%) · PL 33→7 (21%)
05 Decisions
Inside the mixed campaign, Facebook looked like the star: CTR 6.72%, clicks at $0.08 (Instagram ~3%, $0.20). An age breakdown of the same campaign added a second fact: the 65+ segment produced 28 of 45 checkout events (62%) at $1.88 — 2–3.5× cheaper than any other age. Meta doesn't cross age with placement in its breakdowns, so these were two separate signals, not one story. Sales sat in WayForPay with no placement split, and Meta had already discredited its own checkouts — so the third layer settled both: I had added a source-selection step in the bot, and every buyer named Instagram. The cheap intent — by placement and by age — was hollow. A qualitative factor backed it up: the author has no Facebook presence, so FB traffic had nowhere to warm up.
Call: drop the Facebook placement, tighten age to 45, concentrate budget on Instagram. This carried into the Poland setup from day one.
From the failure of direct selling on Ukraine, the bot was rebuilt from selling to warming up — a multi-step sequence, engagement, a chat with the author, so the buyer ripens and reaches out. In parallel, the UTM tagging and purchase tracking that were incomplete on Ukraine were fixed — which is what produced the 7 = 7 match with the payment processor and a working per-creative breakdown on Poland.
Inside Instagram, Reels bought checkout intent 1.74× cheaper than Feed.
Cost per InitiateCheckout by placement · bars scaled from zero · Source: Meta Ads Manager, PL campaign, Jun 14 – Jul 3, 2026
06 Learnings
The project was stopped by the client — workload, finances, a relocation — before the upsell step gathered enough volume to conclude.
The diagnostic goal was fully met. The monetization goal was not. Both of those are true, and the case is stronger for saying so.
07 If I'd had 10× the budget
Not a wishlist — a direct read of where the funnel actually broke.