Meta CAPI for Shopify via server GTM

Ivanna Holubovska

Ivanna Holubovska

Author
Updated
Oct 27, 2025
Set up tracking without extra work. With Stape's Conversion Tracking app for Shopify and Setup Assistant, you can install server-side GTM in minutes, get all core eCommerce events created automatically, and load prebuilt tags for Google, Meta, TikTok, and more. Events run through Stape’s server-side tracking platform, letting you recover up to 40% more conversions and increase ROAS.

Step 1. Configure server Google Tag Manager container

1.1. Open your WEB Google Tag Manager container.

Click Admin. Under the container column, click +

Set up server GTM

1.2. Type the container name, choose Server, and click Create.

Set up server GTM

1.3. Choose Manually provision tagging server, copy your container config and paste it in any text editor. We will need it for the next steps.

Set up server GTM

1.4. Create a stape.io account or log in to your existing one.

Log in or sign up to access Stape

1.5. In Stape’s admin dashboard click Create container on the top right. 

Log in or sign up to access Stape

1.6. Enter your container details:

  • Container name. The name does not necessarily have to be the same as the container name in your server GTM.
  • Container configuration - paste Container Config that you copied from your Google Tag Manager Server Container.
  • Server location - for best performance, choose the server location that’s closest to where most of your clients are. See the list of available server locations here. If you have traffic from different regions, you can select the Global multi-zone server location option. It will automatically route incoming requests to the nearest available zone based on the user’s IP address.

Then click Create Container.

New container

1.7. Choose a plan for your container. You can start with a Free plan

Stape pricing plans

1.8. You will see the status of your container, container config, and plan name. 

It takes around 5 minutes to deploy a server container. Please reload the page to update the status. If the Google Tag Manager server-side setup was done correctly, you should see the status “Running”. 

Running container on Stape

Step 2. Set up Custom Loader in Stape admin

Custom Loader modifies gtag.js and gtm.js loading paths to resist ad blockers and ITPs, potentially increasing data volume by up to 40%.

2.1. Find and copy your WEB GTM ID in GTM. 

To find GTM ID log in to your Google Tag Manager account and open a Web GTM container. In the top right corner (next to the Submit and Preview buttons) you’ll see some short text that starts with "GTM-" and then contains some letters/numbers.

Find and copy your WEB GTM ID in GTM 

2.2. Open your sGTM container on Stape →  Click Power-Ups.

Find Custom Loader and click Configure.

Custom Loader and click Configure

2.3. Add the following settings:

Domain - from the list of domains connected to your container, select the necessary ones. 

Web GTM ID - add web Google Tag Manager ID. Check out how to find web GTM ID in our guide.

GA4 ad block bypass - enables bypassing adblockers' impact on the GA4 tracking code. Note that this setting will affect all container domains. Be sure to debug both the web and server GTM containers after enabling this toggle.

Same Origin Path - if you are using same origin approach for configuring custom domain, please specify the proxy path for requests. Learn more.

Platform - the custom loader code differs for each platform. Select Shopify, click generate and follow the steps on the right.

Custom Loader and click Generate

Step 3. Configure Stape's Conversion Tracking App for Shopify

Step 1. Set up the server Google Tag Manager container on Stape

Expand the collapse element below for the detailed guide on how to do it. 

Step 2. Add and configure Stape's Conversion Tracking app for Shopify 

2.1 Install the Stape Conversion Tracking app in the store

The Stape's Converversion Tracking app for Shopify can be installed for free from the Shopify marketplace

Stape Conversion Tracking app in the Shopify store

2.2 Configure General tab

In the Generate tab are all the settings related to adding the GTM snippet on all pages of your Shopify shop in a way that makes it resistant to ad blockers / ITP / cookie lifetime limitations before installing it on all pages of your Shopify shop.

General tab settings
  • Use Shopify Markets

