Analytics Facebook Ads

Facebook Ads Custom Column Setup

This custom column setup gives a good ROI focused review of your e-commerce campaigns and ad sets.

OrderColumn Name
1Object Names & Ids > Campaign Name
2Object Names & Ids > Ad Set Name
3Performance > Delivery
4Ad Relevance Diagnostics > Quality Ranking
5Performance > Attribution Setting
6Performance > Impressions
7Performance > Reach
8Performance > Clicks (All)
9Clicks > Outbound Clicks
10Performance > CTR (All)
11Clicks > Outbound CTR
12Conversions > Adds to Cart: Total
Deselect all sub-categories
13Conversions > Purchases: Total
Deselect all sub-categories
14Conversions > Purchases: Value
Deselect all sub-categories
15Conversions > Purchases: Cost
16Performance > Amount Spent
17Goal, Budget & Schedule > Budget
18Performance > Frequency
19Conversions > Purchase ROAS (Return on Ad Spend)
Deselect all sub-categories
  • Select “Save as Preset” and name your column set “ROAS”
  • Click the column icon and select “Set as Default”

Custom Metrics

Columns > Customize Columns > Create Custom Metric

Optionally, create the following custom metric

Cost of Sales

The percentage revenue spent to acquire a sale. This is a more business centric metric than ROAS, and is simpler to understand at a glance if a particular campaign is profitable or not.

NameCost of Sales
DescriptionAd spend as a % of revenue.
FormulaAmount Spent ÷ Purchases Conversion Value
Who can access thisEveryone
Analytics Digital Marketing Google Ads

Essential Google Ads Custom Columns

Here are some incredibly useful custom columns that every account should have:

Column NameFormulaType
ROASConv. Value ÷ Cost%
Cost of Sales (COS)Cost ÷ Conv. Value%
% COS CPCConv. Value ÷ Clicks x %$
(Conv. Value + (Conv. Value ÷ Conversions)) ÷ Clicks x %$


Return On Ad Spend — It is surprising that this column doesn’t exist by default, since Google provides target ROAS based bidding strategies.

DescriptionReturn on Ad Spend
FormulaConv. Value ÷ Cost
Data FormatPercent (%) or Money ($)

This metric tells you how much sales are generated for each dollar in ad spend.

  • 100% ROAS: For every $1 spent, you generated $1 in revenue.
  • 200% ROAS: For every $1 spent, you generated $2 in revenue.

Many of the automated bidding strategies in Google Ads let you specify a target ROAS goal, so this custom column allows you to see at a glance if your campaigns, ad groups, and keywords are hitting your ROAS targets.

COS (Cost of Sales)

COS stands for Cost Of Sales

DescriptionCost of Sales
FormulaCost ÷ Conv. Value
Data FormatPercent (%)

This metric is the inverse of ROAS and it displays ad spend as a percentage of revenue. Cost of sales is a very intuitive metric when comparing against your profit margins. If you know your profit margins, then it’s easy to see when your Cost of Sales exceeds those margins, and when you start to lose money on every sale.

  • 20% Cost of Sales: For every $1 in revenue, we spent $0.20 on ads.

To convert between ROAS and COS use these formulas:

Cost of Sales (COS) = 1 / ROAS

Return on Ad Spend (ROAS) = 1 / COS


What is the max Cost per Click bid that will keep me below the specified % Cost of Sales target.

Name5% COS CPC
DescriptionMaximum CPC to stay below 5% Cost of Sales
FormulaConv. Value ÷ Clicks x 0.05
Data FormatMoney ($)

If you use Manual CPC bidding for a campaign, creating a few of these columns for various profit margins will give you access to quick calculation for your max CPC bids.


5% COSMax CPC bid to hit 5% cost of sales
35% COSMax CPC bid to hit 35% cost of sales
55% COSMax CPC bid to hit 55% cost of sales

The number of columns you create and the values you use will depends on your business and profit margins. Create one column for some typical cost targets.

Optimistic % COS CPC

What is the max Cost per Click bid that will keep me below the specified % Cost of Sales target, under the assumption that the next click will result in a sale

NameOptimistic 5% COS CPC
DescriptionMaximum CPC to stay below 5% Cost of Sales, assuming the next click will result in a sale
Formula(Conv. Value + (Conv. Value ÷ Conversions)) ÷ Clicks x 0.05

or use a harde-coded order value:
(Conv. Value + avg_order_value) ÷ Clicks x 0.05
Data FormatMoney ($)

This custom column is similar to the % COS CPC column above, except that it is optimistic in assuming that the “next click” will result in a sale, and includes the next sale’s revenue in the Max cost per click calculations.

You can either hard-code your average conversion value, or you can calculate it based on past conversion data.

This column is useful when you are starting a new campaign where you don’t have much conversion data yet, and you want to be optimistic with your bidding.

Further Reading

Attribution Digital Marketing eCommerce Google Ads Shopify

Optimize Shopify’s Google Ads Conversion Tracking

Here are some essential changes to make to your Google Ads conversion tracking after you connect Shopify’s Google Shopping Channel.

Install the Google Shopping Channel

