Categories
Digital Marketing Google Ads

Google Ads Search Campaign Structure for DTC Brands

These are the 3 core Search Campaigns needed when setting up Google Ads for your DTC brand.

CampaignDescription
Branded SearchThis campaign will target your brand keywords.
Generic SearchThis campaign will target your top performing unbranded keywords
Keyword ProspectingThis will be a Dynamic Keyword campaign. The goal of this campaign is to find new profitable unbranded keywords.

Common Settings

These settings will stay the same across all of your Campaigns.

SettingValue
ObjectiveSales
Conversion GoalPurchases
Campaign TypeSearch
Campaign Goal MethodWebsite Visits
Networks: Choose NetworksInclude Search Partners
Exclude Google Display Network
LocationsSelect your primary location

Campaign:
Branded Search

This campaign targets your Branded search terms. It is mostly defensive in nature: It prevents your competitors from bidding on your brand term cost effectively. This campaign will generate the majority of your conversions, but you want to keep your cost-per-acquisition costs low, as most of the sales generated by this campaign are not incremental sales.

SettingValue
Campaign NameSearch: Brand
Bidding
What do you want to focus on?
Where do you want your ads to appear?
Percent (%) impression share to target?
Maximum CPC bid limit?

Impression Share
Top of Results Page
90%
$1.00
Daily Budget$20.00 / day
(adjust to your level of comfort)

Ad Groups

This campaign initially contains only two ad groups: One to target the exact match version of your brand name, and another to target the phrase match version.

Ad Group NameKeywordsNegatives
Brand – exactYour primary brand term, exact match

eg: [nike]
None
Brand – phraseYour primary brand term plus product names closely related to your brand, phrase match

eg: “nike”, “air jordan”
Exclude the exact match brand term, targeted in the “Brand – exact” ad group above.

eg: [nike]

Campaign:
Generic Search

This campaign will target high-performing non-branded search terms. It will initially be empty, but you will populate it as you discover high performing search terms.

SettingValue
Campaign NameSearch: Generic
Bidding
What do you want to focus on?
Set a target return on ad spend

Conversion Value
200%
(adjust to your profit margins
and comfort levels)
Daily Budget$10.00 / day
(adjust to your level of comfort)

Eventually this campaign will contain one ad group for each performing exact match search term, as well as a second ad group with the phrase match version of the performing term.

Ad Groups

Ad Group NameKeywordsNegatives
Term A – exactA high-performing generic term related to your brand, exact match

eg: [running shoes]
None
Term A – phraseA high-performing generic term related to your brand, phrase match

eg: “running shoes”
Exclude the exact match term targeted by the ad group above.

eg: [running shoes]
Term X – exactAs you discover new performing keywords, create a new exact match ad group for them.

eg: [basketball shoes]
None
Term X – phraseAlso create a phrase-match version of the ad group.

eg: “basketball shoes”
Exclude the exact match term targeted by the ad group above.

eg: [basketball shoes]

Keyword Exclusions

Your Generic Search Campaign may target your Branded search terms. Create a Negative Keyword List containing your branded terms, and add it to the campaign to ensure this does not happen.

Campaign:
Keyword Prospecting

The goal of the Keyword Prospecting Campaign is to find new high performing keywords.

When such a keyword is found it should be:

  1. Added to the Generic Search Campaign
  2. Excluded from this Keyword Prospecting Campaign
SettingValue
Campaign NameSearch: Dynamic Prospecting
Bidding
What do you want to focus on?
Set a target cost per action?

Conversions
No
Daily Budget$10.00 / day
(adjust to your level of comfort)

Ad Groups

This campaign will have a single dynamic ad group called “Catch-all”, targeting all pages on the site.

Ad Group NameAd TargetsNegatives
Catch-all
[dynamic]
All WebpagesExclude all keywords already targeted by your Generic Search Campaign.

eg:
[running shoes]
[basketball shoes]

Keyword Exclusions

This campaign will also target your Branded terms unless you explicitly exclude them. Create a Negative Keyword List containing your branded terms and add the list to the campaign.

Multi Country / Currency / Language

If you are targeting multiple countries, currencies, and languages, then you will generally want to replicate this campaign structure for each Currency x Language combination.

Categories
Digital Marketing Google Ads

