FIELD REPORT 11 · APP MEASUREMENT · PLENTY OF FISH, MATCH GROUP
Teaching Google to bid on value
Our Google app campaigns bid on counts, so a weekly subscriber and a long plan subscriber looked the same to the bidder. I moved conversion measurement from the MMP to Firebase so Google Ads could bid on revenue. ROI rose 18% on millions in spend.
in Google Ads spend
- WEEKLY PLAN · 1
- MONTHLY · 3
- SIX MONTH · 8
- ARROW WIDTH = SHARE OF THE SIGNAL
Illustrative: 12 subscribers in three audience pockets. Plan value is an index where a weekly plan = 1. Arrow width is each pocket's share of the conversion signal the bidder receives, computed live. Under count bidding every dot is the same size.
Google counted every subscriber as one.
At Plenty of Fish, inside Match Group, I owned app and web acquisition across Google, Meta and Apple Search Ads. Our Google app campaigns took their conversions from AppsFlyer, our MMP, and bid on target CPA: a cost per conversion, with every conversion worth the same.
Subscribers are not worth the same. A weekly plan and a long plan bring in very different revenue, and a bidder that only sees counts will buy whichever one is cheapest to get.
Google's value based bidding for app campaigns, target ROAS, needs in app purchase value flowing into Google Ads. Firebase conversions carry that value straight into the bidder. So I moved Google's conversion source from the MMP to Firebase.
app campaigns
then bidding
Firebase for Google
2019 to 2023
Same purchase. Different message to the bidder.
Before, Google learned that a conversion happened. After, it learned what the conversion was worth. AppsFlyer kept its job for every other network.
Reconcile first, then switch in stages.
Five stages, from observing the new signal to bidding on it everywhere. Pick a stage to see what happened and what I watched.
Dual run: the new signal, observed only.
I mapped purchase and subscription events in Firebase with value and currency, then imported them into Google Ads as conversions. The campaigns kept bidding on target CPA. The Firebase conversions sat in observation while both systems counted the same purchases.
Reconcile: counts had to agree first.
I compared Firebase and AppsFlyer counts day by day for the same campaigns until the gap was small and steady. A bidder trained on a signal nobody trusts produces a result nobody trusts.
Stage 1: a first group moves to target ROAS.
A first group of campaigns moved from target CPA to target ROAS. The ROAS target came from the values we had observed during the dual run, never a guess. The other campaigns stayed on target CPA as the comparison.
Stage 2: most of the rest follow.
With the first group holding its ROI through relearning, most of the remaining campaigns moved over, each with a target set from its own observed values.
Full: Google bids on value everywhere.
Every Google app campaign bid on target ROAS from Firebase conversions. AppsFlyer stayed the MMP of record for every other network, so cross channel reporting did not change.
Bar heights sketch the order of the move and are illustrative. The dashed outline marks stages where Firebase conversions were in Google Ads for observation only.
ROI rose 18%.
Google Ads app campaigns after the move to Firebase conversions and target ROAS, measured on millions of dollars in Google Ads spend.
ROI indexed so the target CPA setup before the switch is 100. After the move, Google app campaigns ran at 118.
The bidder could finally tell a long plan from a weekly one, so budget followed revenue.
The ROI change is from my own reporting at Plenty of Fish. Spend and revenue totals stayed with Match Group.
A bidder can only chase what you show it.
Give the algorithm the value. If every conversion counts as one, a weekly plan and a long plan look identical, and the bidder buys the cheaper one.
Reconcile before you switch. Run the old and new measurement side by side until the counts agree, so the first read of the new bidding is one you trust.
Stage the move. Switch a first group, let it relearn against a group that stays put, then move the rest with targets set from observed values.