This guide assumes that you have the Google Shopping Channel installed on your Shopify store. If this is not the case, then:

  1. Install the Google Shopping Channel
  2. Connect your Google Account (must be an account that has access to both Google Merchant Center and Google Ads)
  3. Connect your Google Ads Account in the “Smart Shopping campaign” section

Remove Old Conversion Tracking Code

By connecting Shopify to Google Ads via the Google Shopping Channel, Shopify will begin sending conversion data to your Google Ads account. If you were already tracking conversions in Google Ads, then you need to make sure you are not duplicating your conversion data:

  • If you previously had a Google Ads conversion tracking script installed in your checkout, then remove that code.
  • If you were importing conversions from Google Analytics, stop importing those conversions.

Fix Conversion Categories

Log into Google Ads and then Go to
Tools & Settings > Measurement > Conversions

You should see a bunch of new conversion actions created by Shopify. You will also see a warning that your conversion categories are out of date, and that you should update 4 of your conversions actions.

Click Update Now and update the settings to the following:

Conversion Windows and Attribution Models

Although Shopify created multiple conversion actions, you only need to worry about the Google Shopping App Purchase conversion event.

Click on the Google Shopping App Purchase conversion action and update the following settings:

Old ValueNew Value
CountEvery ConversionOne
View-through Conversion Window30 days1 day
Attribution ModelLast clickLinear

One Conversion per click

If you count “Every Conversion” you increases the risk of double attribution across your various channels.

For example: A user clicks on your Google ad and makes a purchase. It makes sense to count and attribute this conversion to Google Ads. If this same user later receives your newsletter, and purchases again, then you probably want to attribute that sale to the Newsletter and NOT to Google. Setting conversion count to “One” instead of “Every” ensures that only the first sale gets attributed to google, and not the second.

Counting “Every” conversion increases the risk of double attribution

Click-Through Conversions

Arguably, you should set your Click-Through Conversion window to 30 days. 90 days seems extremely long, and could increases your chances of double attribution across multiple sales channels.

However, if you are using Smart Campaigns or Smart Bidding, the bidding algorithm can only take into account conversions that have occurred within the specified conversion window. So theoretically, the longer your conversion window, the more data for Smart Bidding to optimize with. So the 90 day click-conversion window can probably stay.

View-Through Conversions

Set the View-Through Conversion window to only 1 day. A longer View-Through conversion window is dangerous, and will lead to over attributing sales to Display Remarketing, YouTube, and Smart Shopping. This will invariably cause you to overspend on those campaigns.

A View-Through conversion window greater than 1 day is dangerous, and will lead to over attributing sales to undeserving channels.

Which Attribution Model to use?

Linear, Time Decay, Position Based, or Data Driven are all better than First or Last click, as they allow you to attribute sales across a wider range of ad interactions, which allows you to spend more evenly across your entire funnel.

I personally usually choose Linear or Position Based, as I like pushing more attribution (and therefore spend) into the top part of the funnel.

Enhanced Conversion Tracking

This option is still in beta, and so you may or may not have access to this in your account. At the bottom of your Purchase conversion action, you should see a section called “Enhanced Conversions”

Expand this section and enter the following settings:

  • Turn on Enhanced Conversions
  • Enter your site URL (ideally your order receipt / thank you page)
  • Choose the Global Site Tag
  • Select “Enter Javascript or CSS Selectors” (note that all of the below are case sensitive. So the first “S” of Shopify needs to be capitalized, and the remaining characters need to be lower case)
  • Email: Javascript:
  • Phone: Javascript:
  • Name and Address: Javascript:
    • Shopify.checkout.billing_address.first_name
    • Shopify.checkout.billing_address.last_name
    • Shopify.checkout.billing_address.address1
    • Shopify.checkout.billing_address.province_code
    • Shopify.checkout.billing_address.country_code

Click Save

Further Reading

Analytics Shopify

sag_organic and product_sync in Google Analytics

Last Updated: April 5, 2023

If you installed the Google sales channel on Shopify, you may have noticed a rise in strange referrals in your Google Analytics reports: Medium = product_sync and Campaign = sag_organic

Where do sag_organic and product_sync come from?

When the Google sales channel uploades your product feed to Google Merchant Center / Google Shopping, it appends the following UTM tags to the product url:

UTM TagValue

The following querystring is appended to your product’s link url:


Why do we need these UTM parameter?

Today, these UTM tags are no longer needed and should be stripped out from your product’s links.

They are a leftover from when Shopify first implemented the Google sales channel. They were Shopify’s way of helping you track the organic free traffic coming from Google Shopping. The intention was to help you separate Organic Google Shopping traffic from Organic Google Search Traffic.

The ability to get this granular is good, but the above implementation changed Google Analytic’s default behaviour, which is usually unwelcome (in particular when the change is unexpected).

A major problem with the Shopify implementation, is that they didn’t include a canonical_link as part of the feed. The canonical link ensures that only the “clean” version (without UTM tags) of the product link gets include into Google’s search index. Without this, you risk having your organic search traffic comign in with these UTM tags as well.

