{"id":71655,"date":"2025-02-06T14:49:10","date_gmt":"2025-02-06T14:49:10","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/facebook-conversions-api-using-ga4-web-tags-and-a-gtm-server\/"},"modified":"2025-02-06T14:49:10","modified_gmt":"2025-02-06T14:49:10","slug":"facebook-conversions-api-using-ga4-web-tags-and-a-gtm-server","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=71655","title":{"rendered":"Facebook Conversions API Using GA4 Web Tags And A GTM Server"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>Facebook has now <strong>officially<\/strong> released their <a href=\"https:\/\/www.facebook.com\/business\/help\/702509907046774\"><strong>Conversions API tag template<\/strong><\/a> for <a href=\"https:\/\/www.simoahava.com\/analytics\/server-side-tagging-google-tag-manager\/\">server-side tagging in Google Tag Manager<\/a>.<\/p>\n<p>With this tag template, you can create a server-side tag that fires with any <a href=\"https:\/\/www.simoahava.com\/analytics\/server-side-tagging-google-tag-manager\/#clients-and-tags\">Client<\/a> designed to parse requests into a <a href=\"https:\/\/www.simoahava.com\/analytics\/server-side-tagging-google-tag-manager\/#event-model\">unified event model<\/a>.<\/p>\n<div style=\"aspect-ratio: 1802 \/ 1192;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-conversions-api-tag.jpg\" title=\"Facebook Conversions API Tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1192\" width=\"1802\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-conversions-api-tag.jpg#ZgotmplZ\" alt=\"Facebook Conversions API Tag\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>One such Client already exists, and every single Server container has it built-in: the <strong>GA4 Client<\/strong>.<\/p>\n<blockquote>\n<p>If you haven\u2019t yet deployed a Server container, check out <a href=\"https:\/\/youtu.be\/6OGbOh216mU\">this video walkthrough<\/a> for more details on how to do it.<\/p>\n<\/blockquote>\n<p>In this guide, I will walk you through the steps you need to take to get Facebook\u2019s Conversions API working in unison with a GA4 Client.<\/p>\n<p>This means one simple but powerful thing:<\/p>\n<p><strong>You don\u2019t need to run <em>any<\/em> Facebook JavaScript in the web browser<\/strong>. The Facebook server-side tag will be able to utilize your existing GA4 data streams, albeit with some small modifications to cater to Facebook\u2019s unique requirements for the payload.<\/p>\n<p>If you want to use the <strong>Facebook web pixel<\/strong> to handle both the web stream <em>and<\/em> the server-side data dispatch, you will have to wait a while until Facebook officially releases their solution for splitting the web pixel stream into both a Facebook server request and a custom endpoint request (e.g. your server-side endpoint).<\/p>\n<p>                <span class=\"simmer\"><br \/>\n  <span class=\"close\">X<\/span><\/p>\n<p>\n    <span class=\"fa fa-md fa-bell\"\/><br \/>\n    <strong>The Simmer Newsletter<\/strong>\n  <\/p>\n<p>\n    Subscribe to the <a href=\"https:\/\/www.simoahava.com\/newsletter\/\">Simmer newsletter<\/a> to get the latest news and content from Simo Ahava into your email inbox!\n  <\/p>\n<p>  <\/span><\/p>\n<h2 id=\"how-it-works\">How it works<\/h2>\n<p>Here\u2019s a brief overview of how the process works.<\/p>\n<div style=\"aspect-ratio: 4986 \/ 2422;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-process.jpg\" title=\"Facebook process\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"2422\" width=\"4986\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-process.jpg#ZgotmplZ\" alt=\"Facebook process\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<blockquote>\n<p>Almost 10 years of blogging and this is still the quality of my process diagrams\u2026<\/p>\n<\/blockquote>\n<h3 id=\"the-ga4-web-tag-records-the-event\">The GA4 web tag records the event<\/h3>\n<p>Your <strong>GA4 tags<\/strong> running in the <em>web browser<\/em> will collect events as they have done until now.<\/p>\n<p>However, instead of sending the events directly to Google Analytics servers, you\u2019ll configure the <a href=\"https:\/\/www.simoahava.com\/gtm-tips\/send-google-analytics-requests-custom-endpoint\/\"><code>transport_url<\/code> field<\/a> in the <strong>GA4 Config tag<\/strong> (preferably) to dispatch the requests to your Server container instead.<\/p>\n<div style=\"aspect-ratio: 1782 \/ 834;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/transport-url.jpg\" title=\"The transport_url field\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"834\" width=\"1782\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/transport-url.jpg#ZgotmplZ\" alt=\"The transport_url field\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>In addition to this, you\u2019ll need to add some <strong>new fields<\/strong> to the GA4 requests, so that the Facebook tag template will be able to access this information. This includes things like <strong>User Data<\/strong> parameters (used for user matching), and certain <strong>Facebook custom data parameters<\/strong> you want the server-side tag to collect as well.<\/p>\n<div style=\"aspect-ratio: 1442 \/ 794;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-event-parameters.jpg\" title=\"GA4 event parameters\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"794\" width=\"1442\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-event-parameters.jpg#ZgotmplZ\" alt=\"GA4 event parameters\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>You don\u2019t have to worry about sending any of this Facebook-specific information to GA4! We\u2019ll clean up the payload in the Server container.<\/p>\n<h3 id=\"the-ga4-client-captures-the-request\">The GA4 Client captures the request<\/h3>\n<p>Once you configure the <code>transport_url<\/code> in your GA4 Config tag, it will be sent to your Server container.<\/p>\n<p>In the Server container, you need a <strong>GA4 Client<\/strong> with <strong>Default GA4 paths<\/strong> selected.<\/p>\n<div style=\"aspect-ratio: 1804 \/ 892;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-client-ready.jpg\" title=\"GA4 Client ready\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"892\" width=\"1804\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-client-ready.jpg#ZgotmplZ\" alt=\"GA4 Client ready\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<blockquote>\n<p>You can also proxy the gtag.js container by checking the <strong>Default gtag.js paths for specific IDs<\/strong>, and you can also utilize the Server container\u2019s cookie capabilities by expanding <strong>More Settings<\/strong> and exploring the <a href=\"https:\/\/www.simoahava.com\/analytics\/fpid-cookie-google-analytics-server-side-tagging\/\">FPID option<\/a>.<\/p>\n<\/blockquote>\n<h3 id=\"the-facebook-tag-takes-the-data-and-forwards-it-to-facebook\">The Facebook tag takes the data and forwards it to Facebook<\/h3>\n<p>In the Server container, the GA4 Client parses the incoming HTTP request sent by the GA4 web tag and converts it into an <strong>event data object<\/strong>.<\/p>\n<div style=\"aspect-ratio: 2740 \/ 1270;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-data-object.jpg\" title=\"Event data object\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1270\" width=\"2740\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-data-object.jpg#ZgotmplZ\" alt=\"Event data object\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>This object triggers the <strong>Facebook server-side tag<\/strong> (the template for which you can find in the <a href=\"https:\/\/tagmanager.google.com\/gallery\/#\/owners\/facebookincubator\/templates\/ConversionsAPI-Tag-for-GoogleTagManager\">Community Template Gallery<\/a>), which reads the event data and finally sends the payload to Facebook.<\/p>\n<p>If you have (as you should) a GA4 tag running in the Server container, dispatching the GA4 Client\u2019s output to GA4 servers as well, you might want to clean up some of the parameters reserved for Facebook to prevent them from \u201cleaking\u201d into your GA4 data.<\/p>\n<div style=\"aspect-ratio: 1394 \/ 800;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/clear-facebook-parameters.jpg\" title=\"Clear FB parameters\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"800\" width=\"1394\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/clear-facebook-parameters.jpg#ZgotmplZ\" alt=\"Clear FB parameters\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>And that\u2019s it for the overview! Let\u2019s jump into each part in more detail.<\/p>\n<h2 id=\"update-the-ga4-web-tag\">Update the GA4 web tag<\/h2>\n<p>Let\u2019s start with modifying the GA4 web tag.<\/p>\n<p>If you\u2019re just <em>starting<\/em> to work with Server containers, it might be wise to <em>copy<\/em> your existing GA4 web tags rather than replace their functionality with the <code>transport_url<\/code> field.<\/p>\n<p>That way you can \u201cparallel track\u201d via the web tag AND the Server container. You might want to create a new data stream in GA4 just for your server-side hits.<\/p>\n<p>But this isn\u2019t a guide on how to create a GA4 server-side setup. Instead, we\u2019ll focus on utilizing the GA4 web tag for <strong>Facebook\u2019s purposes<\/strong>.<\/p>\n<p>The Facebook server-side tag has a limited inventory of parameters it can make use of.<\/p>\n<h3 id=\"event-name\">Event Name<\/h3>\n<p>First, there\u2019s the <strong>Event Name<\/strong> field in the GA4 web tag itself. You can set <em>anything<\/em> you like into this and it will work with Facebook\u2019s endpoint. However, <em>some<\/em> event names have special functionality, and they are automatically converted to Facebook\u2019s standard event name format. Here\u2019s the list:<\/p>\n<table>\n<thead>\n<tr>\n<th>Event name in GA4 tag<\/th>\n<th>Event name converted by Facebook\u2019s tag<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>add_payment_info<\/code><\/td>\n<td><code>AddPaymentInfo<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>add_to_cart<\/code><\/td>\n<td><code>AddToCart<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>add_to_wishlist<\/code><\/td>\n<td><code>AddToWishlist<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>begin_checkout<\/code><\/td>\n<td><code>InitiateCheckout<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>generate_lead<\/code><\/td>\n<td><code>Lead<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>page_view<\/code><\/td>\n<td><code>PageView<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>purchase<\/code><\/td>\n<td><code>Purchase<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>search<\/code><\/td>\n<td><code>Search<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>sign_up<\/code><\/td>\n<td><code>CompleteRegistration<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>view_item<\/code><\/td>\n<td><code>ViewContent<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>So if you use any of the event name values in the <em>left<\/em> column, Facebook will convert them to the corresponding values in the <em>right<\/em> column when collecting the data.<\/p>\n<p>Any other event names will be used as-is without modifications when collecting the data to Facebook.<\/p>\n<h3 id=\"general-parameters\">General parameters<\/h3>\n<p>There are a handful of <em>utility<\/em> parameters that you can set as GA4 event parameters, and they will be handled in a special way by the Facebook tag.<\/p>\n<h4 id=\"event_time\">event_time<\/h4>\n<div style=\"aspect-ratio: 1746 \/ 242;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-time-fb.jpg\" title=\"event_time in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"242\" width=\"1746\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-time-fb.jpg#ZgotmplZ\" alt=\"event_time in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">event_time in the GA4 web tag<\/span><\/p>\n<\/div>\n<p>The <code>event_time<\/code> parameter should be set to the moment when the data was collected on the website. The format is <strong>UNIX (epoch) time<\/strong> <em>in seconds<\/em>. In other words, to get the current timestamp with a Custom JavaScript variable, for example, you could use this:<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-javascript\" data-lang=\"javascript\"><span style=\"color:#00a\">function<\/span>() {\n  <span style=\"color:#00a\">return<\/span> <span style=\"color:#0aa\">Math<\/span>.round(<span style=\"color:#00a\">new<\/span> <span style=\"color:#0aa\">Date<\/span>().getTime() \/ <span style=\"color:#099\">1000<\/span>);\n}\n<\/code><\/pre>\n<\/div>\n<p>Note that you don\u2019t <strong>have<\/strong> to send this. If it\u2019s not part of the GA4 hit, then the Facebook tag will simply set the timestamp to the moment the server-side tag was executed.<\/p>\n<h4 id=\"event_id\">event_id<\/h4>\n<div style=\"aspect-ratio: 1748 \/ 234;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-id-facebook.jpg\" title=\"event_id in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"234\" width=\"1748\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-id-facebook.jpg#ZgotmplZ\" alt=\"event_id in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">event_id in the GA4 web tag<\/span><\/p>\n<\/div>\n<p><a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/deduplicate-pixel-and-server-events\"><code>event_id<\/code> is used for <strong>deduplicating identical events<\/strong><\/a> collected from more than one source (e.g. web site and Server container).<\/p>\n<p>This is <strong>only<\/strong> relevant if you are duplicating data collection between the web pixel and the Server container, for example. If you are only collecting events using one or the other, you do <strong>not<\/strong> have to use <code>event_id<\/code>!<\/p>\n<p>The <code>event_id<\/code> must be unique for all the events that should be deduplicated. Each set of events that needs to be deduplicated must have its own unique event ID, otherwise Facebook will not be able to consistently deduplicate the data.<\/p>\n<p>With Google Tag Manager, creating a consistently unique event ID is a bit difficult, as variables are resolved each time they are invoked. So if you have, for example, the <strong>{{Random Number}}<\/strong> variable used as Event ID in a web pixel and a server-side call, then it will return a different number for both times the variable is called.<\/p>\n<p>A fairly simple way to create the Event ID would be to generate a random Page ID for every page load, and then concatenate this with a sequence number that is increased by one for each set of Facebook events that needs to be deduplicated. Another option is to push an event to <code>dataLayer<\/code> for each set of Facebook tags that needs to be deduplicated, and with that event also push the random, unique Event ID. That way all the Facebook hits (that require deduplication) can fire on the event and use the Event ID in the pushed object.<\/p>\n<h4 id=\"page_location\">page_location<\/h4>\n<div style=\"aspect-ratio: 1742 \/ 226;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/page-location-fb.jpg\" title=\"page_location in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"226\" width=\"1742\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/page-location-fb.jpg#ZgotmplZ\" alt=\"page_location in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">page_location in the GA4 web tag<\/span><\/p>\n<\/div>\n<p>Even though <code>page_location<\/code> is automatically collected from the URL of the page when the GA4 tag fires, you can also override it with a custom value as in the screenshot above.<\/p>\n<p>This is collected as the <code>event_source_url<\/code> by the Facebook server-side tag.<\/p>\n<h4 id=\"action_source\">action_source<\/h4>\n<div style=\"aspect-ratio: 1746 \/ 246;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/action-source-fb.jpg\" title=\"action_source in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"246\" width=\"1746\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/action-source-fb.jpg#ZgotmplZ\" alt=\"action_source in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">action_source in the GA4 web tag<\/span><\/p>\n<\/div>\n<p>You can set <code>action_source<\/code> to one of:<\/p>\n<ul>\n<li><code>email<\/code><\/li>\n<li><code>website<\/code><\/li>\n<li><code>app<\/code><\/li>\n<li><code>phone_call<\/code><\/li>\n<li><code>chat<\/code><\/li>\n<li><code>physical_store<\/code><\/li>\n<li><code>system_generated<\/code><\/li>\n<li><code>other<\/code><\/li>\n<\/ul>\n<p>This field is optional, and it specifies the context of the hit: where did the conversion happen.<\/p>\n<p>You can <em>also<\/em> configure the Action Source in the server-side Facebook tag. However, if you do send the <code>action_source<\/code> in the GA4 hit, it overrides the server-side tag setting.<\/p>\n<h3 id=\"user-data-parameters\">User data parameters<\/h3>\n<p>With appropriate consent and\/or other legal premise checked, you can also send user data parameters to Facebook to help match the conversion with the user who performed the action.<\/p>\n<blockquote>\n<p>Please, please, <strong>please<\/strong> make sure that you have the legal right to send end users\u2019 personal data to Facebook. Don\u2019t follow the instructions below blindly \u2013 make sure you are not breaching the users\u2019 right to privacy.<\/p>\n<\/blockquote>\n<p>For user data parameters to work in the server-side setup, you <strong>must<\/strong> add the following field to the event parameters of the GA4 tag sending the user data:<\/p>\n<div style=\"aspect-ratio: 1754 \/ 232;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/first-party-collection-facebook.jpg\" title=\"first_party_collection in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"232\" width=\"1754\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/first-party-collection-facebook.jpg#ZgotmplZ\" alt=\"first_party_collection in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Set the field name to <code>first_party_collection<\/code> and value to <code>true<\/code>.<\/p>\n<h4 id=\"user-ip-address-and-user-agent-string\">User IP address and User-Agent string<\/h4>\n<p>If you want, you can <strong>override<\/strong> the IP address and User-Agent string sent to Facebook using the GA4 web tag as well. This is a nice way of anonymizing the request if you don\u2019t want Facebook to use the user\u2019s actual IP and User-Agent.<\/p>\n<div style=\"aspect-ratio: 1750 \/ 468;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ip-override-user-agent.jpg\" title=\"ip override and user agent\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"468\" width=\"1750\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ip-override-user-agent.jpg#ZgotmplZ\" alt=\"ip override and user agent\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>To override the IP address, set the field <code>ip_override<\/code>, and to override the User-Agent string, set the field <code>user_agent<\/code>.<\/p>\n<p>If you don\u2019t override these fields, the server-side tag will forward the user\u2019s actual IP address and User-Agent to Facebook to help with user matching.<\/p>\n<h4 id=\"user-data-parameters-in-the-common-event-schema\">User data parameters in the common event schema<\/h4>\n<p>You can also explicitly send personal data about the user to Facebook. The server-side tag will <strong>hash<\/strong> the data, so Facebook will never receive the data in a readable format.<\/p>\n<blockquote>\n<p>If the data is already hashed when sent with the GA4 tag, the Facebook tag won\u2019t hash it again.<\/p>\n<\/blockquote>\n<p>Here are the parameters you can set:<\/p>\n<ul>\n<li><code>user_data.email_address<\/code><\/li>\n<li><code>user_data.phone_number<\/code><\/li>\n<li><code>user_data.address.first_name<\/code><\/li>\n<li><code>user_data.address.last_name<\/code><\/li>\n<li><code>user_data.address.city<\/code><\/li>\n<li><code>user_data.address.region<\/code><\/li>\n<li><code>user_data.address.postal_code<\/code><\/li>\n<li><code>user_data.address.country<\/code><\/li>\n<\/ul>\n<p>This is what it might look in the GA4 web tag:<\/p>\n<div style=\"aspect-ratio: 1742 \/ 574;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/user-data-schema.jpg\" title=\"User Data parameters following the common event schema\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"574\" width=\"1742\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/user-data-schema.jpg#ZgotmplZ\" alt=\"User Data parameters following the common event schema\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">User Data parameters following the common event schema<\/span><\/p>\n<\/div>\n<h4 id=\"facebook-specific-parameters\">Facebook-specific parameters<\/h4>\n<p>There are also a handful of Facebook-specific parameters you can set. These are <strong>not<\/strong> hashed automatically.<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter name<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>x-fb-ud-ge<\/code><\/td>\n<td>User gender. <strong>Hashing is needed<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-ud-db<\/code><\/td>\n<td>User date of birth. <strong>Hashing is needed<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-ud-external_id<\/code><\/td>\n<td><a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/parameters\/customer-information-parameters#external-id\">External ID<\/a>, e.g. advertiser loyalty ID. <strong>Hashing is recommended<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-ud-subscription_id<\/code><\/td>\n<td><a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/parameters\/customer-information-parameters#subscription-id\">Subscription ID<\/a>, e.g. a subscription ID for the user in the transaction. This <strong>should not be hashed<\/strong>.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-ck-fbp<\/code><\/td>\n<td>The <code>_fbp<\/code> cookie value. See below.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-ck-fbc<\/code><\/td>\n<td>The <code>_fbc<\/code> cookie value. See below.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>You can send the <code>_fbp<\/code> and <code>_fbc<\/code> cookie values with the parameters listed above. If you don\u2019t explicitly set them, and the user has those cookies in their browser, and the server-side tagging endpoint is first-party, then the Facebook tag will <em>automatically<\/em> read the cookie values from the user\u2019s cookies.<\/p>\n<blockquote>\n<p>Note that currently, the Facebook tag does <strong>not<\/strong> <em>set<\/em> the cookies in the response. I\u2019ve submitted an Issue about this to Facebook, as I think it would make a lot of sense to have the tag add the <code>Set-Cookie<\/code> headers in the HTTP response back from the Server container.<\/p>\n<\/blockquote>\n<p>Here\u2019s what some of these parameters might look like in the GA4 event tag:<\/p>\n<div style=\"aspect-ratio: 1756 \/ 452;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/user-data-special-parameters.jpg\" title=\"Facebook-specific user data parameters in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"452\" width=\"1756\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/user-data-special-parameters.jpg#ZgotmplZ\" alt=\"Facebook-specific user data parameters in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<h3 id=\"custom-data-parameters\">Custom data parameters<\/h3>\n<p>You can also send <strong>custom data parameters<\/strong> to Facebook by setting them as fields in the GA4 web tag.<\/p>\n<h4 id=\"general-parameters-1\">General parameters<\/h4>\n<p>There are a handful of general parameters that can be set in the GA4 web tag. The Facebook server-side tag will be able to read these and send them to Facebook.<\/p>\n<table>\n<thead>\n<tr>\n<th>GA4 parameter name<\/th>\n<th>Converted by the Facebook tag<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>currency<\/code><\/td>\n<td><code>currency<\/code><\/td>\n<td>Currency code of the transaction (or other event with a monetary value).<\/td>\n<\/tr>\n<tr>\n<td><code>value<\/code><\/td>\n<td><code>value<\/code><\/td>\n<td>Total value of the transaction (or other event with a monetary value).<\/td>\n<\/tr>\n<tr>\n<td><code>search_term<\/code><\/td>\n<td><code>search_string<\/code><\/td>\n<td>What the user searched for with the site search.<\/td>\n<\/tr>\n<tr>\n<td><code>transaction_id<\/code><\/td>\n<td><code>order_id<\/code><\/td>\n<td>Unique order \/ transaction ID.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This is what these parameters would look like in the GA4 event tag:<\/p>\n<div style=\"aspect-ratio: 1746 \/ 584;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/general-custom-parameters.jpg\" title=\"Parameters in the GA4 tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"584\" width=\"1746\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/general-custom-parameters.jpg#ZgotmplZ\" alt=\"Parameters in the GA4 tag\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<h4 id=\"items\">Items<\/h4>\n<p>If you\u2019re collecting <a href=\"https:\/\/www.simoahava.com\/analytics\/google-analytics-4-ecommerce-guide-google-tag-manager\/\">Ecommerce to GA4<\/a>, you might already have an <code>items<\/code> array in place.<\/p>\n<p>Well, the server-side Facebook tag can <strong>automatically<\/strong> take the contents of this <code>items<\/code> array and turn it into a <code>contents<\/code> array!<\/p>\n<p>This is how the mapping is done:<\/p>\n<table>\n<thead>\n<tr>\n<th>Key in <code>items<\/code><\/th>\n<th>Mapped to in <code>contents<\/code><\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>item_id<\/code><\/td>\n<td><code>id<\/code><\/td>\n<td>Item ID (e.g. SKU).<\/td>\n<\/tr>\n<tr>\n<td><code>item_name<\/code><\/td>\n<td><code>title<\/code><\/td>\n<td>Item title or name.<\/td>\n<\/tr>\n<tr>\n<td><code>price<\/code><\/td>\n<td><code>item_price<\/code><\/td>\n<td>Item price.<\/td>\n<\/tr>\n<tr>\n<td><code>item_brand<\/code><\/td>\n<td><code>brand<\/code><\/td>\n<td>Item brand label.<\/td>\n<\/tr>\n<tr>\n<td><code>quantity<\/code><\/td>\n<td><code>quantity<\/code><\/td>\n<td>Number of items in the event.<\/td>\n<\/tr>\n<tr>\n<td><code>item_category<\/code><\/td>\n<td><code>category<\/code><\/td>\n<td>Item category label.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This is by far the easiest way to build the <code>contents<\/code> array.<\/p>\n<p>Naturally, you can also send the <code>contents<\/code> array with a custom parameter named <code>x-fb-cd-contents<\/code>.<\/p>\n<div style=\"aspect-ratio: 1742 \/ 236;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/contents-facebook.jpg\" title=\"x-fb-cd-contents in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"236\" width=\"1742\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/contents-facebook.jpg#ZgotmplZ\" alt=\"x-fb-cd-contents in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">x-fb-cd-contents in the GA4 web tag<\/span><\/p>\n<\/div>\n<h4 id=\"facebook-specific-custom-data-parameters\">Facebook-specific custom data parameters<\/h4>\n<p>You can also send a number of Facebook-specific custom data parameters. These are:<\/p>\n<table>\n<thead>\n<tr>\n<th>Parameter name<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>x-fb-cd-content_category<\/code><\/td>\n<td>Content category.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-content_ids<\/code><\/td>\n<td>Content IDs.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-content_name<\/code><\/td>\n<td>Content name.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-content_type<\/code><\/td>\n<td>Content type.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-contents<\/code><\/td>\n<td>Contents array.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-num_items<\/code><\/td>\n<td>Number of items.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-predicted_ltv<\/code><\/td>\n<td>Predicted lifetime value.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-status<\/code><\/td>\n<td>Status.<\/td>\n<\/tr>\n<tr>\n<td><code>x-fb-cd-delivery_category<\/code><\/td>\n<td>Delivery category.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>You can read more about these parameters as well as about their expected formats <a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/parameters\/custom-data\/\">behind this link<\/a>.<\/p>\n<p>Here\u2019s an example of what these might look like in the GA4 event tag:<\/p>\n<div style=\"aspect-ratio: 1752 \/ 460;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/custom-data-parameters.jpg\" title=\"Custom data parameters in the event tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"460\" width=\"1752\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/custom-data-parameters.jpg#ZgotmplZ\" alt=\"Custom data parameters in the event tag\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">Custom data parameters in the event tag<\/span><\/p>\n<\/div>\n<h3 id=\"test-event-code\">Test event code<\/h3>\n<p>If you\u2019re testing the Conversions API endpoint, you can use the <a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/parameters\/main-body#test_event_code\">test event code<\/a> to collect <strong>hits<\/strong> to your Facebook account with additional debug information included.<\/p>\n<p>You <em>can<\/em> set the test event code in the GA4 web tag if you wish. All you need to do is set the event parameter <code>test_event_code<\/code> like this:<\/p>\n<div style=\"aspect-ratio: 1752 \/ 230;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/test-event-code.jpg\" title=\"test_event_code in the GA4 web tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"230\" width=\"1752\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/test-event-code.jpg#ZgotmplZ\" alt=\"test_event_code in the GA4 web tag\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">test_event_code in the GA4 web tag<\/span><\/p>\n<\/div>\n<p>However, it might be easier to configure the test event code in the Facebook server-side tag (see below).<\/p>\n<h2 id=\"make-sure-the-ga4-client-is-running-in-the-server-container\">Make sure the GA4 Client is running in the server container<\/h2>\n<p>When the GA4 web tag has the <code>transport_url<\/code> field set to point at your server-side endpoint, the endpoint will receive a GA4 request whenever such a tag fires in the website.<\/p>\n<p>If the server-side endpoint <em>doesn\u2019t<\/em> have a GA4 Client configured, the request will fail with a <code>400<\/code> error.<\/p>\n<p>Make sure that you have a GA4 Client running in the Server container. If not, create one by choosing the <strong>New<\/strong>.<\/p>\n<div style=\"aspect-ratio: 2514 \/ 714;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-clients.jpg\" title=\"GA4 Client\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"714\" width=\"2514\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-clients.jpg#ZgotmplZ\" alt=\"GA4 Client\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Next, open the Client and make sure the <strong>Default GA4 paths<\/strong> option is checked.<\/p>\n<div style=\"aspect-ratio: 896 \/ 390;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/default-ga4-paths.jpg\" title=\"Default GA4 tags\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"390\" width=\"896\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/default-ga4-paths.jpg#ZgotmplZ\" alt=\"Default GA4 tags\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>This should be enough to make your endpoint claim the incoming GA4 requests and parse them into the format required by the Facebook tag.<\/p>\n<h2 id=\"load-the-facebook-conversions-api-tag-template-from-the-template-gallery\">Load the Facebook Conversions API Tag template from the template gallery<\/h2>\n<p>Next, head on to <strong>Templates<\/strong> in the Server container.<\/p>\n<p>In the <strong>Tag Templates<\/strong> box, click the <strong>Search Gallery<\/strong> button.<\/p>\n<div style=\"aspect-ratio: 2534 \/ 458;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/search-tag-gallery.jpg\" title=\"Search tag gallery\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"458\" width=\"2534\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/search-tag-gallery.jpg#ZgotmplZ\" alt=\"Search tag gallery\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Search for the <strong>Facebook Conversions API Tag<\/strong> template, select it, and click <strong>Add to workspace<\/strong>.<\/p>\n<div style=\"aspect-ratio: 1254 \/ 770;\" class=\"figure \">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-tag-gallery.jpg\" title=\"Facebook tag in the gallery\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"770\" width=\"1254\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-tag-gallery.jpg#ZgotmplZ\" alt=\"Facebook tag in the gallery\"\/><\/p>\n<p>    <\/a><\/p>\n<p>    <span class=\"caption\">Facebook tag in the gallery<\/span><\/p>\n<\/div>\n<h2 id=\"create-and-configure-the-facebook-conversions-api-tag\">Create and configure the Facebook Conversions API Tag<\/h2>\n<p>In the Server container, go to <strong>Tags<\/strong> and create a new tag.<\/p>\n<p>Choose the <strong>Facebook Conversions API Tag<\/strong> as the type.<\/p>\n<div style=\"aspect-ratio: 1586 \/ 476;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/new-tag.jpg\" title=\"New tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"476\" width=\"1586\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/new-tag.jpg#ZgotmplZ\" alt=\"New tag\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>To send data to the <strong>Conversions API<\/strong>, you will need the following information:<\/p>\n<ul>\n<li>The <strong>Pixel ID<\/strong> to which the data is sent.<\/li>\n<li>An <a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/get-started#access-token\"><strong>API Access Token<\/strong><\/a> for interacting with the Conversions API.<\/li>\n<li>(Optionally) a <a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/using-the-api#testEvents\">Test Event Code<\/a> with which to test the Conversions API without actually causing data to be collected against your pixel.<\/li>\n<\/ul>\n<p>You can also set the <strong>Action Source<\/strong> explicitly here, if you wish.<\/p>\n<p>For more information on how to get the required values, consult <a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/conversions-api\/get-started\">Facebook\u2019s documentation<\/a>.<\/p>\n<p>Finally, you\u2019ll want to <strong>trigger<\/strong> the tag when the <strong>GA4 Client<\/strong> fires.<\/p>\n<h3 id=\"trigger-when-any-ga4-request-is-received\">Trigger when any GA4 request is received<\/h3>\n<p>The simplest way to work with the Facebook tag is to trigger it whenever <em>any<\/em> GA4 request is processed by the GA4 Client.<\/p>\n<p>You\u2019d need to create a new <strong>Custom<\/strong> trigger, where the condition is:<\/p>\n<p><strong>Client Name<\/strong> equals <strong><your ga4=\"\" client=\"\" name=\"\"\/><\/strong><\/p>\n<p>For example, I\u2019ve created a GA4 Client named <code>GA4<\/code>. Thus, my trigger looks like this:<\/p>\n<div style=\"aspect-ratio: 1810 \/ 682;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-client.jpg\" title=\"GA4 Client trigger\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"682\" width=\"1810\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-client.jpg#ZgotmplZ\" alt=\"GA4 Client trigger\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>When you add this trigger to the Facebook tag, it will (try to) send data to Facebook when <em>any<\/em> GA4 event is retrieved.<\/p>\n<h3 id=\"trigger-conditionally\">Trigger conditionally<\/h3>\n<p>However, you might want to fire the tag only when <em>some<\/em> GA4 requests are received by the GA4 Client. For example, perhaps you only want to fire the tag when it has one of those Facebook-specific parameters included. Or perhaps you want to fire the tag only for a given event name.<\/p>\n<div style=\"aspect-ratio: 1804 \/ 774;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/x-fb-trigger.jpg\" title=\"Trigger for x-fb-\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"774\" width=\"1804\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/x-fb-trigger.jpg#ZgotmplZ\" alt=\"Trigger for x-fb-\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>The trigger above will fire only when the GA4 Client receives a request <strong>and<\/strong> when the request\u2019s query string has a query parameter that begins with either <code>ep.x-fb-<\/code> or <code>epn.x-fb-<\/code>. The first is for custom text parameters sent with the GA4 tag, and the second is for custom number parameters.<\/p>\n<blockquote>\n<p><strong>Query String<\/strong> is a built-in variable you can enable in the <strong>Variables<\/strong> section of the Server container.<\/p>\n<\/blockquote>\n<div style=\"aspect-ratio: 1810 \/ 1496;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/fb-event-lookup-table.jpg\" title=\"FB Event Lookup Table\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1496\" width=\"1810\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/fb-event-lookup-table.jpg#ZgotmplZ\" alt=\"FB Event Lookup Table\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>The Lookup Table variable above could be used to set the tag to fire for only a specific set of event names. In the Facebook tag\u2019s trigger, you would add the condition that this Lookup Table variable needs to resolve to the <code>true<\/code> value for the tag to fire.<\/p>\n<p><strong>Note that the event names need to match those set in the GA4 web tag<\/strong>. So if you want a <code>page_view<\/code> GA4 web event to fire the Facebook server-side tag, you would need to add <code>page_view<\/code> to the list of allowed events.<\/p>\n<p>There are many ways to tackle this, and you need to consider how and when you want Facebook to receive data from the Server container. There are similarly many ways to add Facebook-specific parameters to the GA4 web tag so that you can \u201cflag\u201d certain requests to be intended only for Facebook.<\/p>\n<p>Because you\u2019re adding all these new parameters to the GA4 web tag, it\u2019s possible you <em>don\u2019t<\/em> want to send them to GA4 as well. This is particularly true for all those <code>x-fb-<\/code> prefixed parameters.<\/p>\n<p>First, calm yourself. The <strong>GA4 server-side tag will NOT send any User Data parameters<\/strong>, meaning those prefixed with <code>user_data<\/code>. So if you send an email address unhashed to your Server container as the <code>user_data.email_address<\/code> parameter (following <a href=\"#user-data-parameters-in-the-common-event-schema\">this<\/a>), those will <strong>not<\/strong> be processed by the server-side GA4 tag!<\/p>\n<p>But for all the others, you\u2019ll need to add the parameters you <strong>want to exclude<\/strong> into the respective setting of your GA4 server-side tag(s). For example, here I\u2019m making sure that the <code>x-fb-cd-ge<\/code> (for Gender), <code>x-fb-cd-db<\/code> (for Date Of Birth), and <code>x-fb-cd-content_type<\/code> (for Content Type) are <strong>not<\/strong> sent to GA4:<\/p>\n<div style=\"aspect-ratio: 1784 \/ 1206;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/exclude-x-fb-cd.jpg\" title=\"Exclude x-fb- parameters\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1206\" width=\"1784\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/exclude-x-fb-cd.jpg#ZgotmplZ\" alt=\"Exclude x-fb- parameters\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>I wish there was a way to specify a regular expression match, for example, but for now you just need to explicitly list the parameters you want to exclude.<\/p>\n<p>The best way to get a list of parameters that are processed by the GA4 Client is to take a look at the Server container\u2019s Preview mode and specifically the <strong>Event Data<\/strong> tab for any given event that fires the GA4 tag.<\/p>\n<div style=\"aspect-ratio: 3328 \/ 1800;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-data-tab-fb.jpg\" title=\"Event Data tab with FB parameters\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1800\" width=\"3328\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-data-tab-fb.jpg#ZgotmplZ\" alt=\"Event Data tab with FB parameters\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Here you can see how I have the three <code>x-fb-...<\/code> parameters generated by the GA4 Client, so I need to add those to the exclusion list in the GA4 server-side tag.<\/p>\n<blockquote>\n<p>There\u2019s one more Facebook-specific parameter in the screenshot above which I should probably also exclude. Can you spot which one it is?<\/p>\n<\/blockquote>\n<h2 id=\"test-the-setup\">Test the setup<\/h2>\n<p>Once you have the <a href=\"#update-the-ga4-web-tag\"><strong>GA4 web tag configured<\/strong><\/a>, the <a href=\"#make-sure-the-ga4-client-is-running-in-the-server-container\"><strong>GA4 server-side Client set up<\/strong><\/a>, the <a href=\"#create-and-configure-the-facebook-conversions-api-tag\"><strong>Facebook server-side tag ready to go<\/strong><\/a>, and the <a href=\"#modify-any-possible-ga4-server-side-tags\"><strong>GA4 server-side tag updated<\/strong><\/a>, you\u2019re ready to <em>test everything<\/em>.<\/p>\n<p>Take both the Server container and the web container to Preview mode, and do something that causes a GA4 event designed for Facebook\u2019s data collection to fire in the web container.<\/p>\n<p>In the web container\u2019s preview mode, you should see a GA4 request to the Server container. To see this, make sure you have the <strong>GA4 Measurement ID<\/strong> selected in the Preview filters rather than the GTM container ID (see how it\u2019s done in the screenshot below).<\/p>\n<div style=\"aspect-ratio: 3328 \/ 1800;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-data-tab-fb.jpg\" title=\"GA4 web preview\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1800\" width=\"3328\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/event-data-tab-fb.jpg#ZgotmplZ\" alt=\"GA4 web preview\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>In the Server container\u2019s preview mode, you should see an incoming HTTP request, where the <strong>Event Name<\/strong> you configured in the GA4 web tag is shown beneath the request.<\/p>\n<div style=\"aspect-ratio: 1080 \/ 570;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-purchase.jpg\" title=\"GA4 purchase\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"570\" width=\"1080\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/ga4-purchase.jpg#ZgotmplZ\" alt=\"GA4 purchase\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>When you select the request, you should see an outgoing request to Facebook (and possibly to GA4 as well):<\/p>\n<div style=\"aspect-ratio: 1908 \/ 1278;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/request-to-fb-ga4.jpg\" title=\"Request to FB and GA4\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1278\" width=\"1908\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/request-to-fb-ga4.jpg#ZgotmplZ\" alt=\"Request to FB and GA4\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>When you select the Facebook request, you should see the correct access token in the URL, a nicely formed request body with all the parameters you included (user data parameters being <strong>hashed<\/strong>), and finally a status code of <code>200<\/code> to indicate a successful request.<\/p>\n<div style=\"aspect-ratio: 1792 \/ 924;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-request-details.jpg\" title=\"Facebook request details\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"924\" width=\"1792\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/facebook-request-details.jpg#ZgotmplZ\" alt=\"Facebook request details\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<blockquote>\n<p>You should also check the outgoing request to GA4 to make sure all the parameters you wanted to exclude are, indeed, excluded.<\/p>\n<\/blockquote>\n<p>Finally, in Facebook you should see your event come in to the test event tool (assuming you were using the <strong>Test Event Code<\/strong>).<\/p>\n<div style=\"aspect-ratio: 2568 \/ 946;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/03\/fb-events-manager.jpg\" title=\"Facebook events manager\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"946\" width=\"2568\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/03\/fb-events-manager.jpg#ZgotmplZ\" alt=\"Facebook events manager\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>If it doesn\u2019t work, be sure to check for possible error responses from Facebook by opening the request details in the Server container\u2019s Preview mode.<\/p>\n<h2 id=\"summary\">Summary<\/h2>\n<p>Setting up Facebook data collection using a GA4 data stream from the web to the Server container has its perks.<\/p>\n<p>The biggest one, by far, is that you won\u2019t be loading <em>any<\/em> Facebook JavaScript in the browser. This alone should make this convoluted data collection scheme worth the effort to set it up.<\/p>\n<p>You\u2019ll also be able to build a <em>consolidated<\/em> data collection model where redundancy is minimized. After all, the semantic content of conversion data whether to Facebook or to GA4 is always roughly the same \u2013\u00a0the keys and labels just have different names.<\/p>\n<p>It\u2019s still a fairly new and rough solution, though. For one, the Facebook server-side tag does not currently write the <code>_fbc<\/code> and <code>_fbp<\/code> cookies, so if you are <em>not<\/em> running Facebook JavaScript in the browser, it\u2019s possible these identifiers are lost. I\u2019ve <a href=\"https:\/\/github.com\/facebookincubator\/ConversionsAPI-Tag-for-GoogleTagManager\/issues\/5\">submitted an issue about this<\/a> to Facebook\u2019s GitHub project, so hopefully it will be sorted out at some point.<\/p>\n<p>It\u2019s also a bit of a chore to first allowlist the parameters for Facebook and then to blocklist them in GA4. But that\u2019s unavoidable for now. Perhaps at some point the Server container will give more tools for building parameter maps between Clients and tags, rather than having to add them one-by-one into all the tags separately.<\/p>\n<p>I hope you enjoyed this article. Once Facebook releases a way to leverage the <strong>Facebook web pixel<\/strong> to send data to the Server container, I will follow-up with another guide about this method, too. But personally I\u2019m a huge fan of piggy-backing off the GA4 tag due to the perks listed at the beginning of this chapter.<\/p>\n<p>What do you think about Facebook\u2019s entry into the Google Tag Manager Server container? What features are you missing?<\/p>\n<\/p><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Facebook has now officially released their Conversions API tag template for server-side tagging in Google Tag Manager. With this tag template, you can create a server-side tag that fires with any Client designed to parse requests into a unified event model. One such Client already exists, and every single Server container has it built-in: the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":71656,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[13966,20899,15100,18473,32680,11062,1725,5393],"dealstore":[],"offerexpiration":[],"class_list":["post-71655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-api","tag-conversions","tag-facebook","tag-ga4","tag-gtm","tag-server","tag-tags","tag-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Facebook Conversions API Using GA4 Web Tags And A GTM Server - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=71655\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Facebook Conversions API Using GA4 Web Tags And A GTM Server - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"Facebook has now officially released their Conversions API tag template for server-side tagging in Google Tag Manager. With this tag template, you can create a server-side tag that fires with any Client designed to parse requests into a unified event model. One such Client already exists, and every single Server container has it built-in: the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=71655\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-06T14:49:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1441\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=71655#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=71655\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Facebook Conversions API Using GA4 Web Tags And A GTM Server\",\"datePublished\":\"2025-02-06T14:49:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=71655\"},\"wordCount\":3644,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=71655#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg\",\"keywords\":[\"API\",\"Conversions\",\"Facebook\",\"GA4\",\"GTM\",\"Server\",\"TAGS\",\"Web\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=71655#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=71655\",\"url\":\"https:\/\/fivemor.com\/?p=71655\",\"name\":\"Facebook Conversions API Using GA4 Web Tags And A GTM Server - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=71655#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=71655#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg\",\"datePublished\":\"2025-02-06T14:49:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=71655#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=71655\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=71655#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg\",\"width\":2560,\"height\":1441},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=71655#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Facebook Conversions API Using GA4 Web Tags And A GTM Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Facebook Conversions API Using GA4 Web Tags And A GTM Server - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=71655","og_locale":"en_US","og_type":"article","og_title":"Facebook Conversions API Using GA4 Web Tags And A GTM Server - Som2ny Network","og_description":"Facebook has now officially released their Conversions API tag template for server-side tagging in Google Tag Manager. With this tag template, you can create a server-side tag that fires with any Client designed to parse requests into a unified event model. One such Client already exists, and every single Server container has it built-in: the [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=71655","og_site_name":"Som2ny Network","article_published_time":"2025-02-06T14:49:10+00:00","og_image":[{"width":2560,"height":1441,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=71655#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=71655"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Facebook Conversions API Using GA4 Web Tags And A GTM Server","datePublished":"2025-02-06T14:49:10+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=71655"},"wordCount":3644,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=71655#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg","keywords":["API","Conversions","Facebook","GA4","GTM","Server","TAGS","Web"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=71655#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=71655","url":"https:\/\/fivemor.com\/?p=71655","name":"Facebook Conversions API Using GA4 Web Tags And A GTM Server - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=71655#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=71655#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg","datePublished":"2025-02-06T14:49:10+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=71655#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=71655"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=71655#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/facebook-conversions-api-server-side-tagging-scaled.jpg","width":2560,"height":1441},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=71655#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Facebook Conversions API Using GA4 Web Tags And A GTM Server"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/71655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=71655"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/71655\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/71656"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=71655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=71655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=71655"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=71655"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=71655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}