Logo of TAGGRS, written in blue and with a small favicon
HomeServer-side TrackingMeta CAPI Gateway
EnglishDeutsch
SERVER-SIDE TRACKING
Get started
Get started with TAGGRSSet up Google Tag ManagerConfigure the subdomainAdd the GTM Data LayerConfigure GTM transformationsTest the setupDebuggingAnalytics dashboard
Migrate from Google CloudMigrate from hosting
Shortcuts
GTM Copy PasteReady-made templates
GA4 Server-side Tracking
Setup in GTMCreate GA4 Event TagsGA4 tag setup in server containerE-commerce events in GTM
Google Ads Server-side Tracking
Install Conversion LinkerSet up Conversion TrackingConfigure Enhanced ConversionsDeploy Remarketing TagsInstall Offline Conversions
Facebook Server-side Tracking
Set Meta PixelImprove your EMQ ScoreInstall Meta CAPIMeta Events Deduplication
LinkedIn Server-side Tracking
Install LinkedIn Insight TagSet up LinkedIn CAPILinkedIn Events Deduplication
TikTok Server-side Tracking
Set up TikTok PixelInstall TikTok Events APITikTok Events Deduplication
Pinterest Server-side Tracking
Set up Pinterest TagConfigure Pinterest Conversions APIPinterest Events Deduplication
Snapchat Server-side Tracking
Set up Snap PixelSnapchat Conversions APISnapchat Events Deduplication
TAGGRS Tracking Tags and Tools
Tracking TagsGoogle Service Account integrationProfit TrackingData Enricher ToolWebhooks TesterEnhanced Tracking ScriptMulti Domain ToolClick ID RecoveryConsent Approval GraphProfit Feed Tool
Configurations
Billy Grace Server-side TrackingLeadPages Server-side TrackingPiwik PRO Server-side TrackingCDN Server-side TrackingShopify Server-side TrackingActiveCampaign Server-side TrackingKlaviyo Server-side TrackingSpectacle Server-side TrackingEulerian Server-side TrackingSame origin tracking with Cloudflare
Server-side Tracking for e-commerce
Shopify Data LayerShopware Data LayerMagento Data LayerWooCommerce Data LayerPrestashop Data LayerLightspeed Data Layer
Consent Management server-side
Activate Consent ModeConfigure AxeptioConfigure Cookie Confirm
META CAPI GATEWAY
ACCOUNT SETTINGS
User roles and accessSSO

Profit Feed Tool

In this guide, you will learn how to set up the Profit Feed Tool, so your conversion tags report the profit of an order instead of its revenue.

The Profit Feed Tool reads a product feed that contains cost price, regular price and VAT per product. When a purchase event reaches your server container, the tool looks up every item in the order, calculates the margin and returns the profit for that order as a single variable. You can then use that variable as the conversion value in Google Ads, Meta and, optionally, GA4.

Because the lookup happens entirely in the server container, cost prices and margins never reach the browser. The main practical difference with a client-side setup is that your margin data stays in your own infrastructure, while the ad platforms still receive a value they can bid on.

If you already maintain a product feed in Channable or a comparable feed tool, this is the fastest route to profit-based measurement. It reuses the feed you have, instead of requiring a separate database.
Prerequisites
  • A TAGGRS account with a configured server container.
  • A feed tool such as Channable, with your shop system as the source.
  • Cost price filled in per product in your shop system.
  • A purchase event that reaches the server container, including item data.
  • Google Ads and/or Meta conversion tags configured in the server container.

Step-by-step setup

1. Make sure the product data is correct

The feed can only calculate margin on the products that actually carry a cost price, so start at the source.
  • Use Shopify as the source via Channable or another feed tool.
  • Check that products have a cost price filled in inside Shopify.
Products without a cost price will either be skipped or return a profit of 0. It is worth exporting a quick list of products with an empty cost price before you continue, so you know in advance which part of your assortment will not be measured.

2. Create a new JSON feed in Channable or another feed tool

Add at least these fields:
  • Product ID
  • Cost price
  • Regular price
  • VAT
For VAT:
  • Set this to 0 manually for now if it isn't available yet.
Keep the feed limited to these fields. The tool does not use titles, images or descriptions, and a smaller feed syncs faster and is easier to debug.

3. Check the product ID mapping

The feed and the events sent to the advertising channels must speak about products in the same way.
  • Check which ID is used in the advertising channels.
  • In this example, the shopping feed works with a numeric ID, with SKU as the secondary identifier.
  • Make sure the Channable or other feed tool uses the same ID as Google Ads/Analytics.
