PBA website attribution URL best practices

At a glance: Best practices to attribute your website attribution campaigns with the best campaign granularity available.

PBA website attribuiton URLs

To get the best campaign granularity results combined with the most accurate attribution in your website attribution data, populate URLs (links), bringing users to your website using the practices detailed in this article. 

URL parameters—group and priority  

The AppsFlyer website attribution solution supports several campaign parameter classes. The classes are ranked in priority as follows: 

  • [Highest priority] PID

  • UTM

  • [Lowest priority] Click IDs from specific channels like Google, DoubleClick, and Microsoft.

The PBA media source attribution rules determine how a given user is attributed. Parameter classes are ranked by priority. If more than one parameter class is found on a link, the class having the highest priority is awarded the attribution.

Parameters supported
# Parameter

Used for

Parameter class

Available in the Dashboard

PBA raw data field

1

pid

Media source

PID

Y

media_source

2

c

Campaign name

PID

Y

campaign

3

af_c_id

Campaign ID

PID

Y

campaign_id

4

af_adset

Adset name

PID

Y

Extract from query_params

5

af_adset_id

Adset ID

PID

Y

Extract from query_params

6

af_ad

Ad name

PID

Y

Extract from query_params

7

af_ad_id

Ad ID

PID

Y

Extract from query_params

8

utm_source

Media source

UTM

N

media_source

9

utm_medium

Media type

UTM

N

media_type

10

utm_campagin

Campaign

UTM

N

campaign

URL parameter best practices

Selecting URL parameters

Each parameter class functions in the context of a silo. As such, if you need URLs with multiple classes, the URL must have the relevant parameters of each class. By doing so, your reporting granularity is optimized.

The use of parameters of multiple classes is illustrated in the context of Facebook ads as follows:

  • PID groupwww.website.com?pid=facebook_int&c={{campaign.name}}&af_c_id={{campaign.id}}&af_adset={{adset.name}}&af_adset_id={{adset.id}}&af_ad={{ad.name}}&af_ad_id={{ad.id}}

  • UTM group: www.website.com?utm_source=facebook&utm_medium=paidsocial&utm_campaign={{campaign.name}}

  • If you combine classes but include only some of the required parameters, AppsFlyer might not provide the full granularity. For example, if you use www.website.com?utm_source=facebook&c={{campaign.name}} the following occurs: 

    • AppsFlyer uses the UTM class because there is no PID class and determines the media source using utm_source.

    • However, the campaign can't be determined since c= is part of the PID class, but pid isn't included.

    • To solve this, assuming you need the utm_source for other purposes, consider this option: www.website.com?pid=facebook_int&c={{campaign.name}}&utm_source=facebook. With this structure, AppsFlyer uses the PID class to identify the media source. Other PID parameters, such as c=, can be included and the utm_source is disregarded because it has a lower priority. 

Implement dynamic URLs using ad network macros

Use network macros (AKA valuetrack params) to save time when building templates and applying URL parameters for paid campaigns.

Networks use different macros to populate the parameters in the URL. Consequently, you must check ad network documentation to verify that you use the macros correctly. For example, if you want to pass the campaign name in the c= parameter, you can avoid hard coding the actual campaign ID for each  URL, and just use the macros:

    • Google Adwords: www.website.com?af_c_id={campaignid}

    • Facebook ads: www.website.com?af_c_id={{campaign.id}}

    • Pinterest ads: www.website.com?af_c_id={campaignid}

    • Snapchat ads: www.website.com?af_c_id={{campaign.id}}

    • Microsoft ads (Bing): www.website.com?af_c_id={campaignid}

Consistent case within parameters

Parameter values are case-sensitive. For example, utm_source=channel1 and utm_source=CHANNEL1 are regarded as different media sources. As such, verify that you are consistent with regard to the letter case. 

Use Google Ads integration to automate granularity

In the case of Google Ads campaigns, you can get campaign granularity by integrating PBA with your Google Ads account. This ensures that your data is populated with all campaign hierarchy data without the need for PID or UTM parameters on the URL.

Was this article helpful?