What does sag_organic mean?

The “SAG” in sag_organic stands for Surfaces Across Google.

Surfaces Across Google was the name of the Google feature that enabled “free shopping listings”. It has since been renamed to “free shopping listings” and the name “SAG” is no longer used.

Fixing your Product Urls

If you have Auto-Tagging properly configured in both Google Ads and in Google Merchant Center, then Google Analytics will be able to properly differentiate between Paid and Organic Shopping traffic.

Step 1
Rewrite the UTM tags

This will remove all UTM parameters from your Product Links

  1. Go to Merchant Center > Products > Feeds
  2. Click on the Content API feed
  3. Click on the Feed Rules tab
  4. Click the big blue PLUS + button, type link in the field, and select link from the drop down.
  5. For Data Source, select Set to, type link and select link from the Primary Feed: Content API list.
  6. Click OK
  7. Set the default behaviour if the link is blank to “Leave Blank”
  8. Now go to Modifications > Add Modification
  9. Choose Optimize URL > Set Parameter
FunctionParameter Name
Remove Parameterutm_source
Remove Parameterutm_medium
Remove Parameterutm_campaign
Remove Parameterutm_content
  1. Click OK and look in the right side column preview to see if the link has been properly updated.
  2. Click Save as Draft and Apply

Step 2
Set your Canonical Link

This will ensure that only the “clean” version (without UTM tags) of the product link gets include into Google’s search index.

“If you use tracking parameters in your link attributes, it is recommend that you use the canonical_link attribute to provide a canonical URL. Use the canonical_link attribute to ensure that products are associated with the correct URL in the Google Search index.”

Google Merchant Center Help
  1. Go to Merchant Center > Products > Feeds
  2. Click on the Content API feed
  3. Click on the Feed Rules tab
  4. Click the big blue PLUS + button to add a new Rule and type canonical and choose canonical link from the drop down.
  5. For Data Source, select Set to, type link and select link from the Processed Attributes list.
  6. Click OK
  7. Change the default behaviour if canonical_link has no value to “leave blank”
  8. Add Modification > Find and Replace
    Now we need to add two Find & Replace operations. One to remove the UTM tags and another to remove the Currency parameter that Shopify also appends.
1&?utm_.+?(&|$)$(leave blank)Search as regular expression
2&currency=(…)(leave blank)Search as regular expression
  1. Click OK and look in the right side column preview to see if the new link looks nice and clean. It should only have the variant id in there.
  2. Click Save as Draft and Apply
Your canonical feed rules should look something like the above

Step 3
Configure Auto-Tagging

This will configure Google Ads and Google Merchant Center to properly tag your product urls, and Google Analytics not to override that tagging:

  1. Google Ads (in the left hand menu)
    Settings > Account Settings > Auto Tagging: ON
  2. Google Merchant Center:
    Gear Icon > Conversion Settings > Auto Tagging: ON
  3. Google Analytics:
    Property Settings > Advanced Settings > Allow Manual Tagging to Override: OFF


You may need to wait a few hours for your feed to be update with the new values, but this *should* give you the default vanilla base setup that Google expects in Analytics.

Paid Shopping traffic will show up as google/cpc while Free Shopping traffic will show up as google/organic (or as “Shopping free listings” in GA4)

Related Resources

Attribution Digital Marketing

Attribution Poaching and Remaketing Fraud

Common Deception Tactics by Remarketing Platforms

View Through Conversions

  • A View Through Conversion is when a user sees your ad, DOES NOT CLICK on the ad, and later makes a purchase.
  • A Click Through Conversion is when a user sees your ad, CLICKS on the ad, and later makes a purchase.

For a sales driven remarketing campaign you should exclusively focus on Click-Through Conversions and ignore View-Through Conversions. The incremental sales generated by an ad display in a remarketing campaign is almost zero.

Remember that we are working with a Remarketing campaign. We are targeting customers that are aware of your brand. Customers who have already visited your site. In many cases, customers that have added a product to their cart and are very close to purchase.

Consider this scenario: A long time customer visits your site, quickly finds the product he is looking for and starts the checkout process. In the middle of checkout, he receives an e-mail from a friend. He opens the e-mail and clicks on a link. That link takes him to a news site to read an article. Since he is in your remarketing audience, that news site shows him an ad and records a “View”. The customer finishes reading the article and returns to your site to complete his purchase. Your remarketing campaign has now taken credit for that sale because an ad was displayed to this customer.

If your customer visits any webpage during the purchase process, or if they have another browser tab open, they will likely be exposed to an ad view. That ad view will get View-Through credit for that conversion.

The number of View Through Conversions recorded in a remarketing campaign can be more than ten times that of Click Through Conversions. It is no wonder that remarketing platforms and ad agencies are eager to include View Through Conversions in ROI calculations. If you include View Through Conversions you will see fantastic performance results. This will cause you to double or triple your budget. It’s easy money for them.

Here is what a fictional remarketing campaign with a typical distribution of view vs click conversions might look like:

 Ad SpendClick ConversionsClick SalesView ConversionsView Sales
 $12,00050 $10,000 400 $80,000