Shopify exposes several identifiers (product ID, variant ID, SKU), and shopping feeds often use a different one than the data layer. Decide which identifier is leading, then align the feed to it.

4. Test whether the feed returns data

  • Open the JSON feed and check that the fields are populated.
  • Pay particular attention to Product ID, Cost price and Regular price.
Open the feed URL directly in your browser and inspect a handful of products, including a variant product and a discounted product. An empty or null cost price at this stage will surface later as a profit of 0 in your conversions.

5. Add the feed in TAGGRS

  • Go to Integrations in TAGGRS.
  • Add the feed URL there.
  • Secure the feed with a password.
  • Use that same password later in Tag Manager.
The password prevents your cost prices from being publicly accessible at the feed URL. Store it somewhere you can retrieve it, because you need the exact same value when you configure the variable in step 7.

6. Import the template in server-side Tag Manager

  • Open the server container.
  • Go to Variable Templates.
  • Import the template provided.

7. Create the profit feed variable

Create a new variable in the server container:
  • Name: for example, profit feed.
  • Product ID field: TAGGRS container identifier.
  • Item ID: link this to the product ID you also use in your feed.
  • API secure field: the password of the feed.

8. Make sure item data is sent correctly

  • Check in preview/debug which item_id is being sent.
  • Make sure this matches the ID in the profit feed.
Run a test purchase in preview mode and compare the item_id in the incoming event with the product ID in the feed, character for character.

A mismatch will return no margin, which is harder to spot than a broken tag.

9. Use the profit variable in conversions

  • The output of the variable is the profit per order.
  • Use that value in Google Ads conversions, Meta and, optionally, in GA4.
Set the variable as the conversion value parameter in the tags concerned. From that point on, the value the platform optimizes towards is margin, not turnover.

10. Check the configuration in TAGGRS

Open the feed integration in TAGGRS to check its configuration status.

Here, you can see:
  • Whether the feed is configured.
  • How many products have been synced.
  • When the feed was last updated.
If the product count is lower than expected or the last update is old, the feed or mapping need your attention.

Tips

Keep profit margin server-side

To prevent margin data from becoming visible on the frontend of your website, don't send profit margin through the web container. 

Anything passed through the web container ends up in the browser and can be read by visitors, competitors and browser extensions. Keeping the lookup in the server container is what makes profit tracking safe.

Measure first, then optimize

Make sure the data comes in correctly before activating bidding or optimization on profit.

Switching bidding to a value that is not yet verified will train the campaign on incorrect data. Let profit values come in for a full conversion cycle, verify them against your actual order data, and only then hand them to the bidding algorithm.

Optional: send profit to GA4

Create a second GA4 configuration or measurement setup for profit tracking to be able to analyze revenue and profit in parallel.

Keeping profit in a separate configuration means your existing revenue reporting stays intact, so historical comparisons remain valid while you build up profit data alongside it.
Logo of TAGGRS Server-side Tracking: a light blue circle with two blue angle brackets
Learn more about profit tracking: POAS vs ROAS: which metric tells you if your ads are profitable?

FAQ

What is the difference between the Profit Feed Tool and Profit Tracking?

Both send profit as the conversion value. Profit Tracking looks up the margin in a Firestore database via a Google Service Account. The Profit Feed Tool looks it up in a product feed that you already maintain in a feed tool such as Channable, which means no Google Cloud project is needed.

What happens to products without a cost price?

They return no margin, so the profit contribution of those items is 0. Fill in the cost price in your shop system and wait for the next feed sync.

Why is my profit value 0 or empty?

In most cases, the item_id in the event does not match the product ID in the feed. Check steps 3 and 8 before looking anywhere else.

Do I need Server-side Tracking for this?

Yes. The variable runs in the server container, which is also what keeps your margin data out of the browser.

Useful resources

