Concrete Software uses Adjust - a mobile app attribution platform, to track performance of its user acquisition sources. The Cloud Services team implemented an integration with Adjust to track user revenue and determine Average Revenue Per User (ARPU) for each user acquisition source.
This allows Concrete Software to determine appropriate spending levels for each user acquisition source.
Concrete Software advertises its Android and iOS games through user acquisition channels such as Facebook and Google, often running multiple campaigns on each channel. From these advertisements, Concrete Software acquires users, who can generate revenue within the games through in app purchases and in-game advertising.
We needed a way to determine the quality of users being acquired from advertisements - specifically to determine how much revenue they are generating. If the average revenue per acquired user is greater than the amount being spent, Concrete Software could increase spending on the advertisement, which increases revenue and helps to increase the app’s rankings in the app stores.
Adjust provided the ability to record revenue from in-game events, but that method doesn’t work well for in-game advertisements, because we aren’t able to determine the amount of revenue from advertising events until days later when we receive revenue reports from the ad networks.
Because of this, we implemented a server-to-server (S2S) integration with Adjust to provide advertising revenue from Concrete Software’s App Sales Tracking System.
Concrete Software's cloud services team designed and implemented an integration with Adjust, illustrated at a high level in the following diagram.
With this implementation, Adjust and Concrete Software hold the needed revenue data to compute the ARPU for users acquired from advertising, and we are able to use Adjust’s dashboard and Concrete Software’s reporting tools to view the metrics.
Concrete Software implemented a Microservice for interacting with Adjust, which includes two stateless AWS Lambda functions. We chose AWS Lambda for a few reasons:
We implemented the following Lambda functions:processEventsFromAdjust
The processEventsFromAdjust function is periodically called by a CloudWatch event rule to process event data sent by Adjust.
It saves event data to Concrete Software’s Redshift database, where it can be used for analysis and revenue processing.
The sendRevenueEventsToAdjust function is periodically called by a CloudWatch event rule. It reads revenue-affecting event data saved by processEventsFromAdjust and uses Ad eCPM Data from the App Sales Tracking System to form revenue events, which are sent to Adjust.
The function processes events that are at least 7 days old (since the date the user triggered the event), to ensure the revenue data is accurate within the App Sales Tracking System.
The following issues were addressed while designing the service.