Negative Keyword Lists

These are the Negative Keyword Lists that every Google Ads account should have:

List NameDescription
Brand TermsContains phrase match versions of your brand name (including misspellings) as well as names of your key products that are closely associated with your brand.

Added to most of your campaigns, to funnel all branded searches into your branded campaigns.

Example
“nike”
“air jordan”
Global Exclude: IrrelevantContains exact and/or phrase match versions of terms that are irrelevant to your product or brand.

This keyword list is added to all campaigns.

Example
“used”
“fake”
“dress shoes”
Global Exclude: Too BroadContains usually only exact match versions of very broad terms that very broadly describe your product. Although relevant, they are too high up the funnel for most brands, and very unlikely to convert. Excluding these should generally reduce your costs without affecting your revenue.

This keyword list is added to all campaigns.

Example
[shoes]
CompetitorsContains phrase match versions of your competitor’s brands. For many brands, it is relatively difficult to convert on your competitor’s branded search, and so if you want to bid on your competitor’s terms, it makes sense to have dedicated campaigns for this purpose.

Added to most of your campaigns, to funnel all competitor searches into your competitor campaigns.

Example
“adidas”
“puma”
“new balance”

Categories
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 %$
Optimistic
% COS CPC
(Conv. Value + (Conv. Value Ă· Conversions)) Ă· Clicks x %$

ROAS

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

NameROAS
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

NameCOS
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

% COS CPC

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.

Eg:

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

Categories
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.

STEP 0
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

STEP 1
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.

STEP 2
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:

STEP 3
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.

STEP 4
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: Shopify.checkout.email
  • Phone: Javascript: Shopify.checkout.phone
  • 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.city
    • Shopify.checkout.billing_address.province_code
    • Shopify.checkout.billing_address.country_code
    • Shopify.checkout.billing_address.zip

Click Save

Further Reading

Categories
Digital Marketing Google Ads

Essential Google Ads Remarketing Audiences

Below is a list of the Essential Google Audiences the every e-commerce site should create in their Google Ads Account. Even if you don’t plan on using them right away, creating them now will ensure that they can grow so they are ready to be used in the future.

Google’s Built-in Audiences

Before we create our own audiences, we first need to install the Google Ads Dynamic Remarketing Code. This triggers Google to automatically create some built-in Remarketing Audiences:

Audience NameDurationDescription
Shopping cart abandoners30 daysPeople who added products to the shopping cart in the past 30 days but did not complete the purchase
Product Viewers30 daysPeople who viewed specific product pages on your site in the past 30 days but did not create a shopping cart
Past buyer30 daysPeople who purchased products from you in the past 30 days
All visitors30 daysPeople who visited pages that contain your remarketing tags in the past 30 days
All converters180 daysPeople who converted on your site in the last 180 days. Based on your conversion tracking tag. This is not necessarily people who have purchased from you, but anyone who has triggered a “conversion”. (eg: Phone call from an ad)
General Visitors30 daysPeople who visited your website in the past 30 days but did not view any specific products

Additional Audiences

The additional audiences to create follow the same pattern used in Google’s built-in audiences, but with expanded membership durations. The main focus is on Shopping Cart Abandoners, Product Viewers, and Past Buyers.

Shopping Cart Abandoners

Google will have already created a “Shopping cart abandoners” audience with 30 day time window. We will create the following additional audiences for 7, 14, 90, and 180 day durations:

  • Shopping cart abandoners: 7d
  • Shopping cart abandoners: 14d
  • Shopping cart abandoners: 90d
  • Shopping cart abandoners: 180d
Audience Name:Shopping cart abandoners: xd
“x” will be the duration.
Eg: Shopping cart abandoners: 7d
List Members:Visitors of a page who did not visit another page
Visited page:URL contains cart
Unvisited pageURL contains thank_you
Membership Duration:7, 14, 90, 180 days
* 30 day duration is already created by Google

Past Buyers

Google will have already created a “Past buyers” audience with 30 day time window. We will create these additional audiences for 14, 90, 180, 365, and 520 day durations:

  • Past buyers: 14d
  • Past buyers: 90d
  • Past buyers: 180d
  • Past buyers: 365d
  • Past buyers: 520d
