
Nemo Marketing has an insightful series on attribution, with a primary focus on identifying customer sources and analyzing key insights. In this article, we delve into the realm of Mobile App attribution, which marks the culmination of this series. If you haven’t explored our previous articles, we recommend checking out the full article list here before diving in.
What is Mobile App Attribution?
A. Definition

Attribution tracking is a process used to identify and credit various touchpoints or channels that contribute to a conversion or desired action taken by a customer. In this context, we are specifically discussing the identification of users or customers on a Mobile App.
For instance, if Alex is a customer who engages with your app and completes a conversion action, you will be able to pinpoint precisely which marketing source brought Alex to your platform.
This allows you to measure the effectiveness of various advertising channels and campaigns, helping optimize overall performance and return on investment for your business.
You can learn more about the benefits of attribution tracking in this article.
B- Tools
In the case of a website, we can create our own parameters for tracking (I have a series of articles on this topic here).
However, for mobile apps, we need to use third-party tools, often referred to as MMPs (Marketing Measurement Partners). MMPs help identify the source of each user and attribute that user accordingly.
There are numerous tools on the market, such as Appsflyer, Adjust, Singular, to name a few. In this article, I will focus on Appsflyer and provide instructions based on the Appsflyer platform.

The reason for this choice is that, since I began working in app marketing and data, I have exclusively used Appsflyer and feel very comfortable and confident when working with this tool. I believe that my familiarity with this tool allows me to provide you with the most precise and on-point guidance.
However, if you are not using Appsflyer and are using another MMP, don’t worry. When reading this article, focus on understanding the concepts and the overall approach. Regardless of the specific tool you use, I believe that any MMPs can perform the functions mentioned in this article, with only slight variations in the execution process.
Note: MMPs are paid services that require subscription. You can learn about their pricing models.
C- Appsflyer’s Attribution Tracking Mechanism
It’s quite simple. Appsflyer partners with various Ad Networks (like Google Ads, Facebook Ads, Twitter Ads, and many more). In this symbiotic relationship, Ad Networks provide user information to Appsflyer so that Appsflyer can attribute as accurately as possible (in other words, identify users).
Therefore, when a user installs the app or takes any action within the app, Appsflyer can tell us which marketing source the user came from.

The special thing about Appsflyer is that it automatically attributes customers for those who come from their Ad Network partners.
In addition to automatic attribution, Appsflyer also allows you to manually customize tracking links for various custom campaigns (such as placing app download links on social media or media sites).
In this article, Nemo Marketing will cover all the most important things you need to know and do for Mobile App Attribution Tracking. In the end, you’ll have a Final Customer Attribution table that combines both web and app attribution data.
2- Configuration for Developers

Here are the fundamental steps to set up Appsflyer and attribution. The first two parts are carried out by developers, and the last part is performed by marketers.
A- SDK Implementation (For Developers)

First, you need to implement the SDK. Android and iOS developers can refer to and implement according to the following links:
Android: Android SDK Setup
iOS: iOS SDK Setup
B- Event Configuration (For Developers – in collaboration with marketers)
It’s crucial to define the events you want to track. In the context of this article, we’re focusing on the Conversion Event, where we aim to capture the attribution data of a customer.
For example, you can identify essential conversion events such as “lead_registration” and “purchase_success” …

In this stage, the marketing and business teams need to finalize the event names and the logic for triggering events with developers.
For example, marketers might want to track an event named “purchase_success”.
Trigger Condition: This event is triggered when a user clicks on the purchase button, and then the system successfully processes the purchase request and redirects the customer to the thank you page.
Afterward, developers will configure events based on the logic provided by the marketers.
Important note: When setting up events, developers need to push event parameters for identifying “customer_id”, “order_id” or alias. These IDs must match IDs in the company’s internal system (”customer_id” or “order_id” are just for reference, you can rename it based on your company’s ID types)
Appsflyer will store all these event records and parameters, then you can use them to attribute users and do further analysis.
Please note that without customer_id or order_id (or alias), attribution won’t be possible.

For more details, you can refer to the developer documentation provided by Appsflyer:
- Android: Android In-App Events SDK
- iOS: iOS In-App Events SDK
Before moving on
Before moving on, the diagram below illustrates three types of user onboarding in the mobile app. For each type of onboarding, there’s a different tracking method. Please follow the numbered markers on the diagram to navigate to the next sections of the article.

3- Integration with Ad Networks (for Marketers)
If you’re running paid ad campaigns, it’s crucial to integrate Appsflyer with your Ad Networks. This integration allows for the exchange of information between Ad Networks and Appsflyer, and this data plays a vital role in attribution and campaign optimization

You can find step-by-step integration instructions for each ad network. I’ve included a “Media Source” column to help you identify the ad networks in Appsflyer (how it’s named and displayed in Appsflyer)
Ad Network | Media Source displayed in Appsflyer | Guide |
---|---|---|
Google Ads (UAC) | googleadwords_int | https://support.appsflyer.com/hc/en-us/sections/6551205645457-Google-Ads |
Facebook Ads (App Installs) | Facebook Ads | https://support.appsflyer.com/hc/en-us/sections/6551109855761-Meta-ads |
Apple Search Ads | Apple Search Ads | https://support.appsflyer.com/hc/en-us/sections/6551310453393-Apple-Search-Ads |
Twitter (App Installs) | https://support.appsflyer.com/hc/en-us/sections/6551370375569-Twitter | |
Snap Chat (App Installs) | snapchat_int | https://support.appsflyer.com/hc/en-us/sections/6551316540945-Snap-Snapchat- |
Tiktok | tiktokglobal_int | https://support.appsflyer.com/hc/en-us/sections/12192554266385-TikTok-for-Business |
Other ad networks can be found in Appsflyer… |
After successful integration, when you run campaigns, the results will be as displayed in the image below.

