--- title: "WordPress/WooCommerce" slug: "wordpress-woocommerce" status: "update" updated: 2025-06-17T09:57:15Z published: 2025-06-17T09:57:15Z canonical: "docs.mapp.com/wordpress-woocommerce" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.mapp.com/llms.txt > Use this file to discover all available pages before exploring further. # WordPress/WooCommerce This plugin connects your WordPress or WooCommerce website with Mapp Intelligence, enabling the tracking of user interactions and e-commerce behavior. It provides the following features: - Basic tracking for WordPress pages and posts - Advanced tracking of shop interactions in WooCommerce, such as product views, cart events, and orders - Integration with Mapp Tag Integration or Google Tag Manager - Access to a flexible data layer (`window._ti`) for customization and analysis If you prefer using Google Tag Manager instead of Tag Integration, you can find all details here: [GTM Setup for WordPress / WooCommerce](/v1/docs/google-tag-manager-in-conjunction-with-wordpress-woocommerce) --- ## Installation Learn how to install the Mapp Intelligence plugin in your WordPress instance. ### Installation via the WordPress UI Log in to WordPress as admin and go to your dashboard. Then click "Plugins" and "Add New" and search for "Mapp Intelligence". Once found, click the "Install Now" button. ### Manually Uploading the WordPress Plugin [Download](https://de.wordpress.org/plugins/mapp-intelligence) the plugin from the WordPress plugin website and unzip its content in your WordPress plugin directory, e.g. wp-content/plugins. Then, log in to WordPress as an admin, go to Plugins in the main menu and click "activate" under the Mapp Intelligence entry in *Installed Plugins*. --- ## Configuration After activating the Mapp Intelligence plugin in WordPress, you find the entry "Mapp Intelligence" under "Plugins" in the main menu of your dashboard. ![](https://cdn.document360.io/554b9b98-6720-4d8b-9919-c7b203d72648/Images/Documentation/fcdb6a09-7019-4e5e-92e9-8850297bfd8f.png) | Option | Description | | --- | --- | | Mapp Intelligence Pixel Version | Choose whether you want to use **Tag Integration (V5)** or [**Google Tag Manager**](/v1/docs/google-tag-manager-in-conjunction-with-wordpress-woocommerce) as your integration method. | | Tag Integration ID | Enter the **Tag Integration ID** provided by Mapp. | | Tag Integration Domain | You can use a **custom responder domain** for improved data quality. If you do not have one, keep the default: responder.wt-safetag.com. | | Exclude keys | The plugin creates a global JavaScript object called `_ti`, which holds tracking information. This option allows you to exclude specific keys from the `_ti` data layer. Enter key names separated by commas. By default, the key `customFields` is excluded, as it may contain data from other plugins. Only remove this key if you explicitly want to allow such data. | | Exclude users | Enable this option if you want to exclude users who are logged in to the WordPress admin area. Tracking is never performed inside the admin panel, but **previewing pages from there is tracked by default**. | --- ## Data layer The Mapp Intelligence Plugin creates an object called "_ti" in a global context. In Tag Integration, you can map the keys in the parameter section. For example, _ti.pageName stores the URL of the current page. To map this key as the name of the page, create a parameter like so: ![](https://cdn.document360.io/554b9b98-6720-4d8b-9919-c7b203d72648/Images/Documentation/7166732e-758b-4663-8a7d-912c39c22b2f.png) Then, in your Mapp Intelligence plugin, map it under *Page > Page name*: ![](https://cdn.document360.io/554b9b98-6720-4d8b-9919-c7b203d72648/Images/Documentation/1e49076a-379a-4bd0-9fb4-04016c110545.png) Now, all track requests will receive the name of the page from the `_ti` data layer object. The plugin automatically creates the following keys in the data layer object. ### WordPress: Tracked Data | key | notes | | --- | --- | | `pageName` | URL without the HTTP(s) protocol URL parameters | | `pageTitle` | Title of the page. | | `language` | Language code. | | `contentCategory` | Values can be page, post, product, etc. | | `contentSubcategory` | Values can be single-page, single-post, category-post, etc. | | `orderBy` | On archive pages only. "default" if no particular order is set. | | `pageNumber` | On archive pages only. | | `internalSearch` | On search result pages only: search term. | | `numberSearchResults` | On search result pages only: the number of search results as a string. | | `taxonomies` | Categories are sorted from lowest to highest level. To map the lowest level, use `_ti.taxonomies.category[0]`. If you want to map the second tag, you would use `_ti.taxonomies.post_tag[1]`. Plugins and Themes might add additional taxonomies that will show up here if there are values available for the current post/page. | | `customerId` | If the user is logged in, here is the MD5 hash of the email address. | | `userRoles` | The array of user role names. | | `customFields` | This key is blacklisted by default. Here you can find data from your plugins and themes, some of which might contain personal data. That's why this key should only be whitelisted if you really need certain data from your plugins/themes in your data layer. | ### Customizing the Data Layer You can modify the `_ti data layer` before it is sent to the browser – for example, to add dynamic values that are only available server-side. To do this, use the WordPress filter `mapp_datalayer_before_create`. This filter gives you access to the original data layer array, which you can extend or adjust as needed. > [!WARNING] > Avoid overwriting existing keys unless you are certain. Refer to the full key list above to prevent conflicts. **Example** ```php add_filter('mapp_datalayer_before_create', function($datalayer) {    $datalayer['someKey'] = 'someValue';    return $datalayer; }); ``` ### WooCommerce: Product Tracking | key | notes | | --- | --- | | `productName` | Human-readable title of the product. | | `productCost` | Cost of the product. | | `productId` | WooCommerce ID of the product. | | `productSKU` | Product SKU. | | `currency` | Currency code (ISO 4217). | | `productQuantity` | Amount of products - only during order. | | `shoppingCartStatus` | "view" on the single product page, and right before adding a product to basket from product lists. "add" when adding to basket, and "conf" after order. | | `productSoldOut` | '1' in case the product is sold out. | | `productCategory` | Highest level of product categories. | | `productSubCategory` | 2nd level of product categories. | | `productCategories` | Array with all product category levels - in case you have more than two levels, you can use this. For example, if you want to map a level 3 category, you can do this with "_ti['productCategories'][2]". The Index is always one value lower than the level of the category. | | `productAttributes` | Only for product variations: an object with product variation data. | | `products` | Array with all products from product lists. Each object has the keys like a normal product (productName, productCost, etc.). | | `pageRequestType` | Populated with value 'virtual' when adding a product to the basket via AJAX (product lists, related products...). The first one is a product view, the second one is the add-to-basket. This ensures no product is added to the basket without first being viewed. Use this parameter to filter out artificial views used only for tracking consistency. | ### WooCommerce: Order Tracking | key | notes | | --- | --- | | `orderId` | WooCommerce Order ID. | | `totalOrderValue` | Order value, incl. tax and shipping. | | `subtotalOrderValue` | Order value without tax and shipping. | | `taxValue` | Tax of order. | | `couponValue` | Value of a coupon, if available. | | `shippingMethod` | Name of the shipping provider. | | `shippingCost` | Shipping cost for the order. | | `paymentMethod` | Name of the payment provider. |