AppsFlyer collects the full raw users installs and events data and aggregates it continuously. AppsFlyer supports aggregating large numbers of cohorts, but on days when these numbers are exceeded, the performance reports may contain one or more of the following ad-hoc sources: Exceeded_SiteID_Limit, Exceeded_Campaigns_Limit, Exceeded_Events_Limit, Exceeded_adset_Limit and Exceeded_ad_Limit.
The "Exceeding" sources contain the combined data of all the sources that overflow beyond the AppsFlyer defined daily thresholds.
Installs and subsequent events that belong to "exceeding" sources are therefore not attributed to their original sources, but rather to the ad-hoc "Exceeded" sources. If the overflow is large then the Exceeded sources may be significant as well. The final result may be inaccurate attribution information during the days of the overflow.
The following article explains about the different Exceeded sources, and how to prevent them.
The information in the raw data reports remains precise regardless of the existence of Exceeded sources elsewhere.
The Exceeded Sources Explained
AppsFlyer displays up to 1,000 unique site IDs per day per media source on the aggregated performance report table on the overview page (if you group by site ID as shown above) and on the performance reports of the Export Data page.
During a single day, all site ID information from the 1001st site ID and above per any media source, is aggregated into a single site ID titled Exceeded_SiteID_Limit. Thererfore, if you do see the site ID Exceeded_SiteID_Limit, it means there are too many used site IDs per the media source in question, and trying to optimize the source's traffic according to site IDs becomes less accurate and less effective.
"Divide and Conquer". Instead of using thousands of site IDs per media source, which distort your aggregated data, use a second parameter on your tracking links called af_sub_site_id. Define a small number of general site IDs (ideally up to 50), and assign all previous site IDs as sub-site IDs under these general site IDs. This enables you to:
1. Prevent seeing Exceeded_SiteID_Limit
2. Efficiently optimize according to significant site IDs traffic
3. Perform deep analysis based on the site IDs and sub-site IDs in the raw data.
In the Retention Report you do not see an Exceeded_SiteID_Limit but not all the Site IDs are shown. Site IDs are shown randomly but it is a UI limitation to show all (when they have exceeded the limit). To work around this issue, retrieve retention data from master API
AppsFlyer displays up to 3,000 unique campaign names per day per app on the aggregated performance report table on the overview page and on the export data performance reports.
During a single day, all campaign information from the 3001st campaign and above, are attributed to the Exceeded_Campaign_Limit source.
Define a small number of general campaign names (ideally up to 300), and assign all previous campaign names as ad sets. On AppsFlyer's tracking links the parameter is af_adset. This enables you to:
1. Prevent seeing Exceeded_Campaign_Limit
2. Efficiently optimize according to significant ad sets traffic
3. Perform deep analysis based on the campaigns and ad set names in the raw data.
Exceeded_AdSet_Limit and Exceeded_Ad_Limit
AppsFlyer displays up to 1,000 unique ad set names and 1000 unique ad names per day per media source per app on the aggregated performance report table on the overview page and on the export data performance reports.
During a single day, all ad set information from the 1001st ad set and above, are attributed to the Exceeded_AdSet_Limit source. The same applies to the Exceeded_Ad_Limit source
"Divide and Conquer" again. Define a small number of general ad set names (ideally up to 50), and assign all previous ad set names as single ads. You could also use any of the free to use af_sub parameters On AppsFlyer's tracking links. This enables you to:
1. Prevent seeing Exceeded_AdSet_Limit or Exceeded_Ad_Limit.
2. Efficiently optimize according to significant ad sets and ads traffic.
3. Perform deep analysis based on the ad set and ad names in the raw data.
AppsFlyer displays up to 300 unique event names per day per app mainly on the events widget on the overview page and on the events page.
During a single day, all event information from the 301st event and above, are attributed to the event name called Exceeded_Events_Limit.
Use rich in-app events!
Instead of reporting on hundreds of different events define a small number of general event names (ideally up to 20). Use dynamic event values to differentiate between these events. This enables you to:
1. Prevent seeing Exceeded_Events_Limit
2. Efficiently optimize according to value parameters
3. Perform deep analysis based on the event values, which are available via the in-app events raw data report.
your app com.greatapp sends a purchase in-app event for every color of socks it sells, i.e. buy_red_socks, buy_blue_socks, buy_white_socks etc. To avoid this inflation of different events narrow them all down to a single event, buy_socks, and insert the color as an event parameter.
How to Avoid Getting Exceeded Sources?
The Long Term Solution
Most advertisers should not encounter Exceeded sources as they normally don't define 3,000 campaigns manually etc.
If you do encounter Exceeded sources it is probably because one or more media sources is using dynamic values for names of campaigns, site IDs, ad sets or ads. Dynamic in-app events within the app code may cause the Exceeded_Events_Limit source data to appear.
Use only static values for names of in-app events, campaigns, site IDs, ad sets and ads to avoid getting Exceeded sources.
Also please check specific tips per any Exceeded source above.
The Short Term Solution
The long term solution may take you a few days to a few weeks to fully implement.
But what if you want to look at your data RIGHT NOW?
As explained, an Exceeded source occurs when AppsFlyer receives the N+1 click (or event) source during a single day. It is possible that the more prominent media sources you use arrive later in the day, and therefore are combined with an Exceeded source's data. Here's a simple trick to minimize the effect of any Exceeded source you see:
Forget today and look only at data from yesterday and beforehand. Every day an aggregation process recalculates the last day's data and in retrospective assigns only the smallest (not most late) sources, to any Exceeded source. This ensures that the distortion caused by the overflow of clicks is minimal!