If we use Click Conversions to calculate performance, we lose $0.17 for every $1.00 in ad spend. We have a negative ROI. The campaign is not profitable. We need to DECREASE our bids and budget.

 Ad SpendConversionsSalesCPAROASROI
 $12,00050 $10,000 $240 0.83-16%

If we add View-Through Conversions to our calculation, we come to a totally different conclusion: The campaign is now performing fantastically well. We profit $6.50 for every $1.00 in ad spend. That’s a 650% ROI! The campaign is super profitable. We should INCREASE our bids and budgets. This is exactly what your remarketing platform wants you to do, but is exactly the OPPOSITE of what you should do.

 Ad SpendConversionsSalesCPAROASROI
 $12,000450 $90,000 $26.60 7.5650%

The (unfortunate) reality is that the 400 view-through sales above were not a result of your remarketing campaign. The ad display is simply poaching attribution from your other channels.

Note: View Conversion metrics are valuable and useful in many scenarios. However, in the context of a sales driven remarketing campaign they should be excluded.

Cookie Bombing and Fake Impressions

Compounding the problem of View Through Conversions are fraudulent ad impressions and cookie bombing.

Over 50% of Display Ads never actually appear on the user’s screen. They are fraudulently served in a hidden iframe, or are stacked underneath other ads, or are compressed into a 1×1 pixel image, etc… These hidden fraudulent ad impressions still record a “View” in the user’s remarketing cookie. When that user eventually purchases on your site, that invisible fraudulent ad gets credit for the purchase.

If a particular ad network’s website can generate many conversions for advertisers, then those advertisers will want to spend more with that website. Fraudulent sites engage in “cookie bombing” to maximize the number of conversions they can “capture”. They serve as many ads to as many unique users as possible, so that as many users as possible have their cookie. The more users have their cookies, the more conversions will be credited to their sites, and the more ad budget money they will be paid.

To be clear, these sites are not actually serving any visible ads to any users. They are generating fraudulent ad impressions to set cookies on as many users as possible in order to “poach” conversion attribution (and budget) from your other channels. If a user with their cookie ever makes a purchase in the future, that site will get a view-attribution for that purchase, causing more ad budget money to flow to them.

All these hidden impressions distributed to as many users as possible cause View Through Conversion metrics to skyrocket. As mentioned before, View Through Conversions reported by an ad platform can easily be more than 10 times the number of Click Through Conversion reported. It is no surprise that ad platforms want you to believe in and count View Through Conversions.

New Attribution Models: View Throughs Disguised as Click Throughs

The simple way for an ad platform to fool you into counting View Through Conversions is to simply have a single “Conversions” column and lump all conversions in there. The platforms are however getting more sophisticated at transforming view conversions into click conversions, using new attribution models as a guise:

  • YouTube TrueView Conversion is any conversion that occurs after the user has watched 30 seconds of a video. Even if no click happened. TrueView conversions get counted in the Conversion column in AdWords along with the regular Click Through conversions. This makes it seem like an actual click happened, when none did. What makes this even more confusing and misleading, is that YouTube will still report View Conversions in a separate column. Since there are two separate columns, one tracking View Throughs explicitly, you will assume that the Conversions column must only contain clicks. This is not the case, and if not careful, you will significantly overspend on your YouTube remarketing campaign.
  • Steelhouse’s “Verified Visit” model counts any View-Through visit to your site within 1 hour of seeing an ad as a “Verified Visit”. Any conversion that happens within 30 days of this “Verified Visit” is counted as a Click Conversion (even though, no click ever occurred). Steelhouse will skirt the View Through question by saying that they only count conversions from “Verified Visits”. This will mislead you to think that they only count Click Through Conversions. But that is incorrect. The stats they report definitely include View conversions, which inflate your ROI, and cause you to overspend.

I spent months believing that SteelHouse’s numbers were based solely on clicks and post-click conversions. SteelHouse’s conduct made it appear to perform better than it actually was performing. Toms made spending allocation decisions and marketing vendor choices based on SteelHouse’s inflated performance.

Anna Hordov
former Online Demand Generation Manager, Toms

How to protect yourself from View Through Conversion “fraud”?

  • Insist that your platform report on Click Through and View Through Conversions in two separate columns. It is OK to include View Conversions in a report if they are in a separate column. It is NOT OK to combine View Conversions with Click Conversions in the same column.
  • Validate all data with your site analytics. Your analytics platform should report the actual accurate click through conversion data. Always compare the reports your remarketing platform generates with your own analytics data.
  • Don’t run Conversion focused YouTube remarketing campaigns. There is currently no way to opt-out of the TrueView model, therefor your conversion column will be overstated. Read more about TrueView…
  • Don’t use Steelhouse. Their Verified Visit model is designed to fool you. They also use their tracking pixel to inject data into your analytics. Scary stuff. Avoid.
  • Don’t use Criteo. They won’t tell you where your ads are displayed and their network has much more fraudulent sites participating in cookie bombing than anyone else. Avoid.

Fraudulent Automated Clicks

