Pixels & tracking
Pixels are tiny scripts that fire events when customers interact with your store. They power retargeting ads, conversion tracking, and attribution — install them before running paid traffic.
What we support
| Tracker | Coverage |
|---|---|
| Facebook Pixel (Meta) | Browser-side events + Conversions API (server-side) |
| TikTok Pixel | Browser-side events + Events API (server-side) |
| Snapchat Pixel | Browser-side events + Conversions API (server-side) |
| Pinterest Tag | Browser-side events + Conversions API (server-side). Needs the Pinterest ad account ID as well as the token. |
| Google Analytics | Browser-side only |
| Google Tag Manager | Browser-side only |
| Google Ads | Browser-side only. Needs a conversion label in addition to the AW- ID, otherwise the tag can only build remarketing audiences. |
All pixel configuration lives on one page — /dashboard/pixels. (/dashboard/pixels/multi is an alias for the same screen, and there is a single Pixels entry in the sidebar.) There is no separate "single-pixel mode": you add pixels one at a time, and on paid plans you can add several.
Plan limits
Pixel availability scales with your subscription plan:
| Plan | Pixels per type | Notes |
|---|---|---|
| Free | 0 | Pixel management is locked. Upgrade to track ads. |
| Pro | 1 of each type, 7 total | One Facebook, one TikTok, one Snapchat, one Pinterest, one Google Analytics, one Google Tag Manager and one Google Ads pixel. |
| Unlimited | unlimited per type | Add as many Facebook / TikTok / etc. instances as you need. |
| Enterprise | unlimited per type | Same as Unlimited. |
An expired plan does not move your store down to Free. The storefront goes offline instead, so there are no page views left to track and no events fire. Your pixel configuration is untouched and starts working again the moment you renew. Renewal: open /dashboard/subscribe and click the ▶ How to renew button for the in-app guided tour, or watch the DZBuild YouTube channel.
Standard events fired
The storefront fires these canonical events when a customer interacts. Not every event maps to every pixel — the exceptions are noted in the table and below it:
| Event | When |
|---|---|
PageView | Every page load |
ViewContent | Product page view |
AddToCart | The customer adds a product to the cart — product page, variant modal, quick-add |
InitiateCheckout | The customer reaches /checkout, or submits the one-step fast-checkout form on a product page (fast-checkout buyers never load /checkout, so this is their only IC signal). Simply opening the fast-checkout form fires nothing. |
Purchase | Order successfully placed |
Search | The customer searches your store. Mapped for Facebook, TikTok, Snapchat and Google Analytics — Pinterest has no Search equivalent. |
Lead | The customer submits a landing-page custom form section |
Delivered | Server-only Meta custom event, fired after an order is marked delivered |
Per-pixel mappings: Facebook uses these names directly; TikTok, Snapchat and Pinterest have equivalents auto-mapped; Google Analytics uses view_item, add_to_cart, begin_checkout, purchase, search.
Two events behave differently from the rest:
Leadis browser-only — no Conversions API, no deduplication ID — has no Pinterest equivalent, and maps toLead(Meta),SubmitForm(TikTok),SIGN_UP(Snapchat),generate_lead(Google Analytics). Custom-form submissions do not firePurchase.Deliveredis server-only (no browser twin) and fires roughly 30 minutes after you mark an order delivered. It is a Meta custom event: Custom Audiences can use it directly, but to optimise a campaign toward it you must first create a Custom Conversion in Events Manager.
Adding a pixel
- Get the pixel / measurement / tag ID from the ad platform.
- Open
/dashboard/pixelsand click Add pixel. - Choose the platform — Facebook, TikTok, Snapchat, Pinterest, Google Analytics, Google Tag Manager or Google Ads.
- Enter a name and the ID, then fill the platform-specific extras:
- Conversions API access token — Facebook, TikTok, Snapchat, Pinterest.
- Ad account ID — Pinterest only. Without it you get no server-side events and no error message.
- Conversion label — Google Ads only. Without it the tag builds remarketing audiences but records no purchase conversions.
- Domain verification code — Facebook only, optional. Paste the value from your Meta owned-domains settings and DZBuild renders it as a meta tag on your storefront.
- Save. Events fire immediately on the storefront.
Repeat to add more pixels (paid plans only).
DZBuild does not push named events to the GTM dataLayer. To give GTM something to trigger on, add a Google Analytics (or Google Ads) pixel as well — the storefront then fires gtag('event', …) calls that GTM can pick up as Google-Tag events.
Each pixel card has an on/off switch. Turning a pixel off keeps its configuration and its targeting assignments but stops both browser and server-side events — useful for pausing an ad account without losing setup.
Targeting a pixel to specific products, categories or landing pages
Targeting is configured per pixel, not per landing page. Click the link (chain) icon on a pixel card and pick any combination of products, categories and landing pages. The pixel card then shows badges for what it is assigned to.
- A pixel with no assignments is global: it initialises and receives events on every storefront page, including landing pages.
- A pixel with assignments only initialises — and only receives events — on matching pages.
- Assignments narrow one pixel; they never suppress your other pixels. A landing page still receives every global store pixel in addition to the pixel you assigned to it.
Two traps worth knowing:
- An order containing products from two different targeted pixels books the full order value into both datasets. Splitting one store across two ad accounts is never perfectly clean.
- If every product assigned to a pixel is deleted, that pixel has zero assignments again — and silently becomes global.
Running two Facebook pixels on one store
Events fire to every pixel that is active on the current page. For Facebook specifically, the Meta SDK broadcasts each event to every initialised Facebook pixel on the page, so two global Facebook pixels each record the other's events.
If you run two ad accounts against one store, assign each Facebook pixel to a distinct set of products — and remember the caveat above about mixed orders.
Conversions API (CAPI)
CAPI is server-side event sending. The browser-side pixel fires from the customer's device; CAPI fires the same event from DZBuild's servers. This is available for Facebook, TikTok, Snapchat and Pinterest, and bypasses:
- iOS 14+ tracking restrictions (ATT)
- Brave / Firefox tracking protection
- ad blockers (uBlock, Adblock Plus, etc.)
- network filters (some Algerian ISPs)
DZBuild auto-hashes the customer's email and phone (per Meta's spec) before sending CAPI events. Both browser and server events share an event_id so the platform deduplicates and counts each conversion once.
Turning CAPI on raises the event-match quality Meta reports, because the server sends hashed identifiers the browser event does not always carry. DZBuild publishes no benchmark score: the number you see depends on which fields your checkout collects, and a COD checkout that asks only for a name, a phone and an address has less to match on than one that also collects an email.
Pinterest note: InitiateCheckout is deliberately not mapped for Pinterest, because Pinterest's own checkout event means a completed purchase — sending it at checkout start would double-count sales.
Verifying it works
- Facebook Pixel Helper browser extension — visit your storefront and watch
PageViewandViewContentfire. - Meta Events Manager → Test events — place a real test order; events appear within seconds. CAPI events show up tagged
Server. - TikTok Events Manager → Test events — same flow.
- GA4 → DebugView — same flow.
When the helper says "no pixel detected"
This is the most common pixel question, and it is almost never a broken pixel. Work through the three causes in order.
1. The pixel has not loaded yet. Every DZBuild store defers its pixel SDKs: the loader waits for the browser to go idle, for the visitor's first interaction (scroll, tap, key press), or for the tab to become visible again. On a fresh page load with no interaction, a helper extension sees nothing for the first second or two. Scroll or tap the page and the pixel appears. No events are lost, they queue while the SDK loads. The order-confirmation page is the exception and loads its pixels immediately, because Purchase fires there.
2. An ad blocker is running in your own browser. A blocker, or a browser with tracking protection turned up, stops the pixel script from loading at all, so the helper reports nothing no matter how long you wait. Open the store in a different browser (a clean Chrome profile is the easiest test) with no blocker installed, then check again.
3. You are looking in the wrong place for server-side events. If Pixel and the Conversions API are both configured, DZBuild keeps sending events from its servers even for buyers who block the browser pixel. Those events never appear in a browser helper. Look at Meta Events Manager, Test events, where they arrive tagged Server.
Best practices
- Always install a Pixel before running paid ads. Without it, the algorithm has nothing to optimize toward.
- Add CAPI the moment you turn on Facebook ads — the match-quality lift compounds over weeks.
- Single source of truth — pick the pixels you'll actively use. Don't run 5 pixels just in case.
- Don't fire fake events — inflating events hurts ad delivery quality long-term.
- Match your ad account to the right Pixel when you run several — wrong-pixel attribution wastes spend.
Frequently asked
Q: My Pixel fires but Meta says "low event-match quality." A: Add the Conversions API. Sending the hashed email and phone from the server gives Meta more fields to match on than the browser event alone.
Q: Can I use both browser-side and CAPI for the same Pixel?
A: Yes — Meta deduplicates by event_id. We send both with matching IDs.
Q: Where do I install Hotjar / Clarity / a custom script?
A: You cannot self-serve this today. The pixel manager at /dashboard/pixels handles pixels only, and no other dashboard screen offers a box for custom head or body HTML. If a chat reply ever pointed you at such a field, it was wrong. Contact support if you need a third-party snippet on your storefront.
Q: Will pixels slow my store? A: No. Pixel SDKs are loaded async and deferred until the browser is idle or the visitor interacts, so they stay off the critical rendering path.