Please keep in mind that for iOS 14.5+, attribution may be impacted due to Apple’s stringent privacy policy. As a result, most data received from users will be labeled as ‘organic’ rather than with specific ad network identifiers like ‘googleadwords_int’ or ‘Facebook Ads,’ and so on.
For those seeking tracking solutions tailored for iOS 14.5+, consider exploring the term “SKAN Appsflyer”.
4- App Download Link Parameters (Onelink)
Not all ad campaigns are run through Ad Networks. You may also run Social Organic Campaign or other Custom Campaigns that can’t be attributed automatically (An app download CTA in a Social Post maybe). In such cases, you need to use an manual tracking link (for users to download your apps)
At Appsflyer, this feature is known as “Onelink”. Here’s an example of an Onelink structure:
Let me explain the components in the link.
Component 1: https://yourdomain.onelink.me/###### is called “Onelink Template”
You can create this template following the instruction below:

Component 2: Next, come the tracking parameters. You can input tracking values for these parameters directly on Appsflyer following the instructions below

Note on Filling Parameters: You need to consistently enter the correct data type for each parameter. This will keep your data clean and easy to analyze.
The table below shows how to effectively fill in and use tracking parameters, mapping them to the parameters I mentioned in the article on Web Parameter Tracking.
(App) Onelink Parameter | (mapping with) Website Parameter | What to fill? |
---|---|---|
pid | utm_source | Manually enter the source name to distinguish the advertising channel and the type of campaign you’re running, for example, “Social_facebook.” |
af_channel | utm_medium | You should enter it exactly like pid, for example, “Social_facebook.” |
c | utm_campaign | Manually enter the ad campaign name. |
af_adset | ga_adgroup_name | Manually enter the ad set / ad group name. |
af_ad | ga_ad_name | Manually enter the ad name / creative name. |
The reason I included the mapping table in the above content is to help you understand the relationship between App tracking and Web tracking. In the upcoming steps, we need to merge related fields between App and Web to ensure that the data is well-aligned and consistent.
Special: Onelink Generator by Nemo Marketing

Creating Onelinks directly in Appsflyer can be time-consuming and prone to data entry errors. That’s why I’ve developed this Onelink Generator for our marketing team to help them create links faster and easier. You can also make a copy of this Google Sheet to use:
ACCESS HERE: ONELINK GENERATOR BY NEMO MARKETING
5- Web-to-App Funnel and Attribution Tracking
If you have a website and you want to bring users from the website to your app, this is a crucial funnel that requires attribution tracking.

In many cases, the first touchpoint is the website, but the customers eventually convert within the mobile app. In such situations, you still want to track to know the source of these users. Appsflyer offers you two types of Web-to-App attribution tracking to onboard users from the web to the app effectively:
- Smart Script
- Smart Banner
Smart Script

You need to embed a specific script into a particular location on your website (requires the involvement of a web developer). The script will automatically display corresponding Button or QR codes for users to download the app. It’s called “smart” because it’s truly optimized. The Smart Script will automatically capture tracking parameters in the web URL and convert them into Appsflyer’s tracking parameters.
For example, when a user clicks on your website with a web tracking link like:
The tracking link will be converted into Appsflyer as follows:
?pid=Google_Search&af_channel=Google_Search&c=Conversion_2023&af_c_id=111111111&af_adset_id=2222222&af_ad_id=3333333&af_keywords=nearest_converse_store
You can implement the Smart Script using the following instructions:
Additionally, during the setup process, you need to map tracking parameters for the web URL to be converted into Appsflyer’s tracking parameters. You can follow the image below if you’ve set up web tracking parameters as per my previous guidance.

Smart Banner

This is a call-to-action (CTA) banner prompting users to download the app when they visit your website on a mobile browser. The way it works is quite similar to Smart Script, so you can read about how to set it up here:
Please note that the mapping of Smart Banner is limited and not as flexible as Smart Script. Therefore, with the same example of a web tracking link above, what you’ll receive is only:
?pid=Google_Search&c=Conversion_2023
Only utm_source and utm_campaign will be converted into Appsflyer’s tracking parameters in this case. Even if your URL contains additional parameters like ga_campaign_id or ga_keyword, Smart Banner won’t capture them.
5- Integrating Mobile App Attribution and Web Attribution Tables (For Developers or Data Analysts)

Objective of this section: Help you build the Final Customer Attribution table where you combine both Web and App tracking data in a consistent manner.
Step 1: Extract and Load data from Appsflyer to your Database:
You can use the API (free): https://support.appsflyer.com/hc/en-us/articles/360007530258-Pull-API-raw-data
Or use Data Locker (with extra fee): https://support.appsflyer.com/hc/en-us/sections/6550945728657-Data-Locker

Step 2: Join and map the Web and App tables
If followed previous articles, you should have created an attribution table for the customers who come to your Website. In this step, you’ll add an attribution table for the App, then join with the table of the Website to generate the Final Customer Attribution data.
When joining, you need to map (combine) relevant fields in to one to keep the data centralized and consistent
For example, ga_campaign_id with af_c_id because they both contain the data type “campaign_id.”
You should not map utm_campaign with af_c_id because one contains “campaign_name” and the other contains “campaign_id.”
Here are the mapping rules based on Nemo Marketing’s tracking format:

Well done!
And that concludes our entire series on attribution tracking. By following the instructions in this series, you’ve likely built a robust attribution tracking system to identify the sources of your users.
Now, make the most of this data to:
- Analyze the effectiveness and optimize your campaigns.
- Integrate with 3rd-party data (ad networks) for automated reporting.
- Develop a business strategy based on the data collected from your users.
I hope this article, as well as the entire series, has been helpful to you. Thank you so much for reading!