Fake clicks are an evolution of Cookie Bombing, except in this case clicks are auto generated onto the invisible ads, sending invisible visits to your site, and claiming Click credit for your purchases.

How Fake Clicks Work

  1. A legitimate customer visits your site but does not purchase. He is now placed into your remarketing list.
  2. This customer now visits another site on the internet. That site serves up an invisible ad and automatically “clicks” on that ad.
  3. That click causes an invisible visit to your website, by that customer. That customer’s remarketing cookie records a click and a site visit.
  4. Your legitimate customer now has a remarketing cookie set that says he saw an ad, clicked on that ad, and visited your website from that ad.
  5. When that customer comes back to your site to make a purchases, that ad will take credit for the conversion.

There are two issues here: The first is that you’ve paid for a fraudulent click. The second more important issue is that a conversion has been attributed to that fraudulent click. As a result, your remarketing platform appears to be performing better, meaning you will likely increase your budget in order to buy more of those fraudulent clicks.

Obfuscation and Lack of transparency

Anytime the remarketing network is hiding data from you, that’s an opportunity for them to fool you. For example, Criteo refuses to be transparent with the list of publisher sites where you ad appears and where your clicks and conversions come from.

3.6% of Criteo’s ‘users’ generate 25% of its clicks. Such behavior by real human users is highly unlikely. This behavior is indicative of adware, bots, click farms, or other code created by Criteo or its affiliates to generate clicks and drive up Criteo’s click-count numbers.


How to protect yourself?

  • Insist on detailed and transparent reports on where your ads were served, and where the clicks came from. If certain sites seem to have unusually high click and conversion rates, dig deeper into those sites to see if they are legitimate or not.
  • Avoid using platforms that lack transparency. Don’t use Criteo for this reason, as they refuse to provide transparent reports of where your ads are served, preventing you from doing a proper audit.

Hijacking Visits and Overwriting Analytics

When you install 3rd party javascript pixels on your site, you give the owner of that script a lot of power. In particular that script can overwrite referral data, popup hidden pages, and generate clicks to your site. It can even directly write to your analytics platform!

You may think that your analytics data is safe, but think again. When you install any 3rd party javascript on your site, you also expose your analytics account for injection.

This is super alarming and you should be very concerned about this capability. Any Advertising Platform that has any javascript installed on your site can be overwriting and modifying your analytics data. They can override referral data for direct and organic visits to make it look like they are coming from their network. They can highjack e-commerce transactions and attribute them to themselves. They can make it seem like they are out-performing all your other marketing channels.

SteelHouse used “malicious code to make it appear as though an internet user clicked on a SteelHouse-placed advertisement, even though no such click occurred.”

Leah Bliss
former Global Retargeting Manager, VistaPrint

Steelhouse, under their Verified Visit model, uses their javascript pixel to generate clicks on ads, visits to your site, and to attribute conversions to themselves directly in your analytics.

How this works:

  1. A legitimate customer visits your site but does not purchase. He is now placed into your remarketing list.
  2. This customer now visits another site and is shown an ad. The customer DOES NOT click on the ad, but the remarketing cookie records a View.
  3. An hour later, the customer revisits your site from an organic source. The pixel script on your site detects that the customer has a recent ad view recorded.
  4. The pixel script loads an invisible iFrame, in the iFrame it loads the original ad and generates an automatic click and visit to your site.
  5. Your legitimate customer now has a remarketing cookie set that says he saw an ad, clicked on that ad, and visited your website from that ad. Your analytics data also says that this customer came from an ad click, and not from the original organic source.
  6. When that customer comes back to your site to make a purchases, that ad will take credit for the conversion.

Worst still, when you look in your analytics, it will appear that your Remarketing Platform is sending you lots of visitors and conversions, which will cause you to spend more with them. The reality is that these visitors are organic visits that were hijacked by the remarketing pixel.

“SteelHouse’s practice of inserting a code into an internet user’s browser to make a view of an advertisement appear indistinguishable from a click on Decker’s Adobe Analytics system is not, in any way, common or acceptable industry practice. Nor should it be because it is deceptive.”

Graham McCulloch
Director of eCommerce, Deckers

How to protect yourself?

  • Insist on an image only tracking pixel. Although this is rarely a viable option, try to avoid 3rd party javascript when possible.
  • Keep your analytics private and hidden. The less they know about your analytics platform and setup, the more difficult it will be for them to inject data. Avoid giving them any access, and ideally don’t even tell them what platform you use.
  • Get a written declaration from the Remarketing Platform that they will not inject data into your analytics, that they will not modify referral data, that they will not generate clicks, nor do anything that will simulate visits to your site or in your analytics.
  • Don’t use Steelhouse

More steps to protect yourself

Be very skeptical

Be very skeptical of all data provided by the 3rd party platform. By default assume they are lying to you and are trying to take your money. Always rely on your in-house analytics data first (although even this can be messed with via 3rd party pixels) and always try to deeply understand how their platform and algorithms work. Explicitly ask what they are doing about ad fraud.

Beware of secret sauces, black boxes, and magical artificial intelligence powered predictive self optimizing algorithms. If something looks too good to be true, then it probably is.