Check the box if you have multiple Shopify markets. Using the feature, you can configure GTM injection separately for each Shopify market. If the feature is disabled, all markets use the default setup.

When enabled, you will see the fields required to configure for each market:

  • Insert GTM - if checked, the GTM snippet is added to each website page.
Container ID in GTM
  • Customer privacy API - if enabled, the app holds GTM loading until the visitor accepts cookies through Shopify's Customer Privacy banner. By default, the option isn't recommended.
  • Custom domain, Stape container ID, and Cookie Keeper - the fields are associated with server-side tracking; you need to configure them if you use/going to use the server-side setup. Below, we explain where to find values for each field.
GTM injection config
  • GTM web container ID

Here, you need to specify your GTM web container ID.

Web container ID in GTM
  • Custom domain

It is extremely important to use your own subdomain for first-party cookies to work correctly and for tracking to work in general. If you do not already have a subdomain added to your sGTM container, you can follow the guide on custom domains to add it.

  • Custom Loader

Its use is highly recommended to increase protection against ad blockers.

Click on the corresponding check box and specify your Stape container identifier. To find it, log in to your Stape account, select the sGTM container, and find the container identifier in the Settings section.

Container identifier in the "Settings" section
  • Cookie Keeper

The power-up allows you to minimize the impact of the latest ITP restrictions. Before activating this feature via the app, make sure you have it enabled in Stape in your container. To configure Cookie Keeper, click on the collapse element below and follow the instructions:

  • GTM snippet block

Here you can take the GTM snippet to install it on pages that are outside of your Shopify theme (such as pages made by third-party apps like Zipify).

2.3 Set up Data Layer tab

In the Data Layer tab, you can find the data layer events to activate and configure. The second box gives you control over whether event names get the _stape suffix to prevent any clashes in GTM. If it's off, events keep their normal names.

"Data Layer" tab

Data layer activation:

  • Activate the Add ecommerce Data Layer events checkbox.
  • Save changes.
  • Copy the code for the custom pixel in the box below on the data layer tab and follow the instructions to add and activate it.

In the Customer privacy section, under Permission spoiler, please make sure to select Not required. The code snippet only generates the Data Layer; it does not set any cookies or report any data to third parties.

In the Data Layer tab of the app, there is also an option Log events to console (Dev), which is a debugging option for developers and store admins. When enabled, it logs eCommerce events in the browser console, shows event payloads sent to the GTM/Stape server container for verification, and helps debug Data Layers.

This option is for development only and should be disabled in production to avoid unnecessary console logging.

"Log events to console (Dev)" checkbox

2.4 Configure Webhooks tab

Webhook events are configured in the Webhook tab.

Note: the problem with webhooks on Shopify is that they don't contain any cookie data, which is crucial for tracking any platform, so using webhook events is only recommended as a last resort if you, for some reason, can't track it online.

This tab is where the webhook events are configured.

"Webhook" tab

To activate a webhook, you need to activate the checkbox, specify the URL of the server GTM container, and /path where the webhooks should be sent.

You can subscribe to webhooks when a new order is created or when a refund is made on an order.

Here are some useful blog posts we have about using and debugging webhooks:

2.5 The Customer Match tab

Skip the configuration in this tab if you don't run Google Ads campaigns or don't use Customer Match lists.

Step 3. Send data to the server Google Tag Manager container 

There are two most popular ways to do that:

Step 4. Configure tracking inside the server Google Tag Manager container 

Most popular marketing and analytics tools already support server-side tagging and have tags for sGTM. You can find guides on our site to implement those, for example, Facebook CAPI, TikTok events API, Snapchat Conversions API, Google Ads server-side tracking, etc.

Step 5. Test the app configuration

Debugging a GTM download

After activation or any changes, it is recommended to check if your container is actually uploaded to the site.

To do this, go to any page on your site, open your browser console, and in the network tab, filter by your subdomain/tagging server URL. You should see a request like in the following screenshot with a response status 200:

