How the Pixel Works
Converlay uses Shopify's Web Pixels API to capture storefront events. The pixel runs inside a sandboxed iframe managed entirely by Shopify, ensuring zero impact on your store's performance.
Sandboxed execution
Shopify loads custom pixels in an isolated sandbox. This means the pixel cannot access the main page DOM, cookies, or interfere with your storefront. It receives events through Shopify's event bus.
Available browser APIs
| API | Available |
|---|---|
browser.localStorage | Yes |
browser.cookie | No |
document.cookie | No |
window.localStorage | No (use browser.localStorage) |
fetch / sendBeacon | Yes |
Data captured
Every event payload includes:
- Client ID — persistent identifier stored in
browser.localStorage - Session ID — 30-minute rolling window, also persisted in localStorage
- Click IDs —
gclid,fbclid,ttclidextracted from the page URL - UTM parameters —
utm_source,utm_medium,utm_campaign,utm_term,utm_content - Facebook Browser ID —
_fbpgenerated from client ID,_fbcfrom fbclid - PII from checkout — email, phone, name, address (hashed server-side with SHA-256 before forwarding)
- Consent state — mapped from Shopify's Customer Privacy API to Google Consent Mode v2 signals
Transport
Events are sent to the Converlay collection endpoint using navigator.sendBeacon for reliability during page unloads. If sendBeacon is unavailable, the pixel falls back to a standard fetch POST request.
Persistence
Client ID and session ID are stored in browser.localStorage. If localStorage is unavailable (e.g., in some privacy-focused browsers), the pixel falls back to in-memory storage. IDs will be regenerated on each page load in that case.
Pixel versioning
Each pixel deployment includes a version number and a commit hash. You can check the running version in your Converlay dashboard or in the browser console by searching for [Converlay] log entries.
Caching
Shopify aggressively caches web pixel code. After deploying a new pixel version, stores must disconnect and reconnect the pixel in Settings → Customer events for code changes to take effect. Settings changes can be pushed remotely via the bulk updater.