Never ask the barber if you need a Haircut…

The ultimate selfish goal of any Advertising Platform is to MAXIMIZE your ad spend. You are THEIR customer and they want YOUR money. They want you to allocate as much of your budget to them as possible. They are incentivized to fool you.

Therefore be very skeptical with the data they give you and the stories they tell you. I would explicitly AVOID using either Steelhouse or Criteo due to first hand bad experiences with both.

More Reading about this topic:

Attribution Digital Marketing Google Ads

YouTube Video Campaigns are Over-Reporting Conversions

YouTube Video Campaigns count Conversions very differently from other Campaign types

YouTube Video Campaigns count view-conversions as click-conversions, and include them in the “Conversions” columns of Google Ads.

If you are running a ROI focused YouTube Campaign that is targeting a lower funnel Remarketing Audience, the revenue and conversions reported by Google Ads can be over-inflated by 1000% or more vs what Google Analytics will report.

When running a YouTube Campaigns, always:

  1. Be suspicious and skeptical of the conversion data
  2. Adjust your performance targets. Conversions will be overinflated by a factor of up to 1000%, so adjust your performance accordingly.
  3. Use Google Analytics as your measure of YouTube Campaign performance
  4. Avoid Targeting lower funnel Remarketing Lists with YouTube. Save these lists for campaigns that offer true click-based conversion tracking.
  5. Explicitly exclude low funnel Remarketing Lists from your targeting. This will ensure the attribution poaching is limited.

YouTube Conversion Tracking Explained

Standard Campaign Behaviour

For most campaign types, a conversion is only recorded in the “Conversions” column when someone clicks on your ad and then proceeds to make a purchase. This is called a Click-Through Conversion. If there are no clicks on your ad, no conversion is recorded in the Conversions column.

This is the normal expected behaviour.

YouTube Campaign Behaviour

For YouTube campaigns, clicks behave normally: If someone clicks on your ad and then makes a purchase, that purchase is recorded as a conversion as expected. So far so good.

However, if someone DOES NOT CLICK on your ad, but watches your entire ad, and then later purchases, that purchase will be recorded as a conversion and attributed to YouTube.

As per Google:

A ‘view’ is counted when someone watches 30 seconds (or the whole ad if it’s shorter than 30 seconds) or clicks on a part of the ad. A ‘view’ that leads to a conversion is counted in the ‘Conversions’ column. 

Google Ads Help: Understand your conversion tracking data

Essentially, these are View-Through Conversions masquerading as Click-Through Conversions. The ad was never clicked, yet a conversion was recorded anyway. Considering that many ads are only 5 seconds long, most ad views are likely being treated as clicks.

This is NOT EXPECTED behaviour!

Attribution Poaching

Attribution Poaching is when one Channel tries to take credit for a sale that was either going to happen anyway, or for a sale that was actually caused by another Channel.

Consider this scenario

You create a YouTube campaign targeting your Shopping Cart Abandoners with a 5 second video ad.

One of your potential customers visits your site, and ads a product to their Shopping Cart. By adding to the Shopping Cart, they are now in your Shopping Cart Abandoners audience, and will be actively targeted by your YouTube Campaign.

They continue to browse your site, but they are interrupted by an e-mail or text from a friend with a link to a funny YouTube video. They click on the link and watch the video. While watching the video, they are forced to watch your 5s video ad (which they ignore). Since they watched y0ur entire ad, Google considers that a “click”.

They then eventually return to your site, to complete the purchase. Or maybe they complete the purchase 3 days later after receiving your Cart Abandonment e-mail.

In either case, your YouTube Campaign will claim credit for the Purchase, and will count it as a Conversion even thought that customer never clicked on your ad.

Why is Google Doing This?

A video view is much more like an impression than like a click, so why are these conversions being lumped in with click-through conversions?

The simple cynical answer is that Goolge makes more more money this way. By counting view-through conversions, the YouTube campaigns will appear to perform much better than they actually do with just click-through conversions (as much as 1000% better). If advertisers think that YouTube is performing 10X better, then they will allocated 10X more budget. The end result is Google makes 10X more money from YouTube.

A “Video View” is more like an Impressions than a Click

Video-View-Conversions should clearly be lumped into the View-Through Conversion column. If Google wants to explicitly report on Video-View-Conversions separately, then they should create another column type. Don’t lump them in with click-through conversions.

Unexpected Behaviour

The problem with all this is that suddenly the “Conversions” column behaves differently in one campaign type vs another. Suddenly the clean click-through conversion data is being polluted with View-Through conversion data. This makes YouTube campaigns appear to perform much better than they should. Which will lead you to incorrectly increase spend.

To make the matter worse…

  1. Many people have long click-through conversion windows. Often 30 days or even longer. This essentially allows a YouTube to claim credit for a conversion that happens 30 days after a video view.
  2. Many video ads are short – only 5s long. Most of these short ads are probably viewed in their entirety, meaning that they are all being counted as clicks. Often the user is forced to watch the entire 5s ad – again a click. This leads to more incorrectly attributed click-conversions.
  3. Often people target video ads using remarketing lists. Often the lowest hanging fruits for video campaigns are Remarketing Audiences. This shows ads to people who know your brand, who have recently visited your site, who may be subscribed to your newsletter, and who may in fact be currently actively shopping on your site. They are all likely to buy from you regardless of the the video ad, but the video ad will take credit for all their purchases.

