Categories
Digital Marketing Facebook Ads

Simple Facebook Campaign Structure for DTC Brands

Evergreen Campaigns

An Evergreen Campaign Structure is one that does not change much year over year: Ideally the Campaigns and Ad Sets are continually in use, and only the ad creative is changed.

Evergreen Campaigns add some sanity to your Facebook Ad management. They prevent the typical disorganized Campaign sprawl that plagues most Facebook Ad Accounts. Evergreen Campaigns encourage continuous improvement and optimization, facilitates data analysis, and lowers maintenance costs.

It usually takes a few iterations before you land on your ideal evergreen structure, but here are some recommendations to get you started on the right foot.

Campaign Structure Overview

The campaign structure will look like this

Dynamic Product AdsDynamic Product Ads, targeting people who have previously purchased and interacted with your site
Past PurchasersPeople who have previously purchased from you.
RemarketingPeople who have interacted with your brand but have yet not purchased from you.
ProspectingPeople who have never purchased from you, and who have not interacted with your brand.

Audiences

Before you can create your campaigns, you will need to define some base audiences to capture purchasers and website visitors. A list of essential Facebook audiences that should be created is available here.

Building the Campaigns

Common Settings

All the campaigns you create will have the following settings

Buying TypeAuction
ObjectiveSales
CatalogYes for Dynamic
No for Regular
Advanced Campaign BudgetYes
Campaign Bid StrategyBid Cap

Conversion Events & Attribution

Initially select “Purchase” as your converion event, with a 1-day or 7 day click only converison window.

If, however, you are unable to obtain at least 50 purchase events per week for an ad set, you will want to instead choose “Add to cart” as your conversion event, with a 1-day click only conversion window.

Campaign #1:
Dynamic Product Ads

This campaign will contain all your Dynamic Product ads and ad sets. This is the most automated campaign type, with generally very little management required.

You will need to have your Product Catalog and Product Feeds setup before you can create this campaign.

Campaign NameDynamic Product Ads
Buying TypeAuction
ObjectiveSales
CatalogYes
Advanced Campaign BudgetYes
Campaign Bid StrategyBid Cap

Ad Sets

1. Dynamic Remarketing < 30d
Ad Set NameDynamic Remarketing < 30d
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting1-day click
Product SetAll in-stock products
AudienceCreate new Audience
Retarget Ads:
Viewed or Added to Cart
but not Purchased: 30d
Audience ExclusionsNone
2. Dynamic Remarketing 30d-180d
Ad Set NameDynamic Remarketing 30d-180d
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting7-day click
Product SetAll in-stock products
AudienceCreate new Audience
Retarget Ads:
Viewed or Added to Cart
but not Purchased: 180d
Audience Exclusions– Purchase All Time
– AddToCart 30d
– Website Visitors 30d
3. Dynamic Past Purchasers > 30d
Ad Set NameDynamic Past Purchasers > 30d
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting7-day click
Product SetAll in-stock products
AudienceCreate new Audience
Find Prospective Customers
– Purchase 180d
– Purchase All Time
Audience Exclusions– Purchase 30d
– AddToCart 30d
– Website Visitors 30d
4. Dynamic Prospecting
Ad Set NameDynamic Prospecting
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting7-day click
Product SetAll in-stock products
AudienceCreate new Audience
Find Prospective Customers
(no explicit targeting)
Audience Exclusions– Purchase All Time
– Purchase 180d
– AddToCart 180d
– Website Visitors 30d
– Website Visitors Top 25% 180d

For high-volume sites, or for periods of high sales such as Black Friday, you can also consider creating additional more granular ad sets, with shorter time windows, or explicitly targeting cart abandoners.

For lower-volume sites, you may need to change your conversion event to “AddToCart” instead of “Purchase” if you have less than 50 purchases per week.

Campaign #2:
Past Purchasers

This campaign targets people who have previously purchased from you.

Campaign NamePast Purchasers
Buying TypeAuction
ObjectiveSales
CatalogNo
Advanced Campaign BudgetYes
Campaign Bid StrategyBid Cap

Ad Sets

At it’s most basic, the campaign contains a single Ad Set containing all your past customers:

1. Past Purchasers All Time
Ad Set NamePast Purchasers All Time
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting7-day click
Audience– Purchase All Time
– Purchase 180d
Audience Exclusions– AddToCart 30d
– Purchase 30d
– Website Visitors Top 25% 30d

