After many conversations about Facebook Ads for B2B Saas and how they are a severely under tapped channel for Demand Generation, I wanted to write something down on how I approach Facebook Ads.
Create the right infrastructure for Tracking & Reporting
Which means ‘back-end’ services.
First of all, insert the Facebook’s base pixel code in the entire website and landing pages. If you use WordPress/Hubspot — use a WordPress plugin (Insert Headers & Footers) or if you are PHP friendly, edit the theme file. For Hubspot, go into the content settings and paste it into the Header section. This applies it across all your Hubspot pages.
Make sure it works with the Chrome extension or check pixel data in Business Manager to check if its receiving events.
Conversion events is how Facebooks algorithm learns to optimize Ad delivery for your results. Lets dig into these a little:
There’s two event types Facebook offers:
On top of the base pixel code, you can drop in extra bit of code to fire specific conversion events. In enterprise Saas, use the lead event on the thank you page for gated content to fire a lead event.
You can also pass currency and value with each event, letting Facebook know what each conversion is worth to your business.
In a marketing automation tool like Hubspot, setup two templates for your landing pages. One is the landing page with the form. The other one is the thank you page. To simplify the process when you scale your landing pages, include the lead event code in the template for the thank you page. Doing so will ensure you always have your lead event in the right page as anyone creates 100’s of new ones.
Custom Conversions are like Goals in Google Analytics — they can get unwieldy & limited to 20 per account. Where possible stick to the Facebook Event code, unless you can’t insert the code or you want to keep track of high value conversions separately.
Custom Conversions look for destination URL’s. For example, the thank you page has a url of www.example.com/ebook/xyz/thank-you, the custom conversion can be created to record a conversion when the URL matches exactly the one above.
Avoid 100’s of custom conversions for each unique offer by creating a URL structure. Doing so is healthy for SEO and simplifies the custom conversions:
if URL contains = thank-you’ record a custom conversion — Converted on Form.
Below is an example of Facebook Event (Leads) and Demo Request (custom conversion) in Ads reporting.
For more on Facebook Pixel & Events, here’s a good essay I came across recently.
UTM parameters are powerful to trace back the user journey if used consistently. Keep UTM parameter definitions clean. Create the 3 standard UTM fields in your marketing automation contact properties like Marketo/Hubspot.
Hubspot does have an Ads-Add-On but we’ll get to that a little later.
1. utm_source: this is the channel (in demand gen speak) so facebook/twitter etc.
2. utm_medium: broader bucket such as cpc (cost per click) or paidsocial
3. utm_campaign: Ideally should be tied to the campaign in your MA/CRM so you can look at the campaign view and have the channel breakdown under it.
Your capture forms on your landing pages hosted by your marketing automation or on your site should have these fields added as a hidden field so you can attribute it back to the campaign.
A word of caution, UTM’s get overwritten so if someone first came through a Twitter ad campaign, filled a content form and then requested a demo via Facebook Ads, your UTM’s will show the Facebook value since its the most recent conversion.
Creating Ads: Boosted Posts, Facebook Ads & URL Parameters
You can create Facebook Ads in two ways:
- Boosted Page Posts: these are page posts that are visible to anyone who comes to your Facebook page. You can boost individual posts to saved audiences and track conversions and other metrics through the ads dashboard. You cannot create a campaign, adgroup, ad structure or try different ad formats or placements like Canvas, Lead or Right Hand Side (RHS) with boosted posts.
- Facebook Ad: So called Dark Posts are only visible to the audience you chose through your targeting. It is not publicly accessible through your Facebook Page. With Ads, you can create campaign and ad group structures, all formats, variant testing and placement control.
URL Parameters is where you can enter your UTM or other URL variables to track ad level data. These can be the same as source/medium/campaign.The parameters will only be attached if there is a click directly on the link in the ad. Organic link or social share clicks will not have the parameters attached. This is used to determine web conversions and campaign metrics in tools like Google Analytics directly from the links in the ads.
Direct Conversion Reporting
Most Salesforce/Marketing Automation instances reports on Lead Source & Sub Lead Source values. You can easily map your UTM’s to your Lead/Sub lead source values with some workflows built. An example if below.
An example that you can modify to suit your own business process & taxonomy.
In Salesforce or Marketo/Hubspot you can create Dashboards based on Lead Source with Sub lead source drill downs to find your best performing campaigns. Or export all your data into excel and plot them using pivot tables.
Note: If you report purely on UTM parameters or Lead Source/Sub Lead Source, you are only reporting on last touch and missing assisting channels which might actually be driving a lot of conversions.
Reporting & Attribution
Facebook Ads Dashboard:
The simplest way to report on Facebook Ads perfomance is using the Ads Dashboard. You can either use the default colums or create a view with custom conversions and report on an Campaign | Ad Set | Ad level.
Facebook also recently introduced Creative Reporting to give you a view on how your Ad Creative is performing. To find the Creative Reporting – go to Ad Account Overview:
Facebook Ads Attribution Windows
TLDR: The Facebook attribution shows an action (lead/conversion) within a time window of when that action happened. So if someone clicked on your ad and downloaded an ebook 5 days later via direct traffic, Facebook will take credit for that lead because it happened within a 7 day (or 28 day) window.
You can compare and customize these ‘windows’ in your account and reporting.
Salesforce Campaigns Reports :
You can take this a step further and enroll contacts in Salesforce campaigns for a more holistic reporting view including Campaign Influence reports. To enroll contacts in Salesforce Campaigns, you can listen for contacts created with the associated UTM paramters attached to your campaign.
In Marketo – you can create a a Program that is triggered when a contact is created and checks for the UTM paramters. If the parameters exist, enroll the contact into an associated Salesforce camapaign.
In Hubspot – create a smart list that feeds into workflow that adds contacts with Facebook Ads UTMs into a Salesforce camapaign.
Within Salesforce you can run Campaign Influence reports to see how Facebook Ads work with other campaigns to drive revenue.
Export all your contacts with Facebook UTMs or Original Source as Paid Social (Hubspot) into a Excel file. You can create a pivot table to report on different fields such as:
- Associated Deals – to track how many deals have contacts that were created by Facebook Campaigns
- Closed Date – Associate Facebook Ad Spend with # of deals closed within that time period
- Lifecycle Stage – Quality check in terms of contacts that are hitting SQL/SAL stages.
- Revenue closed – Directly attributed to contacts created from Facebook Ads
- Revenue Influenced – pipeline revenue with contacts from Facebook Ads
Lead Source Reports:
When a lead/contact gets created from a Facebook Ad (using UTM tracking or Hubspots Ad – Addon) create a workflow to assign the lead source and sub lead source value as Facebook Ads or Paidsocial (depending on your naming convention). You can create basic reports in Salesforce based on Lead Source tracking using those values.
Facebook Ads Attribution in Google Analytics.
Most companies measure everything on a first touch model which is always giving the most credit to the last interaction they had before converting. The last touch model is misleading because it gives 100% of the credit to the last channel, ignoring everything else that happened before.
You can capture some of the marketing path data from Google Analytics without having a full attribution solution like Bizible or Brightfunnel or FullCircle by using UTM & Channel Groupings in GA.
- Set up your Goals and values. Google analytics can track to a form submission. Set up all your important forms as Goals within Google Analytics. Use the Thank You URL to setup up Custom Destination Goals.
- Because Hubspot and other MA systems append other information to the actual thank you page URL after form Submission, the page URL in practice will most likely look like this — https://email@example.com. Use the Begins With or regex conditions. Don’t use Equals To exact URL because on submission, the URL is appended with other parameters. If your goals scale up too fast start using Regex. Always click verify this goal to see if your setup is correct based on data from the past 30 days.
- Have clean UTM parameters in place. Every link pointing to your site should have source | medium | campaign values. If you want to get deep in the weeds, follow Google’s Channel Groupings. Otherwise some of your source/medium might be bundled under ‘other’.
- Once you start seeing Goal Conversions in your Acquisition Report. Navigate to Conversions -> Multi-Channel Funnels-> Assisted Conversion Paths.
- The data displayed shows your top conversion paths:
Google Analytics provides a really handy funnel & attribution model that’s so helpful for form fills. It will not go down to SAL/Opp/Customer level data since that lives in your CRM.
In Google Analytics, you can view Conversions data based on Default Channel Grouping and see which channels assisted in the conversion and which channel actually drove it.
What the image above shows is the series of interactions that led to conversions on a 30 day window. I can see that the top 4 are straight forward — those sources drove conversions. If you look at 5 — it says that they first came through Facebook Ads and then Direct and converted.
Without this data on form conversions in Google Analytics — the natural inclination is to attribute the direct ones to ‘shrug — they must have heard about us somewhere or clicked an un-tagged link’ . With the attribution report in Google Analytics, we can start getting a better idea of what’s driving conversions so we can focus more on the channels that work.
You can play with different models like Last AdWords Click — Linear, Time Decay and see how it impacts your attribution funnel.
Bizible vs Google Analytics:
Quick note — Bizible or any other attribution tool that sits on top of Salesforce will provide the full picture — from first touch, to lead creation to opportunity to revenue. Bizible can also integrate with Ad networks to sync costs data and revenue from Opportunities in Salesforce to give you a more complete picture of the funnel and which channels are driving pipeline. However Bizible is an enterprise tool and needs implementation and Salesforce Campaigns to work.
Google Analytics Goals by nature will not be able to determine when a customer is won or how much it is worth. In the absence of NO attribution and purely looking at first touch — Google Analytics is the way to go and it is FREE.
In both cases — you absolutely need to have clean and defined UTMs to make sense of the data.
Broadly, enterprise Saas campaigns fall into the following major buckets:
- Funnel Velocity
- Custom Audiences – based on your CRM Data.
- Look Alike Audiences – What Facebook generates based on a seed audience.
- Interest Audiences – based on interest categogies on Facebook including Industry/Company/Job title or publications/competitors
- Web Remarketing Audiences – People who come to your website.
- Engagement Audiences – People who recently engaged with your content on Facebook properties like Instagram or Facebook
Blog Remarketing: Target visitors who have been to your blog in the past 60 days. If you have a lot of visits, segment them by the types of blogs they visited and remarket to those who visited a related post in the last 30 days.
Web Remarketing: This is a little broader bucket of folks who have been to your website in the last 30 days.
Re-makerketing tip: Don’t go too far back (> 90 days) unless you have a small re-marketing list.
Interest Audience: Find 4–6 publications and interest groups or software in your customer group and use Facebooks audience’s to build an audience based on that. You can also go into Audience insights and see which pages are post popular with your audience and start there. If you have large enough competitors they might show up as interests groups as well. For example, if I am selling Social Media Software, I can target by folks who have expressed interest in Hootsuite and SME (industry pub)
Custom Audience: Upload a list of your customers & prospects into Facebook to create custom audiences. Use email, phone, city, postal/zip code, first name, last name — the more information you provide Facebook, the better your match rate will be. I’ve seen this average at around 75% match. Don’t bundle everyone together. Use your MA/CRM to create segmented lists to upload so you can target them separately — more on this in the Hubspot Adds Ad-On Section below. Use Customers as a suppression list by excluding them unless you are doing a customer marketing or cross sell/upsell campaign.
Look Alike Audience: use the custom audience lists to seed a look alike audience. Start with a 1% look like in the Geo you are selling to.The more data points in the seed list, the better this will be. If the audience seems too huge use interests when creating campaigns to narrow it down.
Strategy: Generate MQL’s: qualified leads via live chat (Drift) & Gated Content Downloads (whitepaper/ebooks/webinars)
Audience: Home-page remarketing by time spent on page: these are people who did not bounce straight away but spent some time on your site. Great to re-market to with some gated content to qualify them further.
Re-marketing to Product/solutions page visitors: Visitors who went to your solutions/product page have implicitly expressed interest in your offering.
Look Alike of Existing MQL’s from your Database: Upload a list of your MQL’s and let Facebook match them to others like them on Facebook. Start with 1% look alike and expand from there, restricted by Geo.
Custom Audience of Subscribers & non-MQL leads: If you already have those leads in an email nurture, this is a great way to get in-front of them in more places. Have consistent messaging& offers.
Strategy: Generate more trial signups & demo requests using Facebook lead Ads.
This requires thinking through your lead management process. If leads are followed up by SDR/BDR teams — use Zapier or Facebooks native CRM sync tool to sync leads to your MA / CRM and route them through assignment rules/lead scoring/nurtures etc.
If you create a user account based on signup — use your MA/CRM API to create a user account once a contact is created from Facebook and send them an email with a login link generated from your MA.
Visitors who bounced on Demo/pricing Page or have spent a certain amount of time on page but didn’t complete the form.
Custom Audiences of current SAL & MQLS — these are contacts who have already expressed interest but are not responsive.
Account Based Marketing- Target specific companies, industries or job titles within Facebook.
Caveat: this is based on self reported data (the job and company you put into your Facebook Profile) so use some discretion.
Audience: Drill down into Demographics- Work & Employers and search for the company you want to target. If there are a min of 20 people on Facebook, you can add them to your audience. Similarly you can do the same audience for job titles & industries. For a more micro targeted campaign you can narrow it down by ‘Must Match’ interest & target within interest groups
Hubspot Ads Ad-On:
If you have a Hubspot Marketing Stack— I’d recommend getting the Ads add-on:
- If you already have your database in Hubspot, Hubspot makes it super easy to sync Leads from Facebook Lead Ads into Hubspot. Saves you from exporting and importing CSV files between the two systems and keeps your custom audiences up-to-date. This is great to create nurture or engagement streams in parallel to your email campaigns. Y
- You can create lists and report based on Facebook Ad Click property. This is super helpful for reporting on revenue or pipeline influenced by Facebook Ads. For example someone might have clicked on an Ad but they might not convert right away but then come in through Direct and convert. If you didn’t have the Facebook Ads Ad -On, you would be missing data on the contact properties for the Facebook Ads engagement and give credit to direct traffic. This way you can tie that Facebook Ad to the Direct visit/conversion.
Some tips and tricks:
If you have a freemium or trial model – use Facebook Ads to increase product engagement during the trial along with generating more trials. You can setup events in the app and create custom audiences based on events completed or not completed – modeled after your product on-boarding funnel or create a custom audience based on email addresses.
Start with a $25/day budget / Ad Set to and run for a week to determine results. Lower budgets will limit your data and increase the learning cycle.
Monitor your ad frequency – Klipfolio learned Ad Frequency resulted in a higher CPA because users keep seeing the ads over and over again.
Relevance Score is important but if you are getting the CPA targets you can ignore relevance score to simplify your Facebook Ads operations.
Conversion events need to fire at-least 50 – 100 times a week for Facebook to optimize around them. When you are creating a new campaign, optimize around a event like Viewed Content or Landing Page views to start. Once you have enough viewed content events data, you can clone and switch Lead or custom conversion events. When creating an Ad Set Facebook will give you an option to optimize for Landing Page views or click to start.
Don’t create new campaigns every month if you work on a monthly budget cycle. Manage the budget instead since those ad sets already have a wealth of data to dig into and its easier to compare perfomance over longer time periods.
Never set and forget Facebook Ads. Just like Adwords you need to monitor and optimize them everyday.
Use automated rules but always set notifications so you know what changed where.
I occasionally write essays like this. Subscribe to my newsletter Overdraft to get them in your inbox occasionally.
Also published on Medium.