Documentation

Pixel and server-side sending

Each paid purchase is sent to the ad platforms by our servers, with the Shopify order's ID.

On Shopify, the pixel comes from a theme extension. ProfitPilotPro doesn't write to your theme. You turn on the ProfitPilotPro Tracking App Embed (Online Store → Themes → Customize → App embeds) and paste your Pixel ID there. Without it, the block sends nothing. The dashboard keeps a banner up until this is done.

If your theme doesn't load the pixel

Paste the dashboard snippet before </head>. Orders still come from Shopify.

<script src="https://profitpilotpro.fr/api/track/pixel.js?id=YOUR_PIXEL_ID" defer></script>

Events

Tracked out of the box: page view, product view, collection view, search, add to cart, checkout started, purchase. A custom event goes through the pixel API:

window.ppp.track("LEAD", { value: 49.9, currency: "EUR" });

Server-side purchase sending

  • Meta receives the Purchase event, and only when there's a Meta click. Meta Passback (a dedicated setting) is Pro and Agency. The pixel and basic server-side sending are included from Starter.
  • TikTok receives CompletePayment, when there's a TikTok click.
  • Google Ads receives the same ID in transactionId (server-side conversions, Data Manager API).

The ID is the Shopify order's numeric ID. Not the #1001 shown to the customer, not the gid. On Shopify, the purchase is sent from the order webhook, not from the browser. If the pixel fires too, it carries the same ID: the ad platform counts only one.

In Settings → Tracking, the “Orders sent to ad platforms” card excludes, platform by platform, subscription renewals, tags, sales channels, countries or small amounts, with a preview on your last 30 days. After a refund or a cancellation, ProfitPilotPro corrects the conversion it sent to Google Ads (retracted, or a new value); Meta and TikTok don't offer this correction.

Several pixels per platform: the “Additional pixels” card adds a 2nd Meta or TikTok pixel, or a 2nd Google Ads conversion action, with a name, its shipping countries and its minimum amount (for example one pixel per country). ProfitPilotPro sends each purchase to every active pixel whose filters accept it, always after consent, with the same order ID. The main pixel stays the one in the Conversions API card, and it is the one the browser loads.

The full flow is on the Server-side tracking page. To serve the script from your own domain, follow the CNAME guide.

Consent

The pixel reads the visitor's choice in the Shopify banner (analytics, marketing, sale of data) and follows a choice made during the visit. It doesn't show a banner of its own: your store's banner decides.

  • Europe, United Kingdom, Switzerland: only an explicit choice counts. Shopify's “allowed by default” isn't consent.
  • Without marketing consent, nothing is sent to the ad platforms: no ad click, no IP address, no email. The order still counts in your numbers, and the server-side purchase sending never overrides a refusal.
  • Sale of data opt-out (“Do not sell”, GPC signal): in the United States, Meta and TikTok receive the event with limited data use in the states where they offer it; elsewhere, and for Google, nothing is sent.
  • Google receives the Consent Mode v2 signals (ad_user_data, ad_personalization) with every send.
  • Anonymous count of your visitors' cookie refusals (Settings → Tracking, off by default): visitors who decline are counted without cookies or identifiers, and never passed to the ad platforms. Mention it in your privacy policy.

Tracking → Overview shows the acceptance rate (marketing, analytics only, declined, no answer), the share of orders that can be sent to the ad platforms, and the value of the orders they won't see.

To keep your own traffic out of the stats, use the Exclude my traffic button in Settings → Tracking: it opens your store with a link valid for one hour and excludes your connection. The list of excluded connections shows there, and each one can be removed in one click. Email and phone only reach the ad platforms hashed, and an explicit refusal blocks fingerprinting.