icon of a white thunder used by TAGGRS to visually introduce Server-side Tracking
Profit Tracking
icon of a white upward arrow
icon of a white thunder used by TAGGRS to visually introduce Server-side Tracking
Shopify Data Layer
icon of a white upward arrow
icon of a white thunder used by TAGGRS to visually introduce Server-side Tracking
Google Ads Conversion tracking
icon of a white upward arrow
White silhouette of a person used as icon for the support call to action
Get expert support
icon of a white upward arrow
Previous
Consent Approval Graph by TAGGRS
Next
Billy Grace Server-side Tracking
DOCUMENTATION V1.4
Copyright © 2026 TAGGRS. All right reserved.
SERVER-SIDE TRACKING
Get started
Get started with TAGGRSSet up Google Tag ManagerConfigure the subdomainAdd the GTM Data LayerConfigure GTM transformationsTest the setupDebuggingAnalytics dashboard
Migrate from Google CloudMigrate from hosting
Shortcuts
GTM Copy PasteReady-made templates
GA4 Server-side Tracking
Setup in GTMCreate GA4 Event TagsGA4 tag setup in server containerE-commerce events in GTM
Google Ads Server-side Tracking
Install Conversion LinkerSet up Conversion TrackingConfigure Enhanced ConversionsDeploy Remarketing TagsInstall Offline Conversions
Facebook Server-side Tracking
Set Meta PixelImprove your EMQ ScoreInstall Meta CAPIMeta Events Deduplication
LinkedIn Server-side Tracking
Install LinkedIn Insight TagSet up LinkedIn CAPILinkedIn Events Deduplication
TikTok Server-side Tracking
Set up TikTok PixelInstall TikTok Events APITikTok Events Deduplication
Pinterest Server-side Tracking
Set up Pinterest TagConfigure Pinterest Conversions APIPinterest Events Deduplication
Snapchat Server-side Tracking
Set up Snap PixelSnapchat Conversions APISnapchat Events Deduplication
TAGGRS Tracking Tags and Tools
Tracking TagsGoogle Service Account integrationProfit TrackingData Enricher ToolWebhooks TesterEnhanced Tracking ScriptMulti Domain ToolClick ID RecoveryConsent Approval GraphProfit Feed Tool
Configurations
Billy Grace Server-side TrackingLeadPages Server-side TrackingPiwik PRO Server-side TrackingCDN Server-side TrackingShopify Server-side TrackingActiveCampaign Server-side TrackingKlaviyo Server-side TrackingSpectacle Server-side TrackingEulerian Server-side TrackingSame origin tracking with Cloudflare
Server-side Tracking for e-commerce
Shopify Data LayerShopware Data LayerMagento Data LayerWooCommerce Data LayerPrestashop Data LayerLightspeed Data Layer
Consent Management server-side
Activate Consent ModeConfigure AxeptioConfigure Cookie Confirm
META CAPI GATEWAY
ACCOUNT SETTINGS
User roles and accessSSO
SERVER-SIDE TRACKING
Get started
Get started with TAGGRSSet up Google Tag ManagerConfigure the subdomainAdd the GTM Data LayerConfigure GTM transformationsTest the setupDebuggingAnalytics dashboard
Migrate from Google CloudMigrate from hosting
Shortcuts
GTM Copy PasteReady-made templates
GA4 Server-side Tracking
Setup in GTMCreate GA4 Event TagsGA4 tag setup in server containerE-commerce events in GTM
Google Ads Server-side Tracking
Install Conversion LinkerSet up Conversion TrackingConfigure Enhanced ConversionsDeploy Remarketing TagsInstall Offline Conversions
Facebook Server-side Tracking
Set Meta PixelImprove your EMQ ScoreInstall Meta CAPIMeta Events Deduplication
LinkedIn Server-side Tracking
Install LinkedIn Insight TagSet up LinkedIn CAPILinkedIn Events Deduplication
TikTok Server-side Tracking
Set up TikTok PixelInstall TikTok Events APITikTok Events Deduplication
Pinterest Server-side Tracking
Set up Pinterest TagConfigure Pinterest Conversions APIPinterest Events Deduplication
Snapchat Server-side Tracking
Set up Snap PixelSnapchat Conversions APISnapchat Events Deduplication
TAGGRS Tracking Tags and Tools
Tracking TagsGoogle Service Account integrationProfit TrackingData Enricher ToolWebhooks TesterEnhanced Tracking ScriptMulti Domain ToolClick ID RecoveryConsent Approval GraphProfit Feed Tool
Configurations
Billy Grace Server-side TrackingLeadPages Server-side TrackingPiwik PRO Server-side TrackingCDN Server-side TrackingShopify Server-side TrackingActiveCampaign Server-side TrackingKlaviyo Server-side TrackingSpectacle Server-side TrackingEulerian Server-side TrackingSame origin tracking with Cloudflare
Server-side Tracking for e-commerce
Shopify Data LayerShopware Data LayerMagento Data LayerWooCommerce Data LayerPrestashop Data LayerLightspeed Data Layer
Consent Management server-side
Activate Consent ModeConfigure AxeptioConfigure Cookie Confirm
META CAPI GATEWAY
ACCOUNT SETTINGS
User roles and accessSSO