This could also affect your Display and Discovery Campaigns

This issue could also affect your regular display campaigns and possibly your Discovery campaigns if they are serving ads on the YouTube network.

My recommendation for Display Campaigns is to try and exclude all YouTube placements: Go to: Campaign Settings > Additional Settings > Content Exclusions and select all of the following for exclusion:

  • Live streaming YouTube video
  • Embedded video
  • In-video


  • This should only be an issue if you use Google Ads Native Conversion tracking. If you import your conversions directly from Google Analytics, then this should not be an issue (as Analytics only attributes conversions to the last click)
  • If you are running  a pure brand awareness campaign, this is probably less of a concern for you.
  • If you are an Ad Agency getting paid as a % of ad spend, then YouTube campaigns can make you a lot of money.

More Reading

Analytics Digital Marketing Google Ads

Why doesn’t my Ad Spend Scale?

Consider this Scenario:

You spend $1,000 on a new Ad Campaign that generates $10,000 in revenue. “That’s a great ROI” you tell yourself, “Let’s double the spend!“.

When you double the budget to $2,000, your Campaign only generates $12,500 in total sales and not the $20,000 you were expecting. Why?

SpendSalesCost of SalesROAS
Ad Campaign #1$1,000$10,00010%1000%
Ad Campaign #2$2,000$12,50016%625%
Increasing spend by $1,000 only resulted in $2,500 in additional revenue: An incremental cost of sales of 40% and an incremental ROAS of 250%

Why doesn’t it scale?

By scale I mean that your ROI should be linear: If the first $1,000 generates $10,000 in sales, then the next $1,000 should also generate $10,000 in sales.

The issue is that rarely is your campaign performance evenly distributed. If your drill down deeper into your initial $1000 Campaign, you might see the spend broken down into something like this:

$1000 Campaign$1,000$10,00010%1000%
Majority of the sales are being generated by a small subset of the overall campaign. A classic 80/20 scenario. The performance of the Branded ad set is subsidizing the cost of the unbranded ad set.

The performance of the Branded subset is subsidizing the cost of the Unbranded subset. 80% of your sales are coming from only 20% of the spend, while 80% of your spend is going towards an underperforming segment.

When we try to double the budget to $2,000, here is how the budget gets allocated:

$2,000 Campaign$2,000$12,50016%625%
When budget is doubled, most of the spend goes towards the underperforming segment, resulting in disappointing incremental sales.

With this new data in mind, we should probably:

  1. Decrease budget on the Unbranded segment
  2. Increase budget on the Branded segment

However, it is probably the case that your performing segment is already receiving 100% reach/impressions. So spending more is usually not possible. (In particular for Google Search Ads targeting your branded term: How much you can spend is a function of how many people are searching for your brand. Once you reach everyone, spending more can’t get you more people).

If you want to increase your spend, the only place to do so is in the underperforming unbranded campaign. But at least you’ll have a better expectation of the results.


  • Avoid making budget decisions on aggregate data. Always try to segment and dig a little deeper.
  • Don’t let underperforming segments ride the coat tails of your top performers. Look for 80/20 campaign and ad group performance and analyze those individually.
  • For Google Search Ads, always separate your Branded search terms and Unbranded search terms into separate campaigns.
Analytics Shopify

Fix Product Performance Reports in Google Analytics with Shopify

By default, Shopify sends transactions to Google Analytics with a unique product title for each product variant. This causes the Product Performance Report to be split on the variant level instead of at the product level as it was intended.

This is how Shopify data shows up by default in the Product Performance Report. Notice that the various “Trillium Parka” variants are ungrouped because of the different size and color information in the product name. This makes it difficult to see “Revenue by Product” for all “Trillium Parkas”.

If, for example. you are selling winter boots, and someone buys a size 10 in Black, Shopify will send the product name as “Winter Boots – 10 / Black” instead of just “Winter Boots“. This is a bug as as the variant details are already included in the Google Analytics “Product Variant” column.

The Solution: GA Custom Data Import

The solution to this problem is to overwrite the Shopify data using the Google Analytics Custom Data Import tool.

1: Export your Product Data

First we need to export all our product data – we can accomplish this by creating a custom Collection Template that generates a CSV report instead of the standard HTML.

a. Create a new Collection Template

Call the new collection template csv-ga-product-feed and paste the following code:

{% layout none %}{% paginate collection.products by 1000 %}ga:productSku,ga:productName,ga:productVariant{% for product in collection.products %}{% for variant in product.variants %}
{{ variant.sku }},{{ product.title | replace: ',','' | remove: '"' | remove: "'" | strip_html | strip }},{{variant.title | replace: ',','' | remove: '"' | remove: "'" | strip_html | strip }}{% endfor %}{% endfor %}{% endpaginate %}

