Skip to content
VC
Case Study #12 · Marketing-ops / Attribution · NDA

Keitaro tracker + CAPI: attribution 62% → 96% and ROAS +18%

Performance agency with in-house media-buying team and $400-900k/mo media budget. Six buyers worked blind: after iOS 17.4 and SKAdNetwork v5, attribution dropped to 62%. Deployed server-side Keitaro + CAPI across three platforms, restored attribution, and eliminated morning manual reporting.

FULLY NDA — no recognizable UI, branding, or vertical names. Architecture only.
Industry
Performance agency (in-house media buying)
Stack
Keitaro · FB CAPI · TikTok Events · Yandex MP
Timeline
6 weeks
Outcome
Attribution 62% → 96% · ROAS +18%
01 · Pain Point

Buyers optimize blind, ROAS at 36-48 hr lag

Performance agency with in-house media-buying team: six buyers on a multi-vertical funnel, $400-900k/mo media budget. Buying runs on FB, TikTok, Yandex.Direct simultaneously — each platform with its own attribution quirks.

After Apple rolled out iOS 17.4 and FB hard-switched to SKAdNetwork v5, about 38% of conversions stopped reaching Ads Manager — partly lost to Safari cookie blocking, partly to shared signal loss. Buyers saw one picture in the ad account, another in Metrika / GA, and a third in CRM.

Every morning each buyer spent 2-2.5 hours manually reconciling data: FB account → Excel → join with Metrika → join with CRM → decision on what to kill / what to scale. Across the team — 15+ hours of daily reporting. Meanwhile, ROAS arrived with a 36-48 hour lag after spend — meaning a killer creative ran for another day and a half after going negative.

02 · Solution

Keitaro + server-side CAPI fan-out across all 3 platforms

Architecture — "server-side single source of truth". Keitaro receives all clicks and conversions, attaches a unified event_id, and via an nginx+Lua proxy layer fans out to three platforms' CAPIs with proper deduplication. Metabase reads Keitaro directly — real-time ROAS without manual exports.

01
Click → Keitaro

Selectel + KingsHost VPS 32GB. 1.2M clicks/day, subdomain masks, anti-bot.

02
Conversion

Server-to-server postback from landing / CRM / payment provider. Single event_id.

03
nginx + Lua

Dedup by event_id, enrichment with fbclid/ttclid/yclid, building payloads per CAPI.

04
CAPI fan-out

FB CAPI Gateway + TikTok Events API + Yandex Measurement Protocol — in parallel.

05
Metabase

Real-time ROAS dashboard per buyer / GEO / connection. Telegram alerts on spend > X without conversions.

Keitaro as single source of truth

All clicks from all platforms pass through Keitaro: each click gets a unique event_id, sticky cookie + IP fingerprint, bound to campaign / adset / creative. Selectel VPS 32GB handles peak 1.2M clicks per day, KingsHost is the backup edge node for geo distribution and failover.

Server-side CAPI fan-out

A conversion from landing / CRM / PSP arrives at Keitaro via server-to-server postback with the same event_id. The nginx+Lua layer dedups (FB likes to send the same events via pixel — they must be marked as duplicate), enriches fbclid / ttclid / yclid and builds three parallel payloads per platform. FB CAPI Gateway, TikTok Events API, Yandex Measurement Protocol — all return server-side signals to the platform.

Metabase: real-time ROAS without exports

Keitaro writes to PostgreSQL, Metabase reads directly. Dashboards per buyer: ROAS by campaign connection over the last 6 / 24 / 72 hours, breakdown by GEO, creative, placement. Morning manual reporting is no longer needed — the buyer opens the dashboard and sees what they would have spent 2.5 hours assembling in Excel.

Telegram alerts: killer creatives 36 hr → 4 hr

A scheduled job every 30 minutes reads Keitaro and checks: if spend > $X without conversions or CPL rose > Y% vs the rolling window — a Telegram alert fires to the buyer. Average time-to-decision on killing an unprofitable creative dropped from 36-48 hours to 4 hours.