For high volume businesses that have large amount of customers, multiple Ad Sets could be created to have more granular control based on past purchase date.

Campaign #3:
Remarketing

This campaign targets website visitors and people who have previously engaged with your brand on facebook, instagram, or otherwise, but who have never purchased from your business.

Campaign NameRemarketing
Buying TypeAuction
ObjectiveSales
CatalogNo
Advanced Campaign BudgetYes
Campaign Bid StrategyBid Cap

Ad Sets

Ad it’s most basic, the Remarketing Campaign contains only two Ad Sets: One targeting site visitors up to 30 days ago, and another targeting site visitors up to 180 days ago (the Facebook maximum)

1. Remarketing < 30d
Ad Set NameRemarketing < 30d
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting1-day click
Audience– Visitors 30d
– FB Engagement 30d
– IG Engagement 30d
Audience Exclusions– Purchase All Time
– Purchase 180d
2. Remarketing 30d-180d
Ad Set NameRemarketing 30d-180d
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting7-day click
Audience– Site Visitors 180d
– FB Engagement 180d
– IG Engagement 180d
Audience Exclusions– Purchase All Time
– Purchase 180d
– Visitors 30d
– FB Engagement 30d
– IG Engagement 30d

For higher volume sites, you can consider adding more granular Ad Sets for 10, 60, 90 day etc… Or separating ad sets into stronger/weaker pruchase intent such as Add to Carts, Product Views, Social Engagement, etc…

Campaign #4:
Prospecting

This campaign will target “brand unaware” customers. People that have never purchased from you, and that have not interacted with your brand or site in at least 180 days.

This campaign will feed your Remarketing campaigns. You can expect your Cost per Acquisition (CPA) to be relatively high, but the more you can manage to spend here, the more you will be able to spend on Remarketing.

Campaign NameRemarketing
Buying TypeAuction
ObjectiveSales
CatalogNo
Advanced Campaign BudgetYes
Campaign Bid StrategyBid Cap

Ad Sets

At it’s most basic, the prospecting Campaign should target a 1% look-a-like audience (based on the Purchase pixel event).

More advanced campaigns can also target 2%-10% look-a-like audiences, or custom interest based audiences. But it is important to always exclude your Past Purchasers and lower funnel Remarketing audiences so that there is no overlap with your campaigns.

1. Prospecting 1% Look-a-Like
Ad Set NameProspecting 1% Look-a-Like
Performance GoalMaximize number of conversions
Conversion EventPurchase
Bid ControlTBD
Attribution Setting7-day click
Audience– 1% Look-a-like Purchase
Audience Exclusions– Purchase All Time
– Purchase 180d
– Visitors 30d
– Visitors Top 25% 180d

More to Explore

In a follow-up post I will give some guidelines into how to:

  • Calculate your Bid Caps
  • When (and how) to change your Conversion Event from Purchase to Add to Cart.
  • Building your first ads and replicating your organic posts into this campaign structure.

Related Reading

Categories
Digital Marketing Facebook Ads

Essential Facebook Audiences

Below is a list of the Essential Facebook Audiences that every e-commerce DTC brand should create. Even if you don’t plan on using them right away, creating them now will ensure that you can serve ads to these users in the future.

Past Purchaser Audiences

These target users that have previously purchased from you. Larger e-commerce sites may wish to get more granular on the time-spans, but the 4 audiences cover most scenarios.

Audience NameSourcePixel Criteria
Purchase: 7 dayWebsitePurchase: 7 days
Purchase: 30 dayWebsitePurchase: 30 days
Purchase: 180 dayWebsitePurchase: 180 days
Purchase: All TimeCustomer ListCustomer list upload*
* The “Purchase: All Time” audience will need to be updated at least every 180 days.

Remarketing Audiences

These will target website visitors, cart abandoners, and people who have engaged with your content on Facebook and Instagram. These are all people that are “brand aware” and are the lowest hanging fruit for generating sales.

Larger e-commerce sites may want to get more granular on the time-scales.