(also available on GitHub here)

b. Create a new Collection based on your csv-ga-product-feed Template

Select the products you want to include in this feed (probably all your products). These will be the products whose values will be overwritten in Google Analytics. Call your collection “Google Analytics Product Data Import” or something similar and save it.

c. Download your Product Feed

  • View your new collection in your store (eg:
  • View source in your browser and save as HTML
  • Rename the file with a CSV extension (eg: google-analytics-product-data-import.csv)

2: Setup and Import the data into Google Analytics

WARNING! You can really mess up your Google Analytics data if things go wrong. I highly recommend that you duplicate or backup your Google Analytics view and do a trial run before working with your live data. Once you upload this new data and overwrite there is no UNDO!

a. Setup the Data Feed

  • Go to Google Analytics > Admin > Account > Property > Data Import
  • Click the red “+ NEW DATA SET” button
  • Select “Product Data”
  • Give your Data Import a name: “Product Name Override”
  • Select the Google Analytics Views you want this import to affect
  • Setup your Data Set Schema: Product SKU is the mandatory key, but select Product and Product Variant as the additional fields.
  • Overwrite Hit Data: Choose Yes (but read my warning above)
  • Click Save and Done

b. Upload your data feed

  • Click on “manage uploads” beside your new Data Feed definition
  • Click the blue UPLOAD button
  • Choose your CSV file and click UPLOAD again
  • And now wait for the upload an update to be complete

3: Verify your new data

The data upload will only affect data from this date forward. So your old data will not be fixed. But your future data will be nice and clean… Until you add new products to your store, in which case you will have to repeat this process.

You will need to wait at least a day before you start seeing the new data coming in. If you add new product SKUs to your store, you will also need to regenerate and reupload a new file in order for the new product data to be fixed.

Attribution Digital Marketing Facebook Ads Google Ads

The Value of View Through Conversions

My personal experience with View Through Conversions (VTCs) is that they provide very little real-world lift in sales, and are more likely just poaching attribution from other channels. So I almost always give VTCs a value of zero and ignore them.

The truth probably lies somewhere in-between. For lower funnel remarketing campaigns VTCs probably provide close to zero value, while for truly brand-unaware audiences, the value is somewhere between 0 and 100%.

If you are one of those who wants to believe in the value of VTCs, you should calculate the true value of VTCs by running a placebo A/B test. Below is just such a test that we ran on the AdRoll network back in 2013:

Placebo A/B Tests to Measure View Through Conversions

Display Network A/B Test

How to Setup a Placebo A/B Test

You will likely need assistance from your ad platform or ad agency to properly run this sort of test. It is usually difficult to have a blank or psa ad approved.

  1. Create 2 separate (but equal) non-overlapping campaigns
  2. Campaign A will serve your “normal” ad
    Campaign B will serve a Public Service Announcement ad
  3. Run both campaigns for a few weeks
  4. Calculate VTC “lift” as follows:
Valid VTC Formula

Real Life Example

Campaign A
(Real Ad)
Campaign B
(PSA Ad)
Data from a real world A/B test performed in 2013 on the AdRoll network

VTC “Lift” = (329 – 261) / 329 = 20%

In this real life example, the irrelevant PSA Ads still managed to generate 80% of the View Through Conversion volume that the real ad generated. To be more clear, 261 people saw an ad to adopt a cat, and later went to to purchase a boating license.

So 80% of VTCs can be given a value of zero. Of the remaining 20%, more analysis is needed to figure out exactly how they influenced sales. The Real Ad did seem to generate more VTCs than the PSA ad, but the real question is if those VTCs resulted in extra incremental sales or were they simply tracking sales generated by another channel such as e-mail?

Real Life Example #2: Facebook

A few years later we ran a similar Placebo A/B test on Facebook with the help of SocialCode. Unfortunately I no longer have the data for this test, but the end results was that there was ZERO lift from VTCs, and the PSA ad actually outperformed the real ads from a VTC standpoint! (People seeing cats were buying more boating licenses than the people seeing ads for a boating license)

So how should you value View Through Conversions?

Here are my recommendations:

  • Give View Through Conversions a value of ZERO. Unless you can prove otherwise via an A/B test. This is especially true for re-marketing campaigns where the visitors have previously visited your site, and may be actively engaged in checkout when the ad is shown.
  • Run your own Placebo A/B test. If someone insists on using VTCs in performance metrics, then you should insist on running an A/B test to calculate the true value. You should run at least two tests: One for remarketing audiences and another for brand-unaware audiences.
  • Be cautious and skeptical of anyone pushing the value of VTCs especially if they are an ad agency or ad platform that will benefit from including the extra VTCs in their performance metrics.

When can View Through Conversions be valuable?

  • Brand Unaware Audiences on Trusted Networks: If you are marketing to a 100% brand-unaware audience, and a trustworthy network, then there might be a valid argument to give VTCs some credit.
  • To measure which sites your customers frequently visit: Looking at VTCs on a per-placement level, *should* theoretically be a good indication of which sites your customers spend time on. You can then consider having targeted prospecting campaigns focused explicitly on those sites.