---
title: Signal engineering — auditing and shaping the conversion events ad platforms optimise on
slug: signal-engineering-and-conversion-event-audit
summary: First check what conversion data actually reaches Meta/Google (duplicates, wrong optimisation event), keep "what the platform needs" separate from "what the business wants", and engineer enough purchase events (e.g. ~20/day per campaign in gaming) for campaigns to exit learning.
domain: marketing
tags: [measurement, signal-engineering, conversion-events, meta, google-ads, audit, learning-phase]
related: [meta-optimization-event-and-lead-quality, conversions-api-capi, measurement-stack-attribution-incrementality-mmm, mobile-ua-evolution-and-team-structure, meta-sdk-event-validation, meta-ads-budget-math-for-apps, web2app-ad-optimization-events, meta-qualified-trial-optimization-event]
sources: [yt:iD_YbEW0Y3w, yt:3Uj6p1N8VJA, yt:qZj6_mJGOMg, yt:vaBxYgZ7MAU, yt:6TRy9eUAPVg, yt:S-F3yxya2WE]
updated: 2026-10-24
---

# Signal engineering and the conversion-event audit

## TL;DR
- **Audit the data flow first** (Meta Events Manager, Google Ads conversions) before looking at results. Duplicates, odd event names and campaigns optimising for the wrong or a "very dumb" event are common. Petit finds a blunder "99% of the time".
- **The platform's optimisation event and your business KPI are different things.** Pick the event that feeds the algorithm well, and judge results separately in your BI. Conflating the two is suboptimal.
- **Feed enough events.** In mobile gaming, Zynga's UA lead cites ~**20 purchases per campaign per day** to exit learning. Work back to the budget and to an in-game offer cheap enough to hit that.
- With small budgets, change campaigns weekly rather than daily, because it takes longer to accumulate events.
- Reconcile partner-reported and internal numbers routinely. A wrong signal "can break things".
- Don't trust LLM advice on Meta SDK or conversion setup for a first campaign. Practitioners report it is "really, really bad".

## Details
**Audit order** ([[people/thomas-petit]], onboarding a UA client)
1. Check what the network receives: events, names, deduplication, and which event each campaign optimises on.[^1]
2. Then check results in the client's BI rather than Ads Manager. Look for over-simplified proxy metrics: averages instead of cohorts, a proxy treated as the goal.[^2]
3. Hunt for blunders first, usually integration and conversion-signal errors, and start with the 1–2 channels where most money goes. A channel with 2% of spend waits a month.[^3] An early fix earns the trust needed for the slower three-month projects.[^4]

**Platform needs ≠ your goal.** What the platform needs to run and what you're trying to achieve are "two very different things". Send the event it can learn from, then judge on your own downstream metric.[^2]

**Event volume** ([[people/nebojsa-radovic]], Zynga). The campaign needs about 20 purchases a day to exit learning and perform. So ask what budget that takes, and whether the starter pack is priced to get there; a $20 starter pack may not convert often enough. This is why UA has to explain event thresholds to the product team.[^5] Optimisation targets are expressed as day-0/day-7/day-28 ARPU, with D28 now the dominant window in his games.[^6] Smaller budgets take more days to exit learning, so make changes weekly.[^7]

**Who owns it.** At Zynga signal engineering isn't a separate role. Every UA manager knows the event thresholds and negotiates with product; marketing analytics helps with custom reporting and discrepancy checks between partner and internal data.[^8]

**Signal as a targeting lever.** Haus clients wanting new audiences deliberately point Meta and Google at *shallower* signals to break out of retargeting-like delivery.[^9] The four levers left in algorithmic buying are bid/target, campaign type (CPI, retained user, D1/D7 ROAS), budget and creative.[^10]

**Two Meta-specific audit checks (Ben Heath, 2026).** (1) Does the purchase/lead event fire on the **landing-page load** instead of the confirmation/thank-you page? Then every click counts as a conversion and Meta just buys traffic — "you're actually much better off with a meta pixel that doesn't know how to get your results". Check each page with the Meta Pixel Helper extension.[^12] (2) Is the campaign optimising for the deepest event that has volume? His rule: the lowest funnel step (e.g. purchase over booked call over webinar attendee) with **20–25+ per week**; engineer qualification into the event itself (instant-form conditional logic, separate thank-you pages) so Meta learns quality — see [[meta-optimization-event-and-lead-quality]].[^13][^14]

**LLM setup advice.** Petit sees many indie founders complaining that LLM instructions for integrating the Meta SDK and configuring conversions are poor. Verify against platform docs.[^11]

## Disagreements / caveats
- The 20-purchases/day figure is a gaming rule of thumb from one practitioner. Meta's commonly cited threshold is ~50 optimisation events per ad set per week ([[meta-ads-budget-math-for-apps]], [[web2app-ad-optimization-events]]). Treat both as orders of magnitude.
- Optimising for a shallower event than purchase can raise volume but lower quality. Validate with cohort LTV. Jon Loomer and Ben Heath warn ecommerce/lead-gen advertisers against add-to-cart or traffic optimisation as a volume crutch; Haus's app clients use shallower events deliberately to reach new audiences ([[last-click-attribution-biases]]).

## See also
- [[meta-sdk-event-validation]] — checking app events against App Store Connect
- [[conversions-api-capi]] — sending events server-side

[^1]: yt:iD_YbEW0Y3w @ 17:45 — Thomas Petit
[^2]: yt:iD_YbEW0Y3w @ 18:31 — Thomas Petit
[^3]: yt:iD_YbEW0Y3w @ 19:17 — Thomas Petit
[^4]: yt:iD_YbEW0Y3w @ 20:09 — Thomas Petit
[^5]: yt:3Uj6p1N8VJA @ 23:20 — Nebojsa Radovic
[^6]: yt:3Uj6p1N8VJA @ 24:09 — Nebojsa Radovic
[^7]: yt:3Uj6p1N8VJA @ 25:45 — Nebojsa Radovic
[^8]: yt:3Uj6p1N8VJA @ 38:08 — Nebojsa Radovic
[^9]: yt:qZj6_mJGOMg @ 26:22 — Olivia Kory
[^10]: yt:3Uj6p1N8VJA @ 17:24 — Nebojsa Radovic
[^11]: yt:iD_YbEW0Y3w @ 25:47 — Thomas Petit
[^12]: yt:vaBxYgZ7MAU @ 04:19 — Ben Heath
[^13]: yt:6TRy9eUAPVg @ 20:32 — Ben Heath
[^14]: yt:S-F3yxya2WE @ 03:12 — Ben Heath