Audience NameSourcePixel Criteria
Add to Cart: 4 dayWebsiteAddToCart: 4 days
Add to Cart: 30 dayWebsiteAddToCart: 30 days
Add to Cart: 180 dayWebsiteAddToCart: 180 days
Site Visitors: Top 25%: 7 dayWebsiteVisitors by Time spent:
Top 25%: 7 days
Site Visitors: Top 25%: 30 dayWebsiteVisitors by Time spent:
Top 25%: 30 days
Site Visitors: Top 25%: 180 dayWebsiteVisitors by Time spent:
Top 25%: 180 days
FB Engagement: 7 dayFacebookEveryone who engaged
with your page: 7d
FB Engagement: 30 dayFacebookEveryone who engaged
with your page: 30d
FB Engagement: 180 dayFacebookEveryone who engaged
with your page: 180d
IG Engagement: 7 dayInstagramEveryone who engaged
with your business: 7d
IG Engagement: 30 dayInstagramEveryone who engaged
with your business: 30d
IG Engagement: 180 dayInstagramEveryone who engaged
with your business: 180d

Prospecting Audiences

Lookalike audiences are a good start for new customer prospecting.

Lookalike SourceEventNumber of
Audiences
Audience Markers
Facebook Pixel
or
Purchase: All Time
Purchase40%, 1%, 2%, 5%, 10%
Choose 4 audiences, and set markers at 0%, 1%, 2%, 5%, and 10%

Related Posts

Categories
Digital Marketing Google Ads

Google Ads Remarketing Campaign Structure

Remarketing Theory

  1. The deeper a user is in your sales funnel, the more likely he is to buy. A shopping cart abandoner is more likely to buy than a product browser who is more likely to buy than someone who briefly visited your homepage.
  2. The more recent the user’s visit, the more likely he is to buy. A user who visited your site yesterday is more likely to buy than a user who visited your site 10 days ago.
  3. The more likely a user is to buy, the more you want to bid on that user.

Audiences

Please read the post Essential Google Ads Remarketing Audiences and follow the instructions to create your remarketing audiences.

Campaign Setup

Create one campaign per major market you are targeting, and give them a descriptive name:

  • USA: Display Remarketing
  • Canada: Display Remarketing

Generally, but not always, you will want a separate campaign for every unique currency and language you are targeting.

Core Ad Groups

1. Cart Abandoners

This ad group will target cart abandoners: Visitors who added a product to their cart but never purchased. Dynamic Product ads perform particularly well with cart abandonment, as your visitors are shown the exact products that they added to their cart.

Audiences:

  • Cart Abandoners – 7 day
  • Cart Abandoners – 14 day
  • Cart Abandoners – 30 day
  • Cart Abandoners – 90 day
  • Cart Abandoners – 180 day

2. Product Viewers

This ad group will target users who visited a product details page but who never added a product to their cart.

Audiences:

  • Product Viewers – 14 day
  • Product Viewers – 30 day
  • Product Viewers – 90 day
  • Product Viewers – 180 day
  • Product Viewers – 365 day
  • Product Viewers – 520 day

3. Past Buyers

This ad group will show ads to people who have previously purchased. This is a good place to push micro conversions such as joining a loyalty program, joining a community, new product launches or related product up-selling.

Audiences

  • Past Buyers 14 days
  • Past Buyers 30 days
  • Past Buyers 90 days
  • Past Buyers 365 days
  • Past Buyers 520 days

Other Tips

Exclude Mobile App Placements

Exclude placements where users are unlikely to interact with your ad, or where they may accidentally click your ad, such as in mobile apps and games.

To exclude mobile apps, go to your ad group and then select:

  • Placements > Exclusions tab > Exclude placements
  • App Categories > Expand All App Categories, and exclude all app categories individually
  • Repeat for all your display ad groups

Exclude YouTube Placements

YouTube tracks View Through Conversions as if they were Click Through Conversions. This leads to attribution poaching, and makes your display campaigns appear to perform much better than they actually do. This ultimately causes you to increase bids and budgets, and overspend.

To exclude 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

Exclude GMail Placements

Gmail “clicks” don’t necessarily result in a visit to your site, and usually only represent the expansion of your ad. This can lead to attribution poaching, in particular if you have a newsletter that you send our regularly.

To exclude gmail placements, go to Placements > Exclusions and exclude mail.google.com

A word about View Through Conversions

View Through Conversions are conversions where a display ad appeared on the screen, was NOT clicked, but the user ended up purchasing on your site sometime later. In general I recommend that everyone IGNORE View Through Conversions, in particular in remarketing campaigns.

What usually happens, is that an ad is displayed on screen, the visitor may not even see it, but clicks instead on a cart-abandonment e-mail and makes the purchase. AdWords will credit that conversion to the view through.

