---
title: How to install the Serverside Hybrid Universal Integration script on your website
description: Follow the steps below to install the Serverside Hybrid Universal Integration script on your website.
---

[Skip to content](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#main-content)

[![ProfitMetrics logo black version](https://knowledge.profitmetrics.io/hs-fs/hubfs/pm_logotype_blue.png?width=193&height=28&name=pm_logotype_blue.png)](https://knowledge.profitmetrics.io/?hsLang=en)

Open main navigation

Close main navigation

- [Contact Support](https://knowledge.profitmetrics.io/kb-ticket/new)

[Contact Support](https://knowledge.profitmetrics.io/kb-ticket/new?hsLang=en)

 How can we help you?

- There are no suggestions because the search field is empty.

1. [Knowledge base](https://knowledge.profitmetrics.io/?hsLang=en)
2. [E-commerce Platforms](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en)
3. [Universal Integration (Server-side Hybrid)](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#universal-integration-server-side-hybrid)

# How to install the Serverside Hybrid Universal Integration script on your website

## Follow the steps below to install the Serverside Hybrid Universal Integration script on your website.

#### Last updated: 2025-02-10

The ProfitMetrics Serverside Hybrid Universal Integration is a universal integration which allows for ProfitMetrics to be implemented into any e-commerce platform that is not supported natively. The integration consists of two parts. Part 1 of the integration refers to the sending of orders to ProfitMetrics according to our documentation. Part 2 is to implement the tracking script to capture statistical and marketing-related tracking parameters from the browser and pair these with the orders.

**Alternatively, you can set it up via Google Tag Manager.**  
[How to install the Serverside Hybrid Universal Integration script in Google Tag Manager.](https://knowledge.profitmetrics.io/how-to-set-up-serverside-hybrid-universal-integration-through-google-tag-manager?hsLang=en)

**See this article if you haven't built your integration with ProfitMetrics yet:** [Sending orders to profitmetrics serverside](https://knowledge.profitmetrics.io/how-to-setup-serverside-hybrid-universal-integration?hsLang=en#Part1)

---

[Part 1: Implement script on All pages](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#part1)

- [Public ID](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#publicid)
- [Email input selector](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#emailinputselector)
- [Consent Control](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#consentcontrol)
- [Cross-Subdomain Tracking](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#crosssubdomaintracking)
- [Klarna Checkout (Optional)](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#klarnacheckout)
- [onLoad Event](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#onloadevent)
- [setEmail Event](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#setemailevent)

[Part 2: Implement setEmail event to capture email when using a third-party checkout.](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#part2)

[Part 3: Complete code for known CMP's](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#part3)

- [Cookiebot](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#bookiebot)
- [CookieInforation](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#cookieinforation)
- [CookieYes](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#cookieyes)
- [CookieFirst](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#cookiefirst)
- [CookieScript](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#cookiescript)
- [OneTrust](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#onetrust)

[Part 4: Confirm the integration](https://knowledge.profitmetrics.io/how-to-install-the-serverside-hybrid-universal-integration-script#part3)

---

### Part 1: Implement script on All pages

When implementing the tracking script on your website it is important that you know which Consent Management Platform (CMP) you are using. ProfitMetrics script automatically supports the following platforms:

**Supported Consent Management Platforms (CMP):**

- Cookieinformation.com
- Cookiebot.com
- DanDomain / SmartWeb / ScanNet / WannaFind / HostedShop

1. **PUBLIC ID**  
   Copy the following script and place it the \<head\>\</head\> section of your website. Remember to replace **PUBLIC\_ID** with your Public ID found in ProfitMetrics under Websites and replace **.class-name** as described in the next step.
   
   ```
   <!-- Start ProfitMetrics - Script --><script>window.profitMetrics = {pid: 'PUBLIC_ID', // Your Public ID}</script><script src="https://cdn1.profitmetrics.io/PUBLIC_ID/bundle.js"defer></script><!-- End ProfitMetrics - Script -->
   ```
2. **EMAIL INPUT SELECTOR**  
   The next step is to add the emailInputSelector field like this:
   
   ```
   emailInputSelector: '.class-name',
   ```
   
    Replace **".class-name"** with a comma-separated list of the CSS selectors of those email input fields. You can right-click and inspect the field or you can use a tool like [Selector gadget](https://chromewebstore.google.com/detail/selectorgadget/mhjhnkcfbdhnjickkkdbjoemdmbfginb) to quickly click and identify the correct CSS selctor.<https://chromewebstore.google.com/detail/selectorgadget/mhjhnkcfbdhnjickkkdbjoemdmbfginb>
   
   ![Skærmbillede 2024-01-19 kl. 14.07.46](https://knowledge.profitmetrics.io/hs-fs/hubfs/Sk%C3%A6rmbillede%202024-01-19%20kl.%2014.07.46.png?width=670&height=66&name=Sk%C3%A6rmbillede%202024-01-19%20kl.%2014.07.46.png)![How to Copy an Email Address on a Website - Step 2](https://knowledge.profitmetrics.io/hs-fs/hubfs/How%20to%20Copy%20an%20Email%20Address%20on%20a%20Website%20-%20Step%202.png?width=670&height=375&name=How%20to%20Copy%20an%20Email%20Address%20on%20a%20Website%20-%20Step%202.png)  
   ![How to Copy an Email Address on a Website - Step 11 (1)](https://knowledge.profitmetrics.io/hs-fs/hubfs/How%20to%20Copy%20an%20Email%20Address%20on%20a%20Website%20-%20Step%2011%20(1).png?width=655&height=35&name=How%20to%20Copy%20an%20Email%20Address%20on%20a%20Website%20-%20Step%2011%20(1).png)
   
   ```
   <!-- Start ProfitMetrics - Script --><script>window.profitMetrics = {pid: 'PUBLIC_ID', // Your Public IDemailInputSelector: '.class-name',}</script><script src="https://cdn1.profitmetrics.io/PUBLIC_ID/bundle.js"defer></script><!-- End ProfitMetrics - Script -->
   ```
3. **CONSENT CONTROL**  
   If you do not use any of the natively supported Consent Management Platforms (CMP) or wish to manually control consent, you can add the following two lines and replace **true/false** with a boolean value depending on the consent state. This script can also be loaded multiple times as consent change but remember to load the bundle.js every time.
   
   ```
   cookieStatisticsConsent: true, // Replace with boolean value (true/false)cookieMarketingConsent: true, // Replace with boolean value (true/false)
   ```
   
   ```
   <!-- Start ProfitMetrics - Script --><script>window.profitMetrics = {pid: 'PUBLIC_ID', // Your Public IDemailInputSelector: '.class-name',cookieStatisticsConsent: true,cookieMarketingConsent: true,}</script><script src="https://cdn1.profitmetrics.io/PUBLIC_ID/bundle.js"defer></script><!-- End ProfitMetrics - Script -->
   ```
4. **CROSS-SUBDOMAIN TRACKING**  
   If you have multiple subdomains like en.example.com and de.example.com**,** or simply have a subdomain like blog.example.com or your checkout is located on checkout.example.com, you might want to set up Cross Domain Tracking. You can do this by including cookieDomain and set the value to match your your TLD (Top-level domain). This will enable cross-subdomain tracking for headless implementations and third-party checkouts. Remember to add a **'.'** before the domain.
   
   **Correct way:** '.example.com' // Starts with a dot

   **Wrong way: '**example.com' // Does not start with a dot

   **Warning:** Enabling this might cause issues if your site uses a subdomain structure for different countries or languages like **en.example.com**

   ```
    cookieDomain: '.example.com', // CORRECT cookieDomain: 'example.com', // WRONG
   ```
   
   ```
   <!-- Start ProfitMetrics - Script --><script>window.profitMetrics = {pid: 'PUBLIC_ID',emailInputSelector: '.class-name',cookieStatisticsConsent: true,cookieMarketingConsent: true,cookieDomain: '.example.com',}</script><script src="https://cdn1.profitmetrics.io/PUBLIC_ID/bundle.js"defer></script><!-- End ProfitMetrics - Script -->
   ```
5. **KLARNA CHECKOUT**  
   Add the following lines inside the script to automatically capture the customer's email from within the Klarna Checkout
   
   ```
   enableKlarnaTracking: true, // Enable Klarna trackingcheckoutPath: '/checkout', // URL path of your checkout pages
   ```
   
   **Example:**
   
   ```
   <!-- Start ProfitMetrics - Script --><script>window.profitMetrics = {pid: 'PUBLIC_ID',emailInputSelector: '.class-name',cookieStatisticsConsent: true/false,cookieMarketingConsent: true/false,cookieDomain: null,enableKlarnaTracking: true,checkoutPath: '/checkout',}</script><script src="https://cdn1.profitmetrics.io/PUBLIC_ID/bundle.js"defer></script><!-- End ProfitMetrics - Script ->
   ```
6. **ON LOAD EVENT**  
   Copy and paste the onLoad event into the script on the pages where the customer email is available. This usually includes order confirmation, login, and newsletter signup.  
   **onLoad event:**
   
   ```
   onLoad: () => {   const pmEmail = 'EMAIL'; // Insert customer email   if (pmEmail?.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) {      profitMetrics.setEmail(pmEmail);   }}
   ```
   
   **Example:**
   
   ```
   <!-- Start ProfitMetrics - Script --><script>window.profitMetrics = {pid: 'PUBLIC_ID', // Your Public IDemailInputSelector: '.class-name', // Email input CCS selectorcookieStatisticsConsent: true/false, // Replace with boolean valuecookieMarketingConsent: true/false, // Replace with boolean valuecookieDomain: null, // Your top-level domainonLoad: () => {   const pmEmail = 'EMAIL'; // Replace with customer email   if (pmEmail?.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) {     profitMetrics.setEmail(pmEmail);   }}}</script><script src="https://cdn1.profitmetrics.io/PUBLIC_ID/bundle.js"defer></script><!-- End ProfitMetrics - Script -->
   ```
7. **setEmail Event**  
   For any situation where the customer email is available AFTER ProfitMetrics script has loaded, but the email is not able to be capture using the email input selector, you can manually trigger the setEamail event like this:
   
   ```
   profitMetrics.setEmail('name@example.com');
   ```
   
   **Example:**
   
   ```
   <script>profitMetrics.setEmail('name@example.com');</script>
   ```

 

 

### Part 2: OPTIONAL: Implement setEmail event to capture email when using a third-party checkout.

1. Copy the following script and paste it AFTER the main script on the order confirmation page and replace **example@example.com** with a variable containing the customer email. The script will retry to set the customer email every 500 milliseconds ontil the email becomes available.
   
   ```
   <!-- Start ProfitMetrics - setEmail --><script>    function _pm_tryemailorderconfirmation() {        if (null != window.profitMetrics && null != window.profitMetrics.setEmail && typeof window.profitMetrics.setEmail === 'function') {            window.profitMetrics.setEmail('example@example.com');        } else {            setTimeout(_pm_tryemailorderconfirmation, 500);        }    }    _pm_tryemailorderconfirmation();</script><!-- End ProfitMetrics - setEmail -->
   ```

### Part 3: Special code for known CMP's

#### Cookiebot

Native support. No additional changes are needed.

#### CookieInforation

Native support. No additional changes are needed.

#### CookieYes

```
<!--Start ProfitMetrics - Script for CookieYes --><script>// Configurationlet pmPublicID = ''; // Replace with your Public IDlet pmEmailInputSelector = '.class-name'; // Email input CCS selectorlet pmCookieDomain = ''; // Your top-level domain for cross-subdomain trackinglet pmEmail = ''; // Dynamically fetch email if available// Default consentlet cc_statistics = true;let cc_marketing = true;// Function to load the ProfitMetrics scriptfunction pmLoadScript() {    window.profitMetrics = {        pid: pmPublicID,        cookieStatisticsConsent: cc_statistics,        cookieMarketingConsent: cc_marketing,        emailInputSelector: pmEmailInputSelector,        onLoad: () => {            if (pmEmail && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(pmEmail)) {                profitMetrics.setEmail(pmEmail);            }           }    };    if (pmCookieDomain) {        window.profitMetrics.cookieDomain = pmCookieDomain.startsWith('.') ? pmCookieDomain : `.${pmCookieDomain}`;    }    const script = document.createElement('script');    script.src = `https://cdn1.profitMetrics.io/${pmPublicID}/bundle.js`;    script.defer = true;    script.onerror = () => console.error('Failed to load ProfitMetrics script.');    document.head.appendChild(script);}// CookieYes - Get consentif (typeof getCkyConsent !== 'undefined' && getCkyConsent()?.categories) {  cc_statistics = getCkyConsent().categories.performance;  cc_marketing = getCkyConsent().categories.advertising;  pmLoadScript();}// CookieYes - Add event listenerdocument.addEventListener("cookieyes_consent_update", (event) => {  cc_statistics = event.detail.accepted.includes("analytics");  cc_marketing = event.detail.accepted.includes("advertisement");  pmLoadScript();});// CookieYes - Fallbackif (typeof getCkyConsent === 'undefined') {  pmLoadScript();}</script><!-- End ProfitMetrics - Script for CookieYes -->
```

#### CookieFirst

```
<!--Start ProfitMetrics - Script for CookieFirst --><script>// Configurationlet pmPublicID = ''; // Replace with your Public IDlet pmEmailInputSelector = '.class-name'; // Email input CCS selectorlet pmCookieDomain = ''; // Your top-level domain for cross-subdomain trackinglet pmEmail = ''; // Dynamically fetch email if available// Default consentlet cc_statistics = true;let cc_marketing = true;// Function to load the ProfitMetrics scriptfunction pmLoadScript() {    window.profitMetrics = {        pid: pmPublicID,        cookieStatisticsConsent: cc_statistics,        cookieMarketingConsent: cc_marketing,        emailInputSelector: pmEmailInputSelector,        onLoad: () => {            if (pmEmail && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(pmEmail)) {                profitMetrics.setEmail(pmEmail);            }           }    };    if (pmCookieDomain) {        window.profitMetrics.cookieDomain = pmCookieDomain.startsWith('.') ? pmCookieDomain : `.${pmCookieDomain}`;    }    const script = document.createElement('script');    script.src = `https://cdn1.profitMetrics.io/${pmPublicID}/bundle.js`;    script.defer = true;    script.onerror = () => console.error('Failed to load ProfitMetrics script.');    document.head.appendChild(script);}// CookieFirstfunction updateConsent(consent) {    cc_statistics = consent.performance;    cc_marketing = consent.advertising;    pmLoadScript();}// CookieFirst - Get consentif (typeof CookieFirst !== 'undefined' && !!CookieFirst?.consent) {    updateConsent(CookieFirst.consent);}// CookieFirst - Add event listenerwindow.addEventListener('cf_consent', (event) => updateConsent(event.detail));window.addEventListener('cf_consent_loaded', (event) => updateConsent(event.detail));// CookieFirst - Fallbackfunction checkAndLoadCookieFirst() {    if (typeof CookieFirst === 'undefined') {        setTimeout(() => {            if (typeof CookieFirst === 'undefined') {                pmLoadScript(); // Load the script if still undefined            }        }, 500); // Wait 500 milliseconds and check again    }}</script><!-- End ProfitMetrics - Script for CookieFirst -->
```

#### CookieScript

```
<!--Start ProfitMetrics - Script for CookieScript --><script>// Configurationlet pmPublicID = ''; // Replace with your Public IDlet pmEmailInputSelector = '.class-name'; // Email input CCS selectorlet pmCookieDomain = ''; // Your top-level domain for cross-subdomain trackinglet pmEmail = ''; // Dynamically fetch email if available// Default consentlet cc_statistics = true;let cc_marketing = true;// Function to load the ProfitMetrics scriptfunction pmLoadScript() {    window.profitMetrics = {        pid: pmPublicID,        cookieStatisticsConsent: cc_statistics,        cookieMarketingConsent: cc_marketing,        emailInputSelector: pmEmailInputSelector,        onLoad: () => {            if (pmEmail && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(pmEmail)) {                profitMetrics.setEmail(pmEmail);            }           }    };    if (pmCookieDomain) {        window.profitMetrics.cookieDomain = pmCookieDomain.startsWith('.') ? pmCookieDomain : `.${pmCookieDomain}`;    }    const script = document.createElement('script');    script.src = `https://cdn1.profitMetrics.io/${pmPublicID}/bundle.js`;    script.defer = true;    script.onerror = () => console.error('Failed to load ProfitMetrics script.');    document.head.appendChild(script);}// CookieScript - Updatefunction updateConsent(consent) {    cc_statistics = consent.includes('performance');    cc_marketing = consent.includes('targeting');    pmLoadScript();}// CookieScript - Get consentif (typeof CookieScript !== 'undefined' && CookieScript?.instance?.currentState()?.categories) {    updateConsent(CookieScript.instance.currentState().categories);}// CookieScript - Add event listenerwindow.addEventListener('CookieScriptCategory-strict', () => {    updateConsent(CookieScript.instance.currentState().categories);});// CookieFirst - Fallbackif (typeof CookieScript === 'undefined') {    pmLoadScript();}</script><!--End ProfitMetrics - Script for CookieScript -->
```

#### OneTrust

```
<!--Start ProfitMetrics - Script for OneTrust --><script>// Configurationlet pmPublicID = ''; // Replace with your Public IDlet pmEmailInputSelector = '.class-name'; // Email input CCS selectorlet pmCookieDomain = ''; // Your top-level domain for cross-subdomain trackinglet pmEmail = ''; // Dynamically fetch email if available// Default consentlet cc_statistics = true;let cc_marketing = true;// Function to load the ProfitMetrics scriptfunction pmLoadScript() {    window.profitMetrics = {        pid: pmPublicID,        cookieStatisticsConsent: cc_statistics,        cookieMarketingConsent: cc_marketing,        emailInputSelector: pmEmailInputSelector,        onLoad: () => {            if (pmEmail && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(pmEmail)) {                profitMetrics.setEmail(pmEmail);            }           }    };    if (pmCookieDomain) {        window.profitMetrics.cookieDomain = pmCookieDomain.startsWith('.') ? pmCookieDomain : `.${pmCookieDomain}`;    }    const script = document.createElement('script');    script.src = `https://cdn1.profitMetrics.io/${pmPublicID}/bundle.js`;    script.defer = true;    script.onerror = () => console.error('Failed to load ProfitMetrics script.');    document.head.appendChild(script);}// OneTrust - Updatefunction updateConsent(consent) {    cc_statistics = consent.includes("2");    cc_marketing = consent.includes("4");    pmLoadScript();}// OneTrust - Get consentif (typeof OneTrust !== "undefined" && typeof OnetrustActiveGroups !== "undefined") {    updateConsent(OnetrustActiveGroups);}// OneTrust - Add event listenerwindow.addEventListener("OneTrustGroupsUpdated", (event) => {    updateConsent(event.detail || []);});// OneTrust - Fallbackif (typeof OneTrust === "undefined") {    pmLoadScript();}</script><!-- End ProfitMetrics - Script for OneTrust  -->
```

 

### Part 4: Confirm the integration

1. Check if the pmStorage cookie exists.
2. Create a test order and complete it. On the order confirmation page, check if the pmStorage cookie has an "etid" value and / or if the "em" value contains you email. The cookie value should look like this:
   
   ```
   {"etid":172978336,"pid":"A1B2C3D4E5F6G7H8","referer":null,"cc_statistics":true,"cc_marketing":true,"gacid":"GA1.1.1608251768.1705563035","gacid_source":"gacookie","uid":null,"gclid":null,"fbp":"fb.1.1705563034698.1103141032","fbc":null,"cip":"0.0.0.0","gbraid":"","wbraid":"","ga4SessionId":"5DP76XVKEZ:1705568293","ga4SessionNumber":"DP76XVKEZ5:2","em_md5":null,"em_sha256":null,"em":"example@example.com"} 
   ```

- [Getting Started](https://knowledge.profitmetrics.io/getting-started?hsLang=en#main-content)

    - [Learn the Basics](https://knowledge.profitmetrics.io/getting-started?hsLang=en#learn-the-basics)
    - [Prepare for Onboarding](https://knowledge.profitmetrics.io/getting-started?hsLang=en#prepare-for-onboarding)
    - [Account Setup](https://knowledge.profitmetrics.io/getting-started?hsLang=en#account-setup)
- [E-commerce Platforms](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#main-content)

    - [Shopify](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#shopify)
    - [WooCommerce](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#woocommerce)
    - [Magento](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#magento)
    - [PrestaShop](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#prestashop)
    - [BigCommerce](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#bigcommerce)
    - [Shopware](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#shopware)
    - [DanDomain & Related](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#dandomain-related)
    - [Universal Integration (Clientside)](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#universal-integration-clientside)
    - [Universal Integration (Server-side Hybrid)](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#universal-integration-server-side-hybrid)
    - [Other Platforms](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#other-platforms)
    - [Developer Documentation](https://knowledge.profitmetrics.io/e-commerce-platforms?hsLang=en#developer-documentation)
- [Ad Channels](https://knowledge.profitmetrics.io/ad-channels?hsLang=en#main-content)

    - [Google Ads](https://knowledge.profitmetrics.io/ad-channels?hsLang=en#google-ads)
    - [Meta (Facebook/Instagram)](https://knowledge.profitmetrics.io/ad-channels?hsLang=en#meta-facebook-instagram)
    - [Microsoft Bing Ads](https://knowledge.profitmetrics.io/ad-channels?hsLang=en#microsoft-bing-ads)
    - [Google Analytics 4](https://knowledge.profitmetrics.io/ad-channels?hsLang=en#google-analytics-4)
    - [Partner-ads](https://knowledge.profitmetrics.io/ad-channels?hsLang=en#partner-ads)
    - [Other Channel Configuration](https://knowledge.profitmetrics.io/ad-channels?hsLang=en#other-channel-configuration)
- [Tracking & Conversion Setup](https://knowledge.profitmetrics.io/tracking-conversion-setup?hsLang=en#main-content)

    - [Overview](https://knowledge.profitmetrics.io/tracking-conversion-setup?hsLang=en#overview)
    - [Conversion Booster for Google Ads](https://knowledge.profitmetrics.io/tracking-conversion-setup?hsLang=en#conversion-booster-for-google-ads)
    - [Conversion Booster for Meta](https://knowledge.profitmetrics.io/tracking-conversion-setup?hsLang=en#conversion-booster-for-meta)
    - [Conversion Booster Custom Pixels](https://knowledge.profitmetrics.io/tracking-conversion-setup?hsLang=en#conversion-booster-custom-pixels)
    - [Enhanced Conversions](https://knowledge.profitmetrics.io/tracking-conversion-setup?hsLang=en#enhanced-conversions)
- [Shopping Booster](https://knowledge.profitmetrics.io/shopping-booster?hsLang=en#main-content)

    - [Overview & Setup](https://knowledge.profitmetrics.io/shopping-booster?hsLang=en#overview-setup)
    - [Supplemental Feeds](https://knowledge.profitmetrics.io/shopping-booster?hsLang=en#supplemental-feeds)
    - [Campaigns & Labels](https://knowledge.profitmetrics.io/shopping-booster?hsLang=en#campaigns-labels)
    - [Troubleshooting](https://knowledge.profitmetrics.io/shopping-booster?hsLang=en#troubleshooting)
- [Product Feed & Costs](https://knowledge.profitmetrics.io/product-feed-costs?hsLang=en#main-content)

    - [Product Feed](https://knowledge.profitmetrics.io/product-feed-costs?hsLang=en#product-feed)
    - [Shipping & Payment Costs](https://knowledge.profitmetrics.io/product-feed-costs?hsLang=en#shipping-payment-costs)
    - [Expenses](https://knowledge.profitmetrics.io/product-feed-costs?hsLang=en#expenses)
- [Dashboard, Orders & Reporting](https://knowledge.profitmetrics.io/dashboard-orders-reporting?hsLang=en#main-content)

    - [Dashboard & Orders](https://knowledge.profitmetrics.io/dashboard-orders-reporting?hsLang=en#dashboard-orders)
    - [Looker Studio](https://knowledge.profitmetrics.io/dashboard-orders-reporting?hsLang=en#looker-studio)
    - [Google BigQuery](https://knowledge.profitmetrics.io/dashboard-orders-reporting?hsLang=en#google-bigquery)
- [Account & Billing](https://knowledge.profitmetrics.io/account-billing?hsLang=en#main-content)

    - [Users & Access](https://knowledge.profitmetrics.io/account-billing?hsLang=en#users-access)
    - [Billing & Invoices](https://knowledge.profitmetrics.io/account-billing?hsLang=en#billing-invoices)
- [Privacy & Consent](https://knowledge.profitmetrics.io/privacy-consent?hsLang=en#main-content)

    - [GDPR](https://knowledge.profitmetrics.io/privacy-consent?hsLang=en#gdpr)
    - [Consent Management Platforms](https://knowledge.profitmetrics.io/privacy-consent?hsLang=en#consent-management-platforms)
    - [Google Consent Mode](https://knowledge.profitmetrics.io/privacy-consent?hsLang=en#google-consent-mode)
- [For Agencies](https://knowledge.profitmetrics.io/for-agencies?hsLang=en#main-content)

    - [Getting Started as an Agency](https://knowledge.profitmetrics.io/for-agencies?hsLang=en#getting-started-as-an-agency)
    - [Agency Certification](https://knowledge.profitmetrics.io/for-agencies?hsLang=en#agency-certification)
- [Shopify](https://knowledge.profitmetrics.io/shopify?hsLang=en)
- [PrestaShop](https://knowledge.profitmetrics.io/prestashop?hsLang=en)
- [Google Ads](https://knowledge.profitmetrics.io/google-ads?hsLang=en#main-content)

    - [troubleshoot](https://knowledge.profitmetrics.io/google-ads?hsLang=en#troubleshoot)
- [Meta (Facebook / Instagram)](https://knowledge.profitmetrics.io/meta-facebook-instagram?hsLang=en)
- [Uncategorized](https://knowledge.profitmetrics.io/uncategorized?hsLang=en)
- [Billing](https://knowledge.profitmetrics.io/billing?hsLang=en)
- [Google Sheets](https://knowledge.profitmetrics.io/google-sheets?hsLang=en)
- [Account](https://knowledge.profitmetrics.io/account?hsLang=en)
- [Ideal Shop](https://knowledge.profitmetrics.io/ideal-shop?hsLang=en)

[![ProfitMetrics logo black version](https://knowledge.profitmetrics.io/hs-fs/hubfs/pm_logotype_blue.png?width=193&height=28&name=pm_logotype_blue.png "ProfitMetrics logo black version")](https://profitmetrics.io)

<https://www.facebook.com/ProfitMetrics/> <https://podcasts.apple.com/> [mailto:support@profitmetrics.io](mailto:support@profitmetrics.io)

Copyright © 2026, ProfitMetrics ApS