{"id":392715,"date":"2026-10-28T19:03:01","date_gmt":"2026-10-28T19:03:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tagioo-for-woocommerce\/"},"modified":"2026-10-28T19:19:56","modified_gmt":"2026-10-28T19:19:56","slug":"tagioo-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tagioo-for-woocommerce\/","author":23592803,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.7.0","stable_tag":"2.7.0","tested":"7.1.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Tagioo Server-Side Tracking for WooCommerce","header_author":"Tagioo","header_description":"Server-side tracking for WooCommerce. Loads Google Tag Manager, pushes GA4 ecommerce events to the dataLayer and sends a server-side purchase hit to your server-side GTM container.","assets_banners_color":"201617","last_updated":"2026-10-28 19:19:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/tagioo.com\/woocommerce","header_author_uri":"https:\/\/tagioo.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":61,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.7.0":{"tag":"2.7.0","author":"sifatul92","date":"2026-10-28 19:19:56","revision":3771449}},"upgrade_notice":{"2.7.0":"<p>Security hardening and a fix for Bangladesh phone numbers sent to Meta.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3771442,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3771442,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3771442,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3771442,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.7.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3771442,"resolution":"1","location":"assets","locale":"","width":1280,"height":890},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3771442,"resolution":"2","location":"assets","locale":"","width":1280,"height":1190},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3771442,"resolution":"3","location":"assets","locale":"","width":1280,"height":828}},"screenshots":{"1":"Settings: GTM container, Custom Loader and cookie consent options.","2":"Server-side GTM settings and the ecommerce events to send to the dataLayer.","3":"The optional Tagioo cookie consent banner on a WooCommerce store."}},"plugin_section":[],"plugin_tags":[195844,193472,23294,219244,286],"plugin_category":[45],"plugin_contributors":[289313],"plugin_business_model":[],"class_list":["post-392715","plugin","type-plugin","status-publish","hentry","plugin_tags-conversions-api","plugin_tags-ga4","plugin_tags-google-tag-manager","plugin_tags-server-side-tracking","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-sifatul92","plugin_committers-sifatul92"],"banners":{"banner":"https:\/\/ps.w.org\/tagioo-for-woocommerce\/assets\/banner-772x250.png?rev=3771442","banner_2x":"https:\/\/ps.w.org\/tagioo-for-woocommerce\/assets\/banner-1544x500.png?rev=3771442","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tagioo-for-woocommerce\/assets\/icon-128x128.png?rev=3771442","icon_2x":"https:\/\/ps.w.org\/tagioo-for-woocommerce\/assets\/icon-256x256.png?rev=3771442","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tagioo-for-woocommerce\/assets\/screenshot-1.png?rev=3771442","caption":"Settings: GTM container, Custom Loader and cookie consent options."},{"src":"https:\/\/ps.w.org\/tagioo-for-woocommerce\/assets\/screenshot-2.png?rev=3771442","caption":"Server-side GTM settings and the ecommerce events to send to the dataLayer."},{"src":"https:\/\/ps.w.org\/tagioo-for-woocommerce\/assets\/screenshot-3.png?rev=3771442","caption":"The optional Tagioo cookie consent banner on a WooCommerce store."}],"raw_content":"<!--section=description-->\n<p>Ad blockers, Safari's tracking limits and closed browser tabs stop many purchases from ever reaching GA4, Meta or TikTok. <strong>Tagioo Server-Side Tracking for WooCommerce sends every paid order from your WordPress server to your own server-side Google Tag Manager (sGTM) container<\/strong>, so the sale is recorded even when the browser pixel never fires.<\/p>\n\n<p>It also gives your Google Tag Manager web container a complete GA4 ecommerce dataLayer, so you don't need a separate GTM plugin.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Server-side purchase hit.<\/strong> When an order is paid (or reaches Processing, for cash on delivery and bank transfer), the plugin sends a GA4 purchase event from your server to your sGTM container. It runs in the background, so checkout is never slowed down, and it tries again if your sGTM server is briefly unavailable.<\/li>\n<li><strong>GA4 ecommerce dataLayer.<\/strong> Pushes <code>view_item<\/code>, <code>view_item_list<\/code>, <code>search<\/code>, <code>add_to_cart<\/code>, <code>remove_from_cart<\/code>, <code>view_cart<\/code>, <code>begin_checkout<\/code>, <code>add_shipping_info<\/code>, <code>add_payment_info<\/code> and <code>purchase<\/code> with items, value and currency. Works with the classic checkout and the Cart and Checkout Blocks, including AJAX add to cart and quantity changes.<\/li>\n<li><strong>Customer data for better matching.<\/strong> Purchase events include the billing email, phone number (in international format), name and address, so your server tags can hash them and send them to Meta and TikTok. Logged-in shoppers' details are added to earlier events too.<\/li>\n<li><strong>No double counting.<\/strong> Browser and server events share an <code>event_id<\/code> (the WooCommerce order ID for purchases), which Meta and TikTok use to deduplicate them.<\/li>\n<li><strong>Longer-lasting Meta identifiers.<\/strong> Turns the <code>fbclid<\/code> from an ad click into the <code>_fbc<\/code> cookie on the landing page, keeps <code>_fbp<\/code> and <code>_fbc<\/code> as first-party cookies set by your server, and saves them on the order.<\/li>\n<li><strong>Google Tag Manager snippet.<\/strong> Adds your GTM container to every page. Turn it off if your theme or another plugin already loads GTM.<\/li>\n<li><strong>Cookie consent (optional).<\/strong> Show Tagioo's Accept \/ Reject banner with Google Consent Mode v2, or read the shopper's choice from CookieYes, Complianz, Cookiebot, OneTrust or the WP Consent API. The choice is sent with the server-side purchase hit so your sGTM tags can respect it.<\/li>\n<li><strong>Custom Loader (optional).<\/strong> Loads <code>gtm.js<\/code> from your sGTM domain instead of googletagmanager.com, for servers set up to serve it (Tagioo-hosted servers are).<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS).<\/li>\n<\/ul>\n\n<h4>What you need<\/h4>\n\n<ul>\n<li>WooCommerce.<\/li>\n<li>A Google Tag Manager web container whose tags (for example GA4, Meta Pixel and TikTok Pixel) use the dataLayer events above.<\/li>\n<li>A server-side GTM container on your own subdomain, such as <code>sgtm.yourstore.com<\/code>, with a GA4 client and the server tags you want (for example GA4, Meta Conversions API and TikTok Events API). You can host it yourself or use <a href=\"https:\/\/tagioo.com\">Tagioo<\/a>, which sets up both containers for you.<\/li>\n<li>Your GA4 Measurement ID and a GA4 Measurement Protocol API secret.<\/li>\n<\/ul>\n\n<p>Every feature in the plugin is free. Nothing is locked behind a licence or account, and it works with any server-side GTM container, not only Tagioo's.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the following services. Nothing is sent until you enter the matching setting on WooCommerce \u2192 Tagioo.<\/p>\n\n<h4>Google Tag Manager<\/h4>\n\n<p>When a GTM Container ID is set and \"Inject GTM snippet\" is on, every front-end page loads <code>https:\/\/www.googletagmanager.com\/gtm.js<\/code> (and the <code>ns.html<\/code> noscript iframe) from Google. Google receives the visitor's IP address, user agent and the page URL, and the tags you configure inside GTM decide what else is sent. If cookie consent is set to \"Wait for consent\", GTM loads only after the visitor accepts.\nGoogle Terms of Service: https:\/\/policies.google.com\/terms\nGoogle Privacy Policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<h4>Your server-side GTM container (sGTM domain)<\/h4>\n\n<p>When an sGTM domain, GA4 Measurement ID and API secret are set and \"Server-side purchase hit\" is on, the plugin sends one request per paid order from your server to <code>&lt;your sGTM domain&gt;\/g\/collect<\/code>. The request contains the order number and ID, total, tax, shipping, currency, coupon codes, line items, and the customer's billing email, phone, first and last name, city, state, postcode and country, customer ID, IP address, user agent, Meta <code>_fbp<\/code>\/<code>_fbc<\/code> values and (when consent is enabled) the shopper's marketing consent. Your sGTM container then forwards this data to the destinations you configure there, such as Google Analytics 4, the Meta Conversions API or the TikTok Events API.\nThe sGTM domain is chosen by you. If it is hosted by Tagioo, the Tagioo terms and privacy policy apply:\nTagioo Terms: https:\/\/tagioo.com\/terms\nTagioo Privacy Policy: https:\/\/tagioo.com\/privacy<\/p>\n\n<h4>Custom Loader<\/h4>\n\n<p>When \"Custom Loader\" is on, <code>gtm.js<\/code> and <code>ns.html<\/code> are loaded from <code>&lt;your sGTM domain&gt;\/tagioo-loader\/<\/code> instead of googletagmanager.com. The request goes to your sGTM domain, which passes it on to Google Tag Manager. The same Google and Tagioo terms above apply.<\/p>\n\n<h4>Destinations configured in your containers<\/h4>\n\n<p>Data forwarded by your GTM or sGTM containers is governed by those services' own terms, for example:\nMeta: https:\/\/www.facebook.com\/legal\/terms and https:\/\/www.facebook.com\/privacy\/policy\nTikTok: https:\/\/ads.tiktok.com\/i18n\/official\/policy\/terms and https:\/\/www.tiktok.com\/legal\/privacy-policy<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin sets these cookies on the store's own domain:<\/p>\n\n<ul>\n<li><code>_fbp<\/code>, <code>_fbc<\/code> \u2014 Meta browser and click identifiers (90 days). With the Tagioo consent banner they are only set after the shopper accepts.<\/li>\n<li><code>tagioo_consent<\/code> \u2014 the shopper's choice in the Tagioo consent banner (180 days).<\/li>\n<li><code>tagioo_q<\/code> \u2014 a short-lived flag (10 minutes) that tells the page an add\/remove-to-cart event is waiting to be sent.<\/li>\n<\/ul>\n\n<p>It saves the shopper's <code>_fbp<\/code>, <code>_fbc<\/code>, IP address, user agent and consent choice as order meta so the server-side purchase hit can send them later.<\/p>\n\n<p>You are responsible for telling shoppers about this tracking in your privacy policy and for choosing the cookie consent option your store needs.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Make sure WooCommerce is installed and active.<\/li>\n<li>In WordPress, go to <strong>Plugins \u2192 Add New Plugin<\/strong>, search for \"Tagioo Server-Side Tracking\", click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Tagioo<\/strong>.<\/li>\n<li><strong>GTM:<\/strong> enter your GTM container ID (<code>GTM-XXXXXXX<\/code>). If your theme or another plugin already adds GTM, untick <strong>Inject GTM snippet<\/strong> so it doesn't load twice.<\/li>\n<li><strong>Server-side GTM:<\/strong> enter your sGTM domain (for example <code>https:\/\/sgtm.yourstore.com<\/code>), your GA4 Measurement ID (<code>G-XXXXXXXXXX<\/code>) and a GA4 Measurement Protocol API secret. To create the secret, go to GA4 \u2192 Admin \u2192 Data streams \u2192 your web stream \u2192 Measurement Protocol API secrets \u2192 Create. The server-side purchase hit only runs when all three are filled in.<\/li>\n<li><strong>Events:<\/strong> all events are on by default. Untick any you don't want.<\/li>\n<li><strong>Cookie consent:<\/strong> leave it <strong>Off<\/strong>, choose <strong>Show Tagioo consent banner<\/strong>, or choose <strong>Use my own cookie banner plugin<\/strong> if your store already has one.<\/li>\n<li>Click <strong>Save Settings<\/strong>.<\/li>\n<\/ol>\n\n<h4>Check that it works<\/h4>\n\n<ol>\n<li>Open a product page with GTM Preview mode (Tag Assistant) running. You should see a <code>view_item<\/code> event with the product's name, price and currency.<\/li>\n<li>Place a test order and make sure it is paid or Processing. Within a few minutes the purchase should appear in GA4 Realtime, and in Meta Events Manager as a server event if your sGTM container sends to Meta.<\/li>\n<li>If it doesn't, check <strong>WooCommerce \u2192 Status \u2192 Logs<\/strong> for entries with the source <code>tagioo<\/code>.<\/li>\n<\/ol>\n\n<p>The server-side purchase hit is sent by WP-Cron, which runs when your site gets visits. On a store with very little traffic, a real server cron job makes the hit arrive sooner.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20tagioo%20account%3F\"><h3>Do I need a Tagioo account?<\/h3><\/dt>\n<dd><p>No. The plugin works with any server-side GTM container you control. Tagioo is one way to host one.<\/p><\/dd>\n<dt id=\"will%20purchases%20be%20counted%20twice%3F\"><h3>Will purchases be counted twice?<\/h3><\/dt>\n<dd><p>No. The browser purchase event and the server-side hit share the same <code>event_id<\/code> (the WooCommerce order ID), which Meta and TikTok use to keep only one of them. Make sure your browser pixel tags in GTM pass the <code>event_id<\/code> from the dataLayer. Both hits also carry the same GA4 <code>transaction_id<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20checkout%20block%3F\"><h3>Does it work with the Checkout Block?<\/h3><\/dt>\n<dd><p>Yes. Events fire on both the classic shortcode checkout and the Cart and Checkout Blocks.<\/p><\/dd>\n<dt id=\"can%20i%20change%20or%20skip%20the%20server-side%20hit%3F\"><h3>Can I change or skip the server-side hit?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>tagioo_server_purchase_params<\/code> filter. Return modified parameters, or <code>false<\/code> to skip the hit for an order.<\/p><\/dd>\n<dt id=\"where%20do%20i%20see%20errors%20from%20the%20server-side%20hit%3F\"><h3>Where do I see errors from the server-side hit?<\/h3><\/dt>\n<dd><p>The plugin tries each purchase up to five times, waiting a little longer each time (1, 2, 3 and 4 minutes). Failed attempts are logged in WooCommerce \u2192 Status \u2192 Logs under the source <code>tagioo<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>Renamed to Tagioo Server-Side Tracking for WooCommerce.<\/li>\n<li>Inline scripts and styles now use the WordPress script and style APIs.<\/li>\n<li>Escaping and input sanitizing hardened throughout.<\/li>\n<li>Phone numbers sent for ad matching now get the right country code for every country (WooCommerce's calling-code table), including Bangladesh (+880), North America and the Caribbean (+1), Russia and Kazakhstan (+7) and Italian landlines. The store's base country is used when an order has no billing country.<\/li>\n<li>Server-side hit errors now go to WooCommerce \u2192 Status \u2192 Logs.<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li>Optional cookie consent: Tagioo banner with Google Consent Mode v2, or read an existing banner plugin.<\/li>\n<li>Optional \"wait for consent\" GTM loading.<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>Added <code>view_item_list<\/code>, <code>search<\/code>, <code>view_cart<\/code>, <code>remove_from_cart<\/code>, <code>add_shipping_info<\/code> and <code>add_payment_info<\/code> events.<\/li>\n<\/ul>","raw_excerpt":"Send WooCommerce purchases to GA4, Meta and TikTok from your own server with server-side GTM, plus a complete GA4 ecommerce dataLayer.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/392715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=392715"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sifatul92"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=392715"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=392715"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=392715"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=392715"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=392715"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=392715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}