03 · Stack

Server-side all the way

Keitaro tracker

Single source of truth: clicks, conversions, event_id, anti-bot, campaigns

FB CAPI Gateway

Server-side Conversions API for FB Ads with auto-dedupe against pixel

TikTok Events API

Server-side events for TikTok Ads, enriched with ttclid and hashed PII

Yandex Measurement Protocol

Server-side offline conversions to Yandex.Direct / Metrika without JS

nginx + Lua

Proxy layer: dedup, enrichment, parallel payload fan-out

PostgreSQL

Keitaro click/conversion storage — base for Metabase queries

Metabase

Real-time ROAS dashboard per buyer / GEO / connection without manual exports

Selectel VPS 32GB

Primary Keitaro node — handles 1.2M clicks/day

KingsHost VPS

Backup edge for geo distribution and peak failover

Telegram Bot API

Buyer alerts: spend > X without conversions, CPL up Y% vs baseline

KeitaroFB CAPITikTok Events APIYandex MPnginx+LuaPostgreSQLMetabaseSelectelKingsHostTelegram
04 · Results

What changed in 60 days

Attribution
62% 96%

conversions return to platforms via CAPI

Time-to-decision
36 hrs 4 hrs

from unprofitable budget to killing the creative

Aggregated ROAS
+18%

over 60 days at the same media budget

Morning reporting
2.5 hrs 0 hrs

per buyer — Metabase shows real-time view

Pricing
780k + 38k/mo

setup + recurring (hosting + maintenance)

The +18% ROAS effect isn't attribution magic, it's the sum of two secondary effects: (1) platforms optimize lookalike audiences on complete data and outperform on their own; (2) buyers kill unprofitable creatives 9× faster. The sum is +18% over 60 days.

Bonus — a closed data perimeter. After SKAdNetwork v5 many buyers moved to "blind" aggregated event measurement; here the team sees conversions per creative-id with a minute's delay. That's a qualitatively different operating model.

05 · Where it fits

When you need a server-side tracker

Universal pattern — "media budget > $50k/mo and attribution has started to leak". Wherever iOS 17.4 / SKAdNetwork v5 / Safari ITP / Chrome 3rd-party cookie deprecation have broken classic pixel schemes:

  • Performance agencies / affiliate teams — typical ICP for Keitaro+CAPI
  • E-com brands with in-house media buying — FB + TikTok + Yandex simultaneously
  • Sub-affiliates / nutra / dating — where platform shadow-banning requires server-side data
  • SaaS with a complex funnel — where conversion = trial → paid in 14-30 days (cookies died long ago)
  • App developers — FB + TikTok on iOS/Android, SKAd v5 doesn't cover 100% of cases
  • Lead-gen funnels — where conversion = call center call (2-7 days after click)
What's included in setup (6 wk)
  • Keitaro deployment with anti-bot + subdomain masking
  • FB CAPI Gateway + TikTok Events API + Yandex MP connection
  • nginx+Lua proxy layer with event_id deduplication
  • Metabase dashboards for real-time ROAS per buyer / GEO / connection
  • Telegram alerts: kill-creative / scale-creative triggers
  • Team training + runbook for typical failover incidents
Similar challenge?

If media budget is > $50k/mo and attribution is leaking — server-side fixes it

780k setup + 38k/mo maintenance. By week 6 buyers have real-time ROAS, by day 60 — measurable uplift. Suitable for in-house media-buying teams + performance agencies. Guaranteed > +12% to attribution even on conservative funnels.

Готовы начать?

Аудит за 5 000 ₽ — с конкретным отчётом и сметой

Расскажу что внедрить в вашем бизнесе в первую очередь, какая будет окупаемость, и нужен ли вообще AI для вашей задачи (иногда — нет).

Или просто напишите свой вопрос — отвечу в течение 2 часов