Audience NamePast buyers xd
“x” will be the duration.
Eg: Past buyers: 14d
List MembersVisitors of a page with specific tags
TagsPurchase
Membership duration14, 90, 180, 365, 520 days
* 30 day duration is already created by Google

Product Viewers

Google will have already created a “Product viewers” audience with a 30 day duration. We will create additional audiences with 14, 90, 180, 365, and 520 day durations.

  • Product viewers: 14d
  • Product viewers: 90d
  • Product viewers: 180d
  • Product viewers: 365d
  • Product viewers: 520d
Audience Name:Product viewers: xd
“x” will be the duration.
Eg: Product Viewers: 14d
List Members:Visitors of a page who did not visit another page
Visited page:URL contains product
Unvisited pageURL contains cart
Membership Duration:14, 90, 180, 365, 520 days
* 30 day duration is already created by Google

General Notes

  • The Membership Durations are somewhat arbitrary. You can get more or less granular, and set your own intervals. It is however best to start with something simple and add granularity later on.
  • A Remarketing Audience needs a minimum of 1,000 members to be eligible to serve. When creating your audience durations, consider how much time it will take to reach 1,000 memebers. eg: How long will it take before your site generates 1,000 abandoned carts, or 1,000 purchases? That will probably be the shortest duration with which you should start.
  • You should generally add all these lists as “Observations” to all your campaigns.

More Reading…

Categories
Digital Marketing Google Ads Shopify

Google Ads Dynamic Remarketing for Shopify

Last Updated: September 25, 2020

STEP 1
Activate Dynamic Remarketing in Google

  1. Go to Google Ads > Tools & Settings > Shared Library > Audience Manager > Audience Sources
  2. Click Set up tag in the “Google Ads tag” card
  3. Remarketing: Choose “Collect data on specific actions…
  4. Business Type: Choose “Retail
  5. Retail Parameters: Select All Parameters
  6. Click Save and continue.
  7. Click on Install Tag Yourself
  8. In the first code box, look for the number at the end of the first line of code and write it down or copy it. This is your Google Conversion Id — you will need it in the next step.
<!-- Global site tag (gtag.js) - Google Ads: 123456789 -->
  1. Click Continue and then Done

STEP 2
Install the Remarketing Code in Theme.liquid

In your store’s admin section go to:

  • Online Store > Themes > Actions > Edit Code
  • Expand the Snippets section and choose Add new snippet
  • Call the snippet “adwords-remarketing
  • Paste the code below into the snippet
  • Enter your google_conversion_id that you obtained in Step 1.8 above.
{% comment %}
Google Ads Dynamic Remarketing Script by Alex Czartoryski
https://business.czarto.com/2017/02/07/shopify-dynamic-remarketing-setup/

This version: Sept 30, 2020
The latest version of this script available here:
https://github.com/Czarto/ShopifyScripts/blob/master/snippets/adwords-remarketing.liquid
{% endcomment %}

{% comment %}Set to false if GTAG is already loaded on the page. Leave to true if unsure.{%endcomment%}
{% assign load_gtag = true %}

{% comment %} Enter your google conversion id below {% endcomment %}
{% assign google_conversion_id = 123456789 %}

{% assign shopify_store_country  = 'US' %}
{% if shop.currency == 'CAD' %}
{% assign shopify_store_country  = 'CA' %}
{% elsif shop.currency == 'AUD' %}
{% assign shopify_store_country  = 'AU' %}
{% endif %}

{%if load_gtag %}
<!-- Global site tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-{{ google_conversion_id }}"></script>
{% endif %}
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'AW-{{ google_conversion_id }}');
</script>

{% assign google_event = false %}
{% assign google_items = false %}
{% assign google_value = false %}
{% if template contains 'cart' %}
	{% assign google_event = 'add_to_cart' %}
	{% capture google_items %}{% for item in cart.items %}{'id':'shopify_{{ shopify_store_country  }}_{{ item.product.id }}_{{ item.variant.id }}','google_business_vertical': 'retail'}{% unless forloop.last %}, {% endunless %}{% endfor %}{% endcapture %}
	{% assign google_value = cart.total_price %}
{% elsif template contains 'collection' %}
	{% assign google_event = 'view_item_list' %}
	{% capture google_items %}{% for item in collection.products limit:5 %}{'id':'shopify_{{ shopify_store_country  }}_{{ item.id }}_{{ item.variants.first.id }}','google_business_vertical': 'retail'}{% unless forloop.last %}, {% endunless %}{% endfor %}{% endcapture %}
{% elsif template contains 'product' %}
	{% assign google_event = 'view_item' %}
	{% capture google_items %}{'id':'shopify_{{ shopify_store_country  }}_{{ product.id }}_{{ product.selected_or_first_available_variant.id }}','google_business_vertical': 'retail'}{% endcapture %}
	{% assign google_value = product.selected_or_first_available_variant.price %}
{% elsif template contains 'search' %}
	{% assign google_event = 'view_search_results' %}
	{% capture google_items %}{% for item in search.results limit:5 %}{'id':'shopify_{{ shopify_store_country  }}_{{ item.id }}_{{ item.variants.first.id }}','google_business_vertical': 'retail'}{% unless forloop.last %}, {% endunless %}{% endfor %}{% endcapture %}
{% endif %}

{% if google_event %}
<script>
	gtag('event', '{{ google_event }}', {
	  'send_to': 'AW-{{ google_conversion_id }}',
	  {% if google_value %}'value': '{{ google_value | divided_by: 100.0 }}',{% endif %}
	  'items': [{{ google_items }}]
	});
</script>
{% endif %}

The latest version of this code is available on Github

Add snippet to your Theme file

Open up Layout > theme.liquid and add the following line of code before the closing </head> tag:

{% include 'adwords-remarketing' %}

STEP 3
Install Remarketing in the Checkout Scripts

  • In the very bottom left hand corner the Shopify Admin choose Settings and then Checkout
  • Scroll down to the Additional Scripts section.
  • Copy and paste the code below into the “Additional Scripts” field and update google_conversion_id with your value from step 1.8 as before.
{% comment %}
Google Ads Dynamic Remarkting Script by Alex Czartoryski https://business.czarto.com/

This version: Sep 30, 2020
The latest version of this script available here:
https://github.com/Czarto/ShopifyScripts/blob/master/settings/checkout/adwords-remarketing.liquid
{% endcomment %}

{% comment %}Set to false if GTAG is already loaded on the page. Leave to true if unsure.{%endcomment%}
{% assign load_gtag = true %}

{% if first_time_accessed %}
{% comment %} Enter your account specific values below {% endcomment %}
{% assign google_conversion_id = "123456789" %}

{% assign shopify_store_country  = 'US' %}
{% if shop.currency == 'CAD' %}
{% assign shopify_store_country  = 'CA' %}
{% elsif shop.currency == 'AUD' %}
{% assign shopify_store_country  = 'AU' %}
{% endif %}


{%if load_gtag %}
<!-- Global site tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-{{ google_conversion_id }}"></script>
{% endif %}
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'AW-{{ google_conversion_id }}');
</script>

<!-- Event snippet for Web Order conversion page -->
<script>
    // Google Ads Remarketing
    gtag('event', 'purchase', {
	  'send_to': 'AW-{{ google_conversion_id }}',
	  'value': '{{ total_price | divided_by: 100.0 }}',
	  'items': [{% for item in order.line_items %}{'id':'shopify_{{ shopify_store_country }}_{{ item.product.id }}_{{ item.variant.id }}','google_business_vertical': 'retail'}{% unless forloop.last %}, {% endunless %}{% endfor %}]
	});
</script>

{% endif %}

Download the lastest version from Github

STEP 4
Verification

Once you’ve installed all your code, it’s time to run through your main pages (collection, product, cart, and purchase pages) with Google Tag Assistant installed to make sure there are no errors.

Next Steps
Configure your Remarketing Audiences

Now that your store is collecting dynamic remarketing data, the next step is to properly organize and segment your visitors into Purchasers, Cart Abandoners and Product Viewers. This is covered in the next post about Google Ads Remarketing Audiences.

Additional Reading…

Categories
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:

SpendSales%COSROAS
Branded$200$8,0002.5%4000%
Unbranded$800$2,00040%250%
$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:

SpendSalesCOSROAS
Branded$200$8,0002.5%4000%
Unbranded$1,800$4,50040%250%
$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.

Summary

  • 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.