Short answer: to make Meta, Google and TikTok optimise for revenue rather than installs, your MMP has to send purchase events back to each network with a value and a currency code (for Indian apps, the rupee amount with currency "INR"). Linkrunner, a mobile measurement partner, sends these revenue postbacks to Meta, Google and TikTok from one event-mapping screen, with a delivery log showing each network's own errors; most teams integrate its SDK the same day, fully live within a week. Meta's "Maximise value of conversions" needs at least 15 valued in-app purchases in the last 7 days. Google App campaigns tROAS needs at least 10 conversions a day (or 300 in 30 days), and Google's help says the valued bid events should come from the Firebase SDK, so most teams run Firebase alongside their MMP for Google tROAS.
You're spending ₹5 lakh a month on Meta and Google. Your dashboard shows around 15k installs, but when you check which campaigns drove paying users, the ad platforms and your analytics tool disagree.
That gap usually comes from incomplete or broken postback configuration. Without revenue signals, the algorithms optimise towards install volume instead of revenue quality, and most teams only notice three or four weeks in, when finance asks why revenue isn't tracking install growth.
What is a postback, and why does it decide your ROAS?
A postback is a server-to-server message your mobile measurement partner (MMP) sends to an ad network when an attributed user installs or completes an in-app event, so the network's bidding can learn which users are valuable.
- Google's target CPA and tROAS and Meta's value optimisation all learn from these signals.
- Without them, the algorithm can't tell users who install and churn from users who pay.
- Each click ID (fbclid, gclid, ttclid) or network API match ties the install, then every later event, back to the campaign.
Send the few events that predict revenue: install, a qualified signup, purchase, paid subscription and renewal. Sending every screen view dilutes learning.
Value optimisation requirements on Meta, Google and TikTok
Here is what each network asks for before it will optimise towards purchase value, taken from Meta's and Google's own help pages.
| Requirement | Meta: Maximise value of conversions (app) | Google Ads: App campaigns tROAS | TikTok |
|---|---|---|---|
| Accepted event source | Conversions API, Meta pixel, Facebook SDK or an MMP | Google says tROAS for App campaigns requires the Google Analytics for Firebase SDK, and valued bid events should come from it | TikTok SDK or an MMP integration set up in TikTok Events Manager |
| What the event must carry | A value and a currency | A dynamic revenue value on each event | Check TikTok Events Manager |
| Minimum volume | At least 15 in-app purchases with values in the last 7 days (ad-revenue apps: at least 15 ad impressions with at least 2 distinct values in 28 days) | At least 10 conversions every day, or 300 in 30 days | Not published in the sources we checked |
| Other switches | Value optimisation turned on for the app event; eligibility can take a few weeks | Google recommends target CPA first, then tROAS | Select the optimisation event when you build the campaign |
| Source | facebook.com/business/help/571188993373447 | support.google.com/google-ads/answer/6268637 | TikTok Ads Manager help |
Worked example: will your app clear the thresholds?
The thresholds count valued purchases, not revenue, so the maths is about purchase volume. Take three apps that each get 15k installs a month (about 500 a day):
| Install to first purchase | Purchases a day | Purchases a week | Meta value optimisation (15 in 7 days) | Google tROAS (10 a day) |
|---|---|---|---|---|
| 3% | about 15 | about 105 | Clears easily | Clears |
| 1% | about 5 | about 35 | Clears | Short: stay on target CPA |
| 0.3% | about 1 to 2 | about 10 | Short: optimise for an upstream event | Short |
If you are short, optimise for an event that fires more often (signup, add to cart, first purchase) until volume builds. Many Indian apps sell ₹49 to ₹199 packs; a high-volume low-ticket purchase often clears Meta's bar faster than a premium plan.
The unit matters as much as the count. A ₹499 purchase sent in paise as 49,900 makes ROAS look 100x higher than it is. Sent as a USD figure without the "USD" code, it is understated by the exchange rate.
India specifics that break value bidding
- Send rupees as rupees. Pass the amount the user paid in INR with the currency code "INR", and agree whether values include GST and store fees.
- Value paid events, not trials. A free trial start has no value; the first paid subscription and each renewal do. Our guide to attribution for subscription apps covers the event design.
- Clear the threshold before the festive window. Switch bid strategy a few weeks before Diwali or sale weeks so the learning period doesn't land on your highest-spend days. See our festive campaign attribution setup.
How to set up Meta postbacks
- Connect Meta in your MMP. In Linkrunner, under Integrations, add Meta, connect the ad account and the dataset that should receive app events, and confirm Conversions API access is saved.
- Map app events to Meta standard events. If your app fires payment_success, map it to Purchase. Purchase events must carry a value and a currency.
- Validate with Test Events. Run a test install, complete a purchase and confirm the event arrives within a few minutes. If it doesn't, check the mapping, missing parameters and the dataset ID.
- Add hashed matching parameters. Hashed email or phone improves matching. Never send them in plain text; Linkrunner's SDK offers opt-in SHA-256 hashing on the device.
How to set up Google App campaign postbacks
Google's certified App Attribution Partners are Adjust, Airbridge, AppsFlyer, Branch, Kochava, Singular and Tenjin. Linkrunner connects through Google's third-party app analytics link ID, maps your app events to Google conversion actions with revenue and currency, and lets you import those actions from its dashboard. That covers install and in-app conversion reporting and target CPA bidding.
- Create a link ID in Google Ads under Tools, Data Manager, Third-party app analytics, with your MMP as the provider. Create one each for Android and iOS.
- Map and import conversion actions (first_open, sign_up, in_app_purchase), turn on revenue for revenue events and set the currency. Set each action as Primary or Secondary, then check the campaign's goal settings: an imported action is not automatically used for bidding.
- Set windows and counting. Use "One" for signups and "Every" for purchases and renewals. The Google UAC campaign checklist has the full pre-launch list.
- Move to tROAS once the valued purchase event reaches 10 conversions a day from the Firebase SDK. Keep one Primary action per event so Firebase and your MMP don't double-count the same purchase.
How to set up TikTok postbacks
- Create an app event source in TikTok Ads Manager under Assets, then Events. Choose MMP integration, select your partner and complete authentication.
- Choose the optimisation event (complete payment, in-app purchase or a custom event). If it fires rarely, start upstream.
- Deep link to the promoted screen, not the home screen, so TikTok gets a cleaner signal about which creative sells.
Postback health checklist
Weekly:
- Compare revenue event counts between your MMP and your analytics tool; they should match closely.
- Check conversion columns in Meta, Google and TikTok for gaps.
- Read postback delivery logs for rejections such as an invalid event name or a missing currency.
Monthly test purchase: install through a small live campaign, buy something real, and confirm the purchase appears with the right INR value in your MMP within minutes and in each network's reporting.
| Symptom | Likely cause | Fix |
|---|---|---|
| Postbacks hours late | Batch sending | Use real-time delivery |
| Conversions inflated | Two SDKs reporting the same purchase | One Primary bid action per event |
| Revenue doesn't match transactions | Paise, wrong currency, gross against net | Send the INR amount paid with "INR" |
| Rejected as outside the window | Delayed install postback | Send installs immediately and align windows |
| MMP and network install counts differ | Window mismatch, self-attribution, iOS users who decline ATT | Compare the same window first, then mapping |
For a full method, see our attribution discrepancy troubleshooting guide.
How an MMP simplifies postback configuration
Maintaining postbacks by hand across Meta, Google, TikTok and newer channels is error-prone. Platforms like Linkrunner give you event mapping for each network in one dashboard, a test event on every saved mapping, a delivery log with the network's own error messages, and Google conversion-action import. Revenue postbacks are included on every plan, at ₹1.20 down to ₹0.80 per attributed install after 25k free installs. Linkrunner does not replace Firebase for Google tROAS bid events, so plan to run both if tROAS is on your roadmap.
Frequently asked questions
How many conversions do I need for Google App campaigns tROAS?
Google's help page says at least 10 conversions every day, or 300 in 30 days. It also says App campaign tROAS needs the Firebase SDK, with valued bid events coming from it, and recommends running target CPA first.
What does Meta need to optimise for purchase value?
An active integration (Conversions API, pixel, Facebook SDK or an MMP) sending an event with a value and a currency, and at least 15 valued in-app purchases in the last 7 days, with value optimisation turned on for the event.
Can I use an MMP for Google tROAS instead of Firebase?
An MMP such as Linkrunner can send installs and in-app conversions with revenue to Google Ads through a third-party app analytics link ID. Google's help says tROAS bid events should come from Firebase, so most teams run both and keep one Primary action per event.
What currency should Indian apps send?
The amount the user actually paid, in rupees, with the currency code "INR". Paise or an unlabelled USD figure both distort ROAS.
If your team spends hours each week chasing postback issues, request a demo from Linkrunner and walk through your current event map.