The one exception is for “brand unaware” customers. These are customers that have never visited your website before. If such a customer sees you ad, and purchases, then the odds are better that it was a result of your ad.

In an ideal world, there would be a simple way to test the value of your view-through-conversions, as they are different for every segment, and every business.

Other Resources

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

ga-productperformance-productname
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: store.myshopify.com/collections/google-analytics-product-data-import)
  • 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.

Categories
Shopify

Shopify Cancelled Orders and Google Analytics

DEPRECATED: This code is no longer supported. Although it probably still works, please use at your own risk!

By default, when you cancel an order in Shopify, that transaction remains as positive revenue in your Google Analytics.

To “cancel” the transaction in Google Analytics you have to send a negated version of the transaction. To do this in Shopify you have to create a Webhook on Order Cancelled that hits a script (located on the same root domain as your store) that will call server side Google Analytics e-commerce code to negate the transaction.

Webhook Endpoint Dependencies

Details

Place the following code into a file that will act as your Order Cancelled Webhook endpoint (ie: www2.mydomain.com/webhooks/order-cancelled.php).

Make sure you:

  • Update the script to use your GA Account Id and Root Domain.
  • Change the path of autoload.php to point at your php-ga library
<?php
use UnitedPrototype\GoogleAnalytics;
require_once '../includes/autoload.php'; // Update to point at your php-ga install

$GA_AccountId = 'UA-********-1'; // Update with your GA account
$GA_domain = 'mystore.ca'; // Update with your root domain
$webhookContent = '';
// Read the webhook content
$webhook = fopen('php://input' , 'rb');
while (!feof($webhook)) {
  $webhookContent .= fread($webhook, 4096);
}
fclose($webhook);

if (!empty($webhookContent)) {
  // Convert the webhook content into an array
  $shopifyOrder = json_decode($webhookContent, true);

  // START GOOGLE ANALYTICS
  $tracker = new GoogleAnalytics\Tracker($GA_AccountId, $GA_domain);

  $visitor = new GoogleAnalytics\Visitor();
  $visitor->setIpAddress($_SERVER['REMOTE_ADDR']);
  $visitor->setUserAgent($_SERVER['HTTP_USER_AGENT']);
  $visitor->setScreenResolution('1024x768');

  $session = new GoogleAnalytics\Session();

  $page = new GoogleAnalytics\Page($_SERVER['REQUEST_URI']);
  $page->setTitle('Order Cancelled');

  $tracker->trackPageview($page, $session, $visitor);

  $transaction = new GoogleAnalytics\Transaction();
  $transaction->setOrderId($shopifyOrder['name']);
  $transaction->setAffiliation('');
  $transaction->setTotal(-$shopifyOrder['total_price']);
  $transaction->setTax(-$shopifyOrder['total_tax']);
  $transaction->setShipping(-$shopifyOrder['shipping_lines'][0]['price']);
  $transaction->setCity($shopifyOrder['billing_address']['city']);
  $transaction->setRegion($shopifyOrder['billing_address']['province']);
  $transaction->setCountry($shopifyOrder['billing_address']['country']);

  foreach ( $shopifyOrder['line_items'] as $product ) {
    $item = new GoogleAnalytics\Item();
    $item->setOrderId($shopifyOrder['name']);
    $item->setSku($product['sku']);
    $item->setName($product['title']);
    $item->setVariation('');
    $item->setPrice($product['price']);
    $item->setQuantity(-$product['quantity']);
    $item->validate();
    $transaction->addItem($item);
  }
  $transaction->validate(); 

  $tracker->trackTransaction($transaction, $session, $visitor);
  // END GOOGLE ANALYTICS
}
?>

Setup the Webhook in Shopify

In your Admin dashboard go to:

  • Settings > Notifications > Webhooks (at the bottom)
  • Create a Webhook
  • Event: Order Cancellation // Format: JSON // URL: The full url of your php file

Test

  • Google Analytics: Got to the Real Time > Content report
  • Shopify: Click “Send test notification” link beside your webhook.
  • Google Analytics: You should see a page request popup with your script name
  • Google Analytics: Wait a few hours and then (for transactions to register) and then go to Conversions > Ecommerce > Product Performance and you should see a sledge-hammer and wire-cutter products (the Shopify sample data) along with negative quantities and value.

Related Resources