"Network" tab in browser console

Debugging data layer checkout events

With events that happen before the checkout page, everything works like on any other platform - you can launch a preview of your GTM web container and find all the events you do:

Events in the web GTM Preview mode

The checkout events won't be displayed in GTM Preview due to the isolated environment on these pages that blocks unrestricted DOM manipulation or script injection, including the GTM snippet.

But you can manually insert the snippet on the checkout page using the Stape GTM Helper Chrome extension:

  • After running Preview Mode in GTM, turn on the toggle Shopify Sandbox dataLayer in the Settings tab of the extension.
  • In the tab Inject GTM, click Enable injection, add your domain name, and GTM ID. Save changes.
Inserting the snippet on the checkout page manually

Now, the events on the checkout page will display in GTM Preview.

Checkout page events in the web GTM Preview mode

Step 4. Download and Import container templates from our GitHub

4.1. Download GTM templates for Shopify on our GitHub.

GTM templates for Shopify

4.2. You should import the templates in both your web and server container on GTM (process is the same across the two). You need to go Admin → Import Container:

GTM templates for Shopify
GTM templates for Shopify

4.3. Select your template file (make sure the template matches the container type - web/server).

4.4. Pick a workspace for this import (you can create a new one for this specific purpose).

4.5. Select Overwrite or Merge.

Select Overwrite or Merge
“Overwrite” option should only be used in a fresh, empty container or if you are absolutely certain you want to do it. For this demo we’re using Merge, with “Rename conflicting tags, triggers and variables” option selected. This way, if there are any conflicts - GTM will just rename the tags, thus not touching any of the existing entities you have in your container.

Step 5. Сonfigure GTM container templates

5.1. Templates are fully built, so triggers, payloads, and event names are all taken care of for you. 

You just need to input your specific destinations, ids, API keys etc. We’ve tried to make it as comfortable as possible, so in both containers (web and server), you will find a folder called “[Stape] _Settings”.

Web

Web Сonfigure GTM container templates

Server

Server Сonfigure GTM container templates

All these variables are already referenced in tags that use them; you just need to give them proper values, for example:

Proper values for variables

5.2. Pixel ID and API token can found in your pixel settings:

Pixel ID and API token
Pixel ID and API token

5.3. Once you’ve changed all these variables and saved them, your last step (assuming this a new container) is to add a preview URL in your server container by going to Admin → Container Settings. If the container is not new, just skip this step.

Add a preview URL in your server container

Step 6. Test the setup

Facebook provides the ability to test Browser and Server events. That is very useful if you set up Facebook pixel using GTM Server for the first time and wish to check that all data tracked correctly. When working on a Shopify store, this process is often referred to as setting up the Facebook CAPI Shopify, since events are sent server-side instead of relying only on the browser.

6.1. First, you need to obtain test_event_code. For this, you need to log into your Facebook manager, choose the data source that you liked to test, and open the tab “Test events”. There you will find the test event code. It can look like this: TEST2120

test_event_code

Note: TEST id will change once in a couple of hours, if your debug sessions are spread in time make sure to check the value you’re using is still valid.

6.2. Fill the LT - Map | Debug Mode → FB Test ID variable, in your server container, with the test event code that you get from the previous step.

Look up table variable

This variable is already referenced in all Facebook tags. Variable will also only populate the tag in preview mode, so you don’t necessarily need to remove it before going live.

6.3. Launch preview mode on both your containers (web & server) If done right, you will see both web and server test events on the Facebook Test Event page.

 Facebook Test Event page

Ready to start with server-side?

You are awesome! Click on Try for free to sign up and explore all the benefits.

Try for free
author

Ivanna Holubovska

Author

Ivanna is a Lead Content Manager at Stape and a certified author on Clutch and KyivPost. She writes high-quality content on server-side tracking to help businesses optimize strategies and analytics.

Comments

Try Stape for all things server-side