Cross Promotion vs Monetization?
Overview
What is cross promotion, and what are its benefits?
Cross-promotion is an effective way to retain and monetize users that are already in your portfolio. Developers with multiple apps can share user bases between those apps through cross-promotion. By allowing users to download additional apps from within a portfolio, the developer is able to save on individual user acquisition costs and increase their Return on ad spend (ROAS).
Why is this tutorial important?
Upon completion of this use case, you should be able to answer some of the following important questions regarding cross promotion:
- When should I cross-promote vs when should I monetize my apps?
- Which apps/users should I cross-promote?
- How can I setup cross-promotion campaigns and what channels should I use?
Summary
What you will learn
This training describes a model that can help you decide if you should cross-promote or monetize your apps. It also explains which apps you should cross-promote, which ad placements you should choose, and how you can track these campaigns.
How it works
Growth FullStack has helped many developers cross-promote their apps and understand the value derived from these campaigns. If you need help launching your cross-promotion campaigns, contact your Growth FullStack Account Manager.
Setup
The following is a step-by-step guide on tracking cross-promotion campaigns using Tenjin
Step 1: Create a custom channel called “Cross Promo” in Tenjin using these instructions.
Step 2: Create campaigns using this custom channel, and use the Tenjin Click URL in your ad server as a redirect link.
Step 3: Use additional macros to send more detailed information to your ad server. The list of supported macros can be found here. You can then add the following parameters to the tracking URL:
-
- redirect=false, used on cross-promo placements to implement a browser-less redirect. Call the Tenjin tracking link directly when the cross-promotion banner is clicked. You can read more about it here.
- site_id={site_id}; where {site_id} should be replaced by the app or bundle ID where the ad is viewed by the user
- ip_address={ip_address} is needed to improve fingerprinting
Here is an example click URL:
https://track.tenjin.io/v0/click/abYEkZyhkGBDT7CJJb9UDn?advertising_id={{advertising_id}}&developer_device_id={{developer_device_id}}&bundle_id={{bundle_id}}&platform={{platform}}&campaign_id={{tenjin_campaign_id}}&campaign_name={{tenjin_campaign_name}}&click_id={{remote_click_id}}&creative_name={{creative_name}}&redirect=false&site_id={{site_id}}
[Optional] Route events to your server
You can setup custom callbacks to your own server for each install attributed to your cross-promo campaigns. Follow the instructions here.
This is an example callback URL:
https://my.serveraddress.com/track/tenjin?bundle_id={{bundle_id}}&platform={{platform}}&advertising_id={{advertising_id}}&developer_device_id={{developer_device_id}}&click_id={{click_id}}&ip_address={{ip_address}}&country={{country}}&ad_network={{ad_network}}&campaign_name={{campaign_name}}&tenjin_campaign_id={{tenjin_campaign_id}}&remote_campaign_id={{remote_campaign_id}}&site_id={{site_id}}&creative_name={{creative_name}}&limit_ad_tracking={{limit_ad_tracking}}
where, Event=Open and Action=Ping on Every Install
Two ways to set up Ad Placements
- If you want to show your cross-promotion ads in the same placement as your other ads, check with your mediation partner if this is supported. If you don’t work with a mediation yet, you can setup cross-promo campaigns with Unity Ads or similar tools. Some additional resources below:
- ironSource
- Applovin MAX
- Admob
- Tapjoy Tapdaq
- If you want to have a dedicated placement displaying only cross-promo campaigns, you can set up an ad server that will communicate with your app SDK to serve your cross-promo ads (as described above). The benefit of this is that you can send information back to the ad server to automate what campaigns to show in your cross promo placement.
Pro tip: You can also cross-promote your apps with other developers—usually for free.
How to
Should you cross-promote or monetize your apps?
The objective of cross promotion is to maximize the revenue a single user can generate across your portfolio of apps. The trick with cross promotion is to balance the opportunity cost of showing a cross promotion ad versus an ad that can actually contribute revenue to the bottom line. Every time you show a cross promotion ad, you don’t make any money and you give up an opportunity to monetize with an ad that pays.
Long story short, you should only cross-promote when the expected revenue from the portfolio is greater than the expected revenue from monetizing in place of the cross promotion ad. Mathematically speaking:
E[User revenue in new app] > E[User residual revenue in current app]
For this, you can use historical data to make predictions about both sides of this inequality. On the left hand side, E[User revenue in new app], you can make assumptions about the LTVs of users currently in that app. You can use DataVault* data to figure out the equation:
E[User revenue in new app] = E[CTR] * E[CVR] * pLTV(new_app)
On the right hand side, E[User revenue in this app], you can look at what LTV the customer generated to date, then subtract out the maximum expected LTV for that user.
E[User residual revenue in current app] = pLTV(current_app) – User Revenue
Alternatively you could look at the eCPM of the current impression coming in, and calculate where on the decay curve that eCPM is and what the future value could be based on the retention of the user.
There are many other models that you can implement here, but the above one is a simple example. More complex examples include Markov chains and prediction.
Which apps should you cross-promote?
Let’s take an example. There are 3 apps: A, B and C.
-> Your SDK is in each app and includes an ad server which shows your app’s ads when you decide to cross-promote, and
-> Your SDK has logic which decides if traffic from app A goes to app B or app C.
Assuming you have already setup cross-promo campaigns with Tenjin as described in the previous step, you can measure the performance of each combination source app + destination app, and build a waterfall priority of which app to show as 1st, 2nd, or 3rd cross-promo impression.
Example, for source app A
- CTR * CV * D30 LTV of app B = .2 * .14 * $ 0.22 = $ 0.00616 → cross promote first
- CTR * CV * D30 LTV of app C = .2 * .10 * $ 0.15 = $ 0.003
You can push this reflection further and not only consider the best performing pair (source_app+destination_app), but instead consider the best performing path (A-B-C vs A-C-B) using a methodology like Markov chain.
Pro Tip: Always use a mix of exploration** and exploitation***. For example 30% exploration and 70% exploitation.
* Contact your Growth FullStack Account Manager if you need a sample query to get the data from DataVault.
** Exploration: serve cross promo campaigns at random to keep collecting fresh data in case the campaign with better D1-LTV change over time.
*** Exploitation: serve the campaigns that will yield you the most revenue.
FAQ
What is the attribution window for cross-promotion campaigns? Is it different from other ad networks?
If the click URL tracked advertising_id, it is the standard 7 days click and 1h view. If it doesn’t include advertising_id, we default to finger-printing, and the attribution window is 1h view.
Are there other resources you can share about cross-promotion?
You can find some articles below. For any additional support with starting your cross-promo campaigns, please contact your Growth FullStack Account Manager.
- A guide to cross-promotion: How to increase installs for your mobile game for free
- Ketchapp: A case study in mobile portfolio management (Mobile Dev Memo)
- App portfolios and strategic cross promotion (Mobile Dev Memo)
- Why Cross-Promotion is on the Rise (Chartboost)
- How the Super Simple Game Block It Became a Hit (Medium)
- 6 tips for mobile cross-promotion: The smart indie dev’s low-cost UA strategy (PocketGamer)
- 10 cross-promo tools for mobile game developers
Feedback
Do you have any feedback for us?
We at Growth FullStack are always happy to receive your valuable feedback. Whether it’s about requesting additional support on optimizing your workflows, building a customized dashboard, or anything else, feel free to reach out to us and let us know how we can support you further.
Iterate & Maintain
Iterate
This tutorial describes a simple model that works for most developers. There are other complex models that might work better for certain apps.
Maintain
The model described in this tutorial is developed based on trends in 2021. Please be aware that certain metrics might not be available, or change based on industry changes.