In the first post in this series, we described what exactly are the changes happening around iOS 14.5 and Facebook’s response to it – AEM. In this post we’ll suggest some practical actions you can take to improve your account’s performance.
Shopify specific actions you need to take
The main issue with these changes is that less data will be available for your campaign optimization. This issue is twofold – first, there’s less data for you to manually go in and optimize campaigns. For example, you won’t be able to see breakdowns of user demographics in your campaigns.
Second, and more importantly, there’s less data available for Facebook’s optimization engine.
To compensate for the data loss, Facebook strongly recommends using Server Side tracking, aka Conversions API. This tracking complements the existing Facebook Pixel that tracks user behavior on your store. This additional method is required as in many cases, the regular pixel fails at collecting and passing the data back to Facebook. This can happen for numerous reasons, primarily simply because of users installing ad blockers that prevent the Facebook Pixel from loading. The amount of users using ad blockers has reached 27% in the US market as of 2021.
So, while this issue isn’t directly related to iOS 14.5 or Facebook’s AEM, being blind to the behavior of a quarter of your audience is bad, and even more so when data is becoming scarce.
Track purchases with Facebook’s Conversions API (CAPI) in Shopify
As with other Facebook products, Shopify has a built-in integration to support the Conversions API out of the box.
To activate this, simply navigate to the Facebook channel in your Shopify admin. Under the Facebook Shop settings, click the Data Sharing section.
Here, you can select between three options:
- Standard – The Facebook Pixel is installed on the site and tracks data anonymously with its standard implementation.
- Enhanced – This adds the user’s personal data (when available) to the pixel event sent from the user’s browser as they navigate through your site.
- Maximum – With this option, the Facebook Conversions API is added to the mix. This means that the Purchase events are also sent via the backend of your store to ensure that no Purchase data is missing.
While this solution is easy to implement, it is far from being a bulletproof solution. Shopify chose a relatively conservative form of this feature, tracking only the Purchase events (instead of all events, e.g., View Content and Add to Cart). Additionally, Shopify’s technical implementation isn’t perfect either, leaving the door open for ad blockers to block off this tracking as well.
So use it, as it doesn’t request any complex setup, but be aware that it won’t cover all cases.
You can expect an increase of measured conversions in Facebook of about 5-10%.
For a truly bulletproof solution I would recommend using Segment’s Shopify integration by LittleData, although this is a costly solution.
Track purchases with Facebook’s Offline Conversions in Shopify
This cool trick is slightly different than the Conversions API. For CAPI, Facebook tries to match a browser cookie with a specific user on Facebook. It can achieve this regardless of an email address or phone number provided (though these improve the match rate).
The Offline Conversions feature exists to track interactions that happened in absence of a browser cookie. For example, if a user made a purchase in-store or by phone, reporting the user’s email will help Facebook attribute the ads shown to that individual.
This feature can be used to compensate for tracking discrepancies, by reporting purchases completed in the store directly to Facebook completely independent of the browser interactions, hence overcoming any ad blocker.
Doing this is quite simple. Simply create a Zapier integration and you’re good to go.
Create a free Zapier account and create a new zap. Set the trigger to use Shopify and set the event to “New Paid Order”.
Next, add an action with the app “Facebook Offline Conversions” and set the event to “Send Offline Event”.
Under the “Set up action” section, choose the relevant Ad Account and Event Set.
Then, set the Event Time property to use the “Updated At” value received from Shopify. Similarly, set the Email, Phone and First/Last Name properties with matching values from Shopify.
Finally, set the Event Name to “Purchase” and set the Value, Currency and Order ID properties to their matching values too.
It’s a three-minute setup that will be super useful in completing missing data, so don’t skip this.
By adding the Order ID to this set up, you ensure that Purchase events don’t count twice and damage your data (i.e., duplicate count of conversions), so it’s important to get this done right.
Test and activate your zap and you’re all set to go. This will now run in the background with every new order that comes in.
Generic actions you need to take
After covering some Shopify specific actions, let’s cover all bases by making sure to take actions that aren’t specific to Shopify.
1. Domain verification
The first action you must take to ensure smooth reporting of events is verifying your domain in Facebook. This signals to Facebook that the domain tracked is indeed managed by you.
If you’re using Shopify, the recommended method to validate the domain is by using a DNS txt record.
In layman’s terms this is a simple string of text that Facebook asks you to associate with the domain through the domain’s management system (known as DNS).
An example string might look like this:
facebook-domain-verification=lmxwqvckuxumgs5hr68cy2r7asdjh4
You can retrieve this from your Facebook Business Manager under Brand Safety > Domains.
If your domain was purchased through Shopify, you can handle this in the admin section directly. Go to Online store > Domains > DNS Settings and add a TXT Record with the value received from Facebook.
If your domain was purchased elsewhere, you can similarly update the DNS records through your provider.
As with the Conversions API, this process doesn’t have a direct relation to the iOS/AEM restrictions but rather serves as a precautionary measure to ensure that event tracking is done only by verified domains.
2. Event selection and prioritization
After validating your domain, you will need to select eight events that you can use for optimization in your campaigns. Facebook will still allow you to report as many events as you like, but only these eight will be available for optimizing your campaigns.
Since you’re in ecommerce, you will want to activate the “Value Optimization” feature which snatches four out of the eight events. This leaves only four events for selection. We recommend using events that indicate a high intent of conversion, primarily Add to Cart and Initiate Checkout. On top of these, you can add events such as Search or Add to Wishlist, though these are usually limited to a small number of users. If you’re using Fixel, we recommend adding the Fixel High Intent event which accounts for 10-20% of users.
After selecting the eight events (or five when using Value Optimization), you need to prioritize these. The rule of thumb is to have Purchase at the top and then move down the funnel.
For example:
- Purchase
- Initiate checkout
- Add to Cart
- Fixel High Intent
- Search
Note that you can update these at a later stage (add/remove events and change their priority), but this will freeze your reporting for up to 72 hours, so it is recommended to be cautious of such changes.
3. UTM Tagging for 3rd party reporting
One of “perks” of AEM being applied only inside Facebook Ads, is that all data reporting continues to work just fine. This means that for example, Google Analytics will continue reporting just fine. To compensate for some of the data loss in Facebook Ads (delayed reporting, campaign/ad set level limits) you can analyze the data in Google Analytics (and Shopify’s dashboard) if you set up proper UTM tagging.
Facebook offers a semi-automated solution for managing UTMs, so that you don’t have to set these up manually.
When setting your ads, under the Tracking section you can manage the URL Parameters added to the Website URL you’ve set in the ad.
You can set a static value for these by typing in the box, but it’s recommended to use Facebook’s variables for these so that the values sent are dynamic.
For example, we recommend using this syntax, which takes the source/medium as facebook/cpc as well as adds in the campaign name, ad set name and ad name to the relevant UTMs.
?utm_source=facebook&utm_medium=cpc&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}
The available variable is Facebook Ads are:
- ad_id={{ad.id}}
- adset_id={{adset.id}}
- campaign_id={{campaign.id}}
- ad_name={{ad.name}}
- adset_name={{adset.name}}
- campaign_name={{campaign.name}}
- placement={{placement}}
- site_source_name={{site_source_name}}
Final thoughts
Facebook Ads have taken quite a hit over the past few weeks. However, if you take the right steps, you can mitigate some of the damage and keep your account’s performance in good shape.
This article was brought to you by: Elad Levy from Fixel
Get Fixel Shopify app with 15% OFF discount, just use our code: ZAGA15