Expand my Community achievements bar.

SOLVED

Attributing Free Google Shopping Listings To Organic In Adobe Analytics

Avatar

Level 1

Hi all!

I'm in the process of QAing our Organic segment and am concerned that it is not properly capturing true traffic. We've recently made a big push with Mercehnt Center, feeding more content to Google for Shopping ads and free listings. I was wondering, how can I attribute a visit from a free Google shop listing to Organic in Adobe. 

-are UTMs possible (don't believe so)?

-can I create a rule to capture a portion of the URL parameters if there is something consistent across all free shop listings from Google store to our website?

 

Thanks for all the help. I'm by no means advanced with AA but can use these insights to go to our analytics team that is currently in backlog.


Appreciate any support on this.

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

UTMs are absolutely possible, we use UTMs over CIDs (since UTMs are used more globally - i.e. Google Ads, Google News Showcase, etc... and are read by all our analytics programs - we have GA4 and Parse.ly as well as Adobe).

 

Now, what Adobe won't do is read and track these natively. So there are things that you will want to do.

 

First, since you are talking about Paid vs Natural Search, you will want to ensure your Paid Search Detection is set up correctly.

(Admin > Reports Suites  (choose suite)  Edit Settings > General > Paid Search Detection)

 

Here you can look for any query string values that you know are on your paid ads, such as:

  • utm_medium=cpc
  • utm_medium=ppc
  • utm_medium=paid
  • gclid
  • gclsrc
  • gad_source

 

The utm_medium are based on your tagging, so make them match how you would tag them, these are just samples, the last three are some of the automated tags I've seen come from Google over the years... you can add as many rules as you want / need.

 

 

Now, I assume you are using Marketing Channels... by default, Paid Search has a processing rules for the Paid Search channel "Matches Paid Search Detection Rules" - so as long as you have covered all your based in your Paid Search Detection (which is also limited specifically to known Search Engines) this should attribute your Paid Search properly, and by the same logic, your Organic Search rules will be the opposite of Paid, "Matches Natural Search Detection Rules", wherein the referrer is a known search engine that is not identified as Paid.

 

 

Now, for tracking UTMs, this is where you need to do a little more work. In Launch / Data Collection, you can set up Data Elements for each UTM you want to capture. Then you need to decide how you want to stitch these together into your "Tracking Code" dimension (also known as "Campaign" and "eVar0". This is a dimension with a default 1 week attribution. But it can store only 1 string at a time.. therefore, you will want to figure out a pattern for how you stitch together your UTMs (you can also set up Classification Rules to split these back out using Regex, so make sure it's a pattern that you can deal with... you will want a unique delimiter and likely a placeholder for UTMs that have no value; OR you may want to use a prefix for each UTM if it exists.

 

Example:

?utm_medium=paid&utm_source=google&utm_campaign=campaignx

 

Final Format Options:

  • paid_google_campaignx
    • for missing values, use "na" ("paid_na_campaignx" or "paid_google_na", etc)
    • but if the whole string is "na_na_na" then clear it so it's nothing ""
  • medium:paid|source:google|campaign:campaignx
    • for missing values, just don't include ("medium:paid|campaign:campaignx" or "medium:paid|source:google", etc)

 

You want to be sure that if NO campaign, that your Campaign Dimension does NOT set a value, so that your 1 week attribution will maintain the last value

 

  • Visit 1
    • Page A (entry with campaign)
      • Set Tracking Code Dimension value ("x")
      • Tracking Code Instances metric is triggered (since the value is explicitly set here)
    • Page B (next page, no campaign in the URL
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("x") due to 1 week attribution
      • Tracking Code Instances metric is not triggered (you can use this to tell the difference between when a value is "set" vs "maintained" value)
  • Visit 2 (2 days later, so within a week)
    • Page C (entry with no campaign)
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("x") due to 1 week attribution
      • Tracking Code Instances metric is not triggered
    • Page D
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("x") due to 1 week attribution
      • Tracking Code Instances metric is not triggered
  • Visit 3 (1 day later, still within a week of the campaign being set)
    • Page E (entry with campaign)
      • Set Tracking Code Dimension value ("y"), overwriting the previous campaign
      • Tracking Code Instances metric is triggered (since the value is explicitly set here)
    • Page F
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("y") due to 1 week attribution
      • Tracking Code Instances metric is not triggered

 

You can also create your own custom Visit (or other) expiry dimensions, one for each UTM, that you can track similar to above, but each will only hold one value... (eVar1 for Medium, eVar2 for Source, eVar3 for Campaign, etc)

 

I recommend Visit, because sometimes you just want to see the direct UTM usage from a Visit, which this will accomplish, but also, you can always apply custom attribution to these to see longer data, so using a smaller starting attribution is an easier starting point for this..

 

 

I hope this helps. 

View solution in original post

3 Replies

Avatar

Correct answer by
Community Advisor

UTMs are absolutely possible, we use UTMs over CIDs (since UTMs are used more globally - i.e. Google Ads, Google News Showcase, etc... and are read by all our analytics programs - we have GA4 and Parse.ly as well as Adobe).

 

Now, what Adobe won't do is read and track these natively. So there are things that you will want to do.

 

First, since you are talking about Paid vs Natural Search, you will want to ensure your Paid Search Detection is set up correctly.

(Admin > Reports Suites  (choose suite)  Edit Settings > General > Paid Search Detection)

 

Here you can look for any query string values that you know are on your paid ads, such as:

  • utm_medium=cpc
  • utm_medium=ppc
  • utm_medium=paid
  • gclid
  • gclsrc
  • gad_source

 

The utm_medium are based on your tagging, so make them match how you would tag them, these are just samples, the last three are some of the automated tags I've seen come from Google over the years... you can add as many rules as you want / need.

 

 

Now, I assume you are using Marketing Channels... by default, Paid Search has a processing rules for the Paid Search channel "Matches Paid Search Detection Rules" - so as long as you have covered all your based in your Paid Search Detection (which is also limited specifically to known Search Engines) this should attribute your Paid Search properly, and by the same logic, your Organic Search rules will be the opposite of Paid, "Matches Natural Search Detection Rules", wherein the referrer is a known search engine that is not identified as Paid.

 

 

Now, for tracking UTMs, this is where you need to do a little more work. In Launch / Data Collection, you can set up Data Elements for each UTM you want to capture. Then you need to decide how you want to stitch these together into your "Tracking Code" dimension (also known as "Campaign" and "eVar0". This is a dimension with a default 1 week attribution. But it can store only 1 string at a time.. therefore, you will want to figure out a pattern for how you stitch together your UTMs (you can also set up Classification Rules to split these back out using Regex, so make sure it's a pattern that you can deal with... you will want a unique delimiter and likely a placeholder for UTMs that have no value; OR you may want to use a prefix for each UTM if it exists.

 

Example:

?utm_medium=paid&utm_source=google&utm_campaign=campaignx

 

Final Format Options:

  • paid_google_campaignx
    • for missing values, use "na" ("paid_na_campaignx" or "paid_google_na", etc)
    • but if the whole string is "na_na_na" then clear it so it's nothing ""
  • medium:paid|source:google|campaign:campaignx
    • for missing values, just don't include ("medium:paid|campaign:campaignx" or "medium:paid|source:google", etc)

 

You want to be sure that if NO campaign, that your Campaign Dimension does NOT set a value, so that your 1 week attribution will maintain the last value

 

  • Visit 1
    • Page A (entry with campaign)
      • Set Tracking Code Dimension value ("x")
      • Tracking Code Instances metric is triggered (since the value is explicitly set here)
    • Page B (next page, no campaign in the URL
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("x") due to 1 week attribution
      • Tracking Code Instances metric is not triggered (you can use this to tell the difference between when a value is "set" vs "maintained" value)
  • Visit 2 (2 days later, so within a week)
    • Page C (entry with no campaign)
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("x") due to 1 week attribution
      • Tracking Code Instances metric is not triggered
    • Page D
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("x") due to 1 week attribution
      • Tracking Code Instances metric is not triggered
  • Visit 3 (1 day later, still within a week of the campaign being set)
    • Page E (entry with campaign)
      • Set Tracking Code Dimension value ("y"), overwriting the previous campaign
      • Tracking Code Instances metric is triggered (since the value is explicitly set here)
    • Page F
      • Tracking Code Dimension should not be set, however, it will maintain the post-processed value ("y") due to 1 week attribution
      • Tracking Code Instances metric is not triggered

 

You can also create your own custom Visit (or other) expiry dimensions, one for each UTM, that you can track similar to above, but each will only hold one value... (eVar1 for Medium, eVar2 for Source, eVar3 for Campaign, etc)

 

I recommend Visit, because sometimes you just want to see the direct UTM usage from a Visit, which this will accomplish, but also, you can always apply custom attribution to these to see longer data, so using a smaller starting attribution is an easier starting point for this..

 

 

I hope this helps. 

Avatar

Community Advisor

Google Shopping listings are divided into 2 parts: Sponsored and non-sponsored.

Sponsored listings are obtained from the lists that you have set in your Google Ads account. With those listings, you can add your own UTM tags, or whatever campaign tracking method that you're using with Adobe Analytics. When a user clicks one of these listings, he gets taken to your site directly, using your campaign tracked-URLs.

Non-sponsored listings are obtained from what Google has crawled in your website, just as with regular search indexing. As such, normally, there would not be any way to add any campaign tracking to these. And when the user clicks one of these listings to your site, all that Adobe Analytics will know is that the user had come from the "https://www.google.com" Referrer, thus attributing the visit to "Organic" Marketing Channel.

I haven't found a way to differentiate Shopping referrals from regular Search Engine referrals, since Google always uses the same Referrer, "https://www.google.com", for both, so that is the only information that Adobe Analytics can use to identify the Marketing Channel.

Avatar

Level 1

Thanks for the great answers both! @yuhuisg that's what I was mainly wondering if non-sponsored clicks to website from Shopping were properly captured under the Organic/Natural channel or we needed to tweak any configuration.

Thanks again.