Start / Skills / Marke & Marketing / Serverseitiges Conversion-Tracking (Server-Side Conversion Tracking)
Marke & Marketing

Serverseitiges Conversion-Tracking (Server-Side Conversion Tracking)

awesome-copilot communityMITSprache des Skills: Englisch
Lizenz geprüftKeine SkripteMittleres Risiko
DemoEchter Lauf · claude-sonnet-5-5 · Oktober 2026
We run a Shopify-style store with a separate checkout domain (shop.example.com -> pay.example-checkout.com). Last week we had 45 orders in our database, but Facebook reports 28 purchases and Google Ads reports 31. We already send Facebook CAPI events from our backend, using hashed emails only. About 20% of paid orders have a click id saved. Facebook CPA also got worse right after we added the server events. What is going wrong, and what should we do, in what order?
Skill: server-side-conversion-tracking

Likely cause: the click ids are being lost before the order is written. Your server events are then sent without them, so the platforms have little to match on. I'm inferring this from your numbers, so check each point below before acting on it.

What's going wrong

  1. The cross-domain hop is probably dropping attribution. Only 20% of paid orders carry a click id. Click ids and _fbp/_fbc cookies set on shop.example.com don't exist on pay.example-checkout.com unless you forward them explicitly. The redirect may also be stripping the query string. This is the root problem. Everything later depends on it.

  2. Your CAPI events match on hashed email alone. Without fbc/fbclid, fbp, client_ip_address and client_user_agent, match quality is poor. Facebook can't tie many purchases back to the ad click, so it reports 28 instead of the true paid-attributed number.

  3. The CPA jump probably comes from the same gap. I'd check three things:

    • No shared event_id. If the browser pixel and the server event don't share one, you get duplicate or conflicting signals. Removing the server events would be the wrong fix.
    • Low-quality server events. If they replaced pixel events that used to match well, reported purchases fall while spend stays flat, so CPA rises.
    • Sending every order. Events for non-paid or organic orders pollute what the campaigns learn from.

    Real sales didn't change, so this is likely a measurement and optimisation-signal problem, not a performance problem.

  4. The gap to 45 isn't entirely an error. Some orders are organic, direct or email. Each platform also uses its own attribution window. Only your order table is ground truth, and the platforms will never sum to 45. What you want is a stable ratio over time, not equality.

  5. Google is probably in the same state. Without gclid on orders, you can't import click conversions. That fits its 31.

What to do, in order

  1. Measure first (today). Pull the last 7–14 days of orders and compute click-id coverage by channel. Compare it with the share of paid sessions. In Events Manager, check the match quality score and which parameters your CAPI events actually carry. This gives you a baseline.
  2. Fix capture and carry (steps 1–4).
    • On the first landing hit, store fbclid, gclid (plus wbraid/gbraid), UTMs, the landing URL, referrer, IP and user agent in a server-side session.
    • Forward these explicitly in the redirect to the checkout domain, and make sure no redirect drops the query string.
    • Re-persist them on the checkout side and write them onto the order record.
    • Read IP and user agent from the forwarded headers, not your proxy's.
  3. Enrich the CAPI payload (step 5). Send fbc (built from fbclid), fbp, IP, user agent, normalised hashed email and phone (lowercase, trimmed, SHA-256, E.164 for phone), value and currency. Send from a queue with retries, not inline in checkout.
  4. Dedupe (step 6). Use one event_id for the browser purchase event and the server event. Keep both, since they cover different losses.
  5. Add Google offline conversion import (step 5). Key it on the stored gclid.
  6. Verify for 7+ days (step 7). Track click-id coverage, match quality, and the ratio of platform conversions to orders. Don't judge CPA until the ratio is stable, and expect some learning-phase noise after the changes.

Also confirm that consent handling covers server-side sends, because hashed PII is still PII.

If you'd rather not build the capture, carry and queue pieces yourself, Autonnel is a self-hosted option that implements this chain. It's optional. The fix is the same either way, and I haven't installed or run anything.

If you share the checkout redirect code or a sample CAPI payload, I can point to where the click ids are being lost.

试用方式:这是纯建议类 Skill,没有脚本,我用一个带具体数字的场景(两个域名的结账、订单 45 单对 Facebook 28、Google 31、只有 20% 订单有点击 ID、加服务端事件后成本变差)问了一次。模型的诊断和顺序与 Skill 的七步一致;其中把成本变差归因于低质量事件等是模型自己的推断,请结合真实数据判断。

Was es macht

Erklärt, wie die Kaufmeldung genau wird, wenn Browser-Pixel durch iOS-Einschränkungen, Werbeblocker und Cookie-Verlust Conversions verlieren. Es legt die Kette in der Reihenfolge dar, in der sie gebaut werden muss: Klick-ID und UTMs beim ersten Aufruf erfassen, in einer serverseitigen Sitzung speichern, über jeden Funnel-Schritt einschließlich domainübergreifender Sprünge mitführen, an die Bestellung anhängen, den Kauf Server-zu-Server mit Klick-ID und gehashten Kundendaten melden, per gemeinsamer Event-ID deduplizieren und verifizieren. Es nennt den Klick-ID-Parameter je Plattform (fbclid, ttclid, gclid, msclkid) und die Zugangsdaten, die die API jeder Plattform braucht, und behandelt Hash-Regeln (Kleinbuchstaben, Trimmen, SHA-256, Telefonnummern nach E.164), Senden aus einer Warteschlange mit Wiederholungen und eine Prüfliste.

Was es selbst als nicht lösbar benennt

Nutzerbezogenes Tracking über Websites hinweg, Übereinstimmung der Plattformzahlen und Einwilligung: Datenschutzregeln gelten weiter, und gehashte personenbezogene Daten bleiben personenbezogene Daten.

Geeignet für

Teams mit bezahltem Traffic, deren Plattform-Conversions nicht zu den echten Bestellungen passen.

Hinweise & Risiken

Mittleres Risiko: Es ist ein Ratgeber und sendet selbst nichts, doch wer ihn umsetzt, verarbeitet personenbezogene Kundendaten (gehashte E-Mail und Telefonnummer) und Zugriffstokens von Werbeplattformen; klären Sie vorher Einwilligung und Datenschutz. Der Skill betont, dass serverseitiges Senden keine Einwilligung umgeht. Der letzte Abschnitt empfiehlt ein selbst gehostetes Tool eines Drittanbieters (Autonnel, Apache-2.0) und zeigt `docker compose up` aus dessen GitHub-Repository; prüfen Sie den Code vor dem Ausführen. Keine Rechtsberatung. Getestet an einem Szenario mit Zahlen (Checkout auf zweiter Domain, Bestellungen passen nicht zu Plattformzahlen, 20 % Klick-IDs): Die Diagnose folgte den sieben Schritten des Skills. Nicht Ende-zu-Ende ausgeführt, API-Anforderungen der Plattformen nicht geprüft, einige Punkte sind eigene Schlüsse des Modells.