GTM Sauce

Sub Club by RevenueCat · 2025-08-20

Signal Engineering: Strategic Data Filtering for Better Ad Performance — Thomas Petit, Independent Consultant

Consultant Thomas Petit on signal engineering: first make ad-network event totals match internal data within ~5-10%, then send qualified trials (device, age, onboarding answers), then engineered revenue values (predicted month-13 value, amplified spread, API-served values), sent within day one and above ~10 events/day/campaign. Also: use AI for creative analysis, not just production; keep exploring new concepts; app-to-web suits big brands; hybrid monetization only after pricing wins slow.

Play the episode

23 tactics

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Gaps of 30-50% are common; fix anything above 10% before touching ads

Audit starts in Meta Events Manager / Google Ads Goals, not Ads Manager. For the last 7 or 30 days, compare total installs, free trials and paid subscriptions the platform received (not attributed ones) against RevenueCat, Amplitude or Mixpanel before sending. ~5% gap is fine; above 10% must be fixed (change source, parameters or the event itself). Watch for pitfalls: double sources that Meta deduplicates but Events Manager shows twice; missing parameters so only opted-in (IDFA) users are attributed (one change left only 20% of conversions reported). Once fixed, it can run 6-12 months but must be rechecked.

Workedanalytics-attributionpaid-social
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Default SDK mapping often lumps them all into one event; guest says fix it first

Default Meta SDK auto-mapping often reports a direct purchase, a trial converting to paid, and a renewal all as 'Purchase'. Map each individually, verify each passes correctly, then decide which combination to optimize toward.

Unknownanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Guest's go-to first step when paid trial quality lags; no numbers given

When trial-to-paid from paid traffic trails other sources or its own past, run a regression on non-converting trials. Hard factors: device, OS version, language. Soft factors: onboarding answers (stated goal, intent, e.g. 'just browsing'). Keep the raw trial event unchanged; engineers add a new event (e.g. mapped as 'subscribe' or 'purchase') fired via the MMP (Adjust, AppsFlyer, Singular) or platform SDK only when a trial meets the criteria, and campaigns optimize to that. Most predictive factors across apps: age, goals, and consumer vs prosumer/solopreneur vs business. Advanced: add onboarding questions designed to create this variance. Exclusion is a last resort; skip it if trial quality is already fine.

Workedanalytics-attributionpaid-social
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Keeps cheap under-25 reach instead of cutting it; no numbers given

Meta's value rules (formerly bid multiplier, now out of beta) let you weight segments: e.g. +20% for Google Pixel or newest Samsung Galaxy (5-10% of Android, convert like iPhones), don't show ads to very old Android versions, value under-25s ~30% lower instead of excluding everyone under 25. Guest combines this with qualified-trial filtering ('hammer from both sides').

Unknownpaid-social
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Guest's main advanced lever; no numbers given

Default SDK revenue for subscriptions is wrong: trial conversions arrive too late and yearly plans look better than weekly ones that renew for months. Instead send an engineered value per user: predicted value at a fixed day (guest likes month 13, which includes the first yearly renewal and compares monthly vs yearly fairly), set by plan, device, onboarding answers, refund-risk behavior and so on. Find the value drivers with a regression over high/low/zero-value users. Skip this if revenue has little variance across users; go straight to it if variance is extreme (e.g. $1 IAP vs $20/month vs $200/month users).

Workedanalytics-attributionpaid-social
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Avoids app releases for every price or currency change; says it makes a big difference

Rather than hardcoding 'plan X on device Y with onboarding answer Z = 56', the app/SDK calls an internal API with the user's parameters and gets the current value (56 this week, 68 next). Needed when plans, promos and currencies change often, especially volatile currencies like Turkey. Adjust per destination (Firebase, Meta SDK, MMP, RevenueCat). Engineers found it simple once the request was clearly specified; the delay was communication.

Workedanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

Voyantis · B2B · ad signal optimization service

Voyantis showed timing matters; guest says signals after 24 hours are nearly useless

Optimize toward something that happens on day one, not a 7- or 14-day outcome (shortening the trial to 3 days doesn't solve this). Optionally hold the event back 1-2 hours and fire it only for trial starters who show engagement, e.g. three meditations/workouts within 2 hours. Don't wait too long.

Workedanalytics-attributionpaid-social
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Under ~10/day optimization breaks; well above it, fewer better events win

Networks need roughly 50-100 events per week per campaign; guest uses 10/day/campaign as the floor. Below it, don't filter trials; instead add earlier high-intent events (strong onboarding answers, first activity) to raise volume. Well above it, sending 30 filtered events beats 300 unfiltered. Revisit as budget grows (e.g. $100K to $500K allows much tighter filtering).

Unknownpaid-socialanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Pushes delivery toward top users but hides true ROAS; has backfired when overdone

E.g. report $5 users as $3 and $50 users as $100 to steer the network harder toward valuable users. Trade-offs: in-platform ROAS becomes unreadable, so read ROAS internally; pushing too far makes delivery swing to extremes. Guest has made mistakes doing it.

Mixedpaid-socialanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Early on, send 100% of each event to every network to validate data. Then map filtered events under separate event names; what works differs by network (e.g. revenue on Meta, qualified trials on Google, direct purchase + trial conversion on TikTok; filter young-audience trials for TikTok but not Meta). Sources may differ (Firebase for Google, Meta SDK, MMP). Keep alternative signals ready and run e.g. a trial-optimized campaign alongside a value-optimized one for audience expansion and as a fallback.

Unknownpaid-socialanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

Practitioner pattern · Thomas Petit (Sells consulting services and runs a paid signal-engineering workshop at App Growth Annual; works with Voyantis)

Track a curve of value sent to networks vs realized value; a widening gap signals a problem. Don't trust the total (2% overall deviation can hide 10% of users causing 80% of it); check at country and platform level. Revisit value assumptions about every 6 months as plans, channel mix and budgets change. In one client the value window is the last 2 weeks if the sample is big enough, else 3 months, else drop one criterion (country, onboarding answer) to avoid noise from small samples.

Unknownanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

A subscription app with free trials · B2C · guest's 2017 app

Google trials converted at ~15% vs ~40% elsewhere; the fix moved the needle

In 2017, Google Ads trials converted to paid at ~15% vs ~40% on organic and Meta. Identified reasons Google-sourced trials weren't converting and sent Google a different, filtered trial signal.

Workedpaid-searchanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

An app with consumer and business users · Thomas Petit client

Worked at first; went stale after 18 months of price changes and needed fixing

Sent weighted signals by plan and user type: weekly subscription from a normal user = 1, yearly from a business user = 5. Multipliers were hardcoded, then pricing was iterated for a year and a half, so they no longer matched real user value; fixing them to track real value became a priority.

Mixedanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

A young subscription app · B2C · Thomas Petit case study

Big uplift per the guest; details saved for a blog post

A fairly young app changed the events it sent to ad networks while also working on creatives. Details not given.

Workedanalytics-attributionpaid-social
Sub Club by RevenueCat · 2025-08-20

A fast-scaling subscription app · B2C · Thomas Petit client

Grew from 0 to eight figures in two years, then had no fallback when it broke

Scaled on a couple of platforms, relying on one setup. When performance fell, creative and event fixes didn't restore it and there was no alternative ready. Guest's lesson: keep other properly mapped signals available and test them on the side.

Mixedpaid-socialanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

A subscription app · B2C · Thomas Petit client

One of two tests looks good, the other doesn't; not conclusive

Client already had a fairly sophisticated in-house signal system; handed optimization to Voyantis, which filters events and sends them back to the networks itself (including event-timing tricks). Running two tests.

Mixedanalytics-attributionpaid-social
Sub Club by RevenueCat · 2025-08-20

In a mental health app, users who report a high anxiety level in onboarding are much more valuable, so that answer is factored into the signal sent to networks. Mildly lower-value answers are not excluded (handled via value optimization or value rules instead); only near-zero intent answers like 'just browsing' are filtered out.

Black hatUnknownanalytics-attributiononboarding
Sub Club by RevenueCat · 2025-08-20

An app with a 30-screen onboarding · B2C · Thomas Petit client

Held for one app; another app found its fastest finishers were its best users

At one client, users who finished a 30-screen onboarding in under a minute (clicking next, starting a trial, cancelling) had little value, so completion time was used as a criterion. Checked at other apps: there, the fastest finishers were the best users because they knew what they wanted. Not universal.

Mixedanalytics-attributiononboarding
Sub Club by RevenueCat · 2025-08-20

Client optimized toward predicted LTV, then realized cash flow mattered more and that different users maximize 3-month vs 5-year returns; switched the value sent to networks to maximize short-term payback.

Unknownanalytics-attributionfinancing
Sub Club by RevenueCat · 2025-08-20

An usage-based AI app · B2C · Thomas Petit client

AI app with usage costs offers tiered subscriptions plus credits bought on top, so users who hit a limit can add $5-10 of credits instead of upgrading a full tier. A team of several people spent months designing it to avoid cannibalizing subscriptions and keep pricing fair.

Unknownpricingupsell-expansion
Sub Club by RevenueCat · 2025-08-20

A small subscription app · B2C · Thomas Petit client

Works for them, per the guest; no numbers

A not-big app that had just crossed the App Store Small Business Program threshold (fee rising from 15% to 30%) tested app-to-web checkout, against the guest's general advice.

Workedpayments-checkout
Sub Club by RevenueCat · 2025-08-20

A freemium subscription app · B2C · Thomas Petit client

Users who don't convert within 24 hours but show high likelihood of retaining as freemium users or converting later get a small value (~$1, vs the $10/month or $90/year plan values) instead of zero, so networks don't learn to avoid them.

Unknownanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

A mobile game with big spenders · B2C · guest's gaming contact

A gaming company reports whale players (worth $500-1,000) as medium-value users, because reporting the full value makes Meta 'done for the day' after one big user. Guest notes it's rarer in subscriptions but could apply to very high tiers (e.g. reporting a $200 plan as $100).

Unknownpaid-socialanalytics-attribution
Sub Club by RevenueCat · 2025-08-20

Numbers mentioned

WhoMetricValueContextWhen
personThomas Petit, ad spend managed over the past decadead spendnine digits
approximate
Ad spend managed with a positive return across hundreds of clients0:41
benchmarkCreative testing hit rate for paid socialcount50 creativesper winning creative
approximate
Roughly 50 creatives produced to find one winner; the winner takes 90%+ of spend6:05
benchmarkShare of ad spend going to the single winning creativeshare90%
approximate
Winner-takes-all spend concentration on the winning creative ('90+ percent')6:05
benchmarkAcceptable gap between conversions an ad network's events manager receives and internal countsshare5–10%
approximate
Discrepancy between events received by Meta Events Manager / Google Goals and internal analytics: ~5% is fine, more than 10% is a problem38:53
aggregateAd accounts the guest auditsshare30–50%
approximate
Typical discrepancy he finds between events reported to the network and internal counts in broken setups38:24
App the guest ran growth for in 2017conversion rate15%
illustrative
Trial -> paid for Google Ads users, vs ~40% on organic and Meta48:49
marketNewest Android flagships (Google Pixel, latest Samsung Galaxy) as a share of the Android marketshare5–10%
approximate
These devices convert about as well as iPhones; the rest of Android converts terribly55:06
Thomas Petit client that scaled from 0 to eight figures on a couple of platformsrevenue0 to eight digits in a couple of years
approximate
Growth trajectory while scaling on a couple of platforms, before performance broke42:11
benchmarkMinimum optimization events per campaign for ad networks to optimize wellcount10 eventsper campaign /day
approximate
Guest's rule of thumb from the commonly cited 50-100 events per week; below 10/day/campaign things go wrong1:27:47
benchmarkOptimization event threshold per campaign as commonly citedcount50–100 eventsper campaign /week
approximate
1:27:47
benchmarkRevenue threshold below which app-to-web checkout is not worth trying (App Store Small Business Program, 15% fee)revenueUSD 1M/year
approximate
Below $1M (15% store fee) the guest thinks almost nobody should try app-to-web unless already web-native18:34
benchmarkMaximum delay before sending an optimization event to ad networkstime to milestone24 hours
estimate
Signals sent after the first 24 hours are nearly useless for network optimization1:17:03