Everything you need to set up and manage Facebook & Meta conversion tracking for your Commerce7 winery store.
Contents
Before installing, make sure you have:
Don't have a Pixel yet? Go to Meta Events Manager → Connect Data Sources → Web → Facebook Pixel. Name it after your winery and click Create. Then generate an access token from the Settings tab of that pixel.
Open 1Pixel from inside your Commerce7 admin (Apps in the sidebar). If you bookmark the app or open it in a new browser tab outside Commerce7, you may see an authorization error.
The Configuration tab includes a master switch: Enable server-side tracking. When this is off, the app does not send Commerce7 webhook events or managed website events to Meta — useful for pausing all CAPI traffic without uninstalling. When on, events follow the per-event toggles (Purchase, Subscribe, etc.).
Copy the code from Meta Events Manager → Test Events (shown at the top of that tab). Paste it into Configuration, save, then use Simulate events. Meta only shows simulated server events in the Test Events tab when this exact code is included — without it, events go to live production data or may not appear where you expect.
The Test Event Code is never applied to live Commerce7 orders or managed website traffic.
These events are sent automatically from your Commerce7 account. Each can be toggled on or off individually in the Configuration tab.
Purchase — includes order value, currency, and order IDSubscribe — so Facebook knows when your ads convert to club membersCancelMembership (custom server event) — club opt-out signal for audiencesLead — bookings created in Commerce7’s reservation systemPurchase by default — Tock syncs bookings as Commerce7 orders. Optional: enable Tock bookings → Lead to send Lead instead.CompleteRegistration — new account signups tracked for audience buildingAll events include hashed customer data (email, name, phone, address) for Meta's customer matching, which improves attribution accuracy and lookalike audience quality.
Two different booking systems, two different paths:
Lead (toggle: Commerce7 reservations → Lead)Purchase by default (same as buying wine online)Short version: 1Pixel can only see a Tock booking once it becomes a real order inside Commerce7. Whether that happens depends on how Tock and Commerce7 are wired together — a setting your Commerce7 or Tock admin controls, not something inside 1Pixel.
Not sure which one you have? Place one real test booking on Tock. A minute or two later, check the Event Log here in 1Pixel. A row with Source: Tock booking means you're on Full sync and it's working. Nothing there means you're on Partial (or One Way — see below) — follow the steps below to switch to Full.
Haven't connected Tock and Commerce7 at all yet? Do this first: note your Tock Business ID (top-right of the Tock Dashboard), then in Commerce7 go to Apps & Extensions, find the Tock App, and click Install App — enter the Business ID and confirm. Then back in Tock, go to Dashboard → Integrations, select Commerce7, choose your Location and reservation channel, and click Save. This connects the two platforms but starts on Partial by default — you still need the step below to get orders.
How to switch to Full sync: it's not a self-service toggle — Tock's own support team turns it on, not Commerce7 and not 1Pixel. Whoever manages your Tock account should email hospitality@tockhq.com and ask them to enable Full Integration for your Tock ↔ Commerce7 connection. Tock's default when a connection is first set up (or reconnected) is Partial, so this is a real step, not a formality, even for accounts that connected Tock and Commerce7 a while ago. After Tock confirms it's enabled, allow up to 48 hours for the first sync, then place a test booking and check the Event Log here for a Tock booking row to confirm it's working.
Tock actually offers three connection levels — Full (orders + contacts sync both ways), Partial (contacts sync from Tock into Commerce7, no orders), and One Way (nothing syncs into Commerce7 at all). Only Full creates the Commerce7 orders 1Pixel needs — Partial and One Way both look identical to 1Pixel (invisible). See Commerce7's Tock integration guide for the full setup reference.
Once Full sync is on, each Tock booking looks like a wine order to Commerce7, so 1Pixel sends it to Meta as a Purchase (with the dollar value) by default — unless you turn on the optional Send Tock bookings as Lead toggle in Configuration.
If guests book through Commerce7’s own reservation calendar (not Tock), enable Commerce7 reservations → Lead. These appear in Event Log as source Commerce7 reservations and Meta event Lead.
If you only use Tock for bookings, you can ignore this — Tock bookings never use the reservation path.
Some wineries want Meta to optimize for “someone booked a tasting” rather than transaction value. Enable Commerce7 reservations → Lead first, then Send Tock bookings as Lead. Wine shop orders still send Purchase.
In Event Log, Tock bookings show Source: Tock booking when Commerce7 includes externalOrderVendor: Tock on the order (this is how Full integration marks them).
Use Simulate Tock booking in Configuration to test Meta without a real reservation. Tock cancellations are not sent to Meta.
The Event Log sidebar groups live events by source. Filter the log by Tock booking to see only Tock traffic.
The optional manual loader is for developer-managed non-WordPress or custom sites such as Webflow or custom HTML. It belongs on the public winery site, not inside Commerce7 admin.
Install the loader once. Tracking fixes are then delivered from 1Pixel automatically without replacing the code on your website. It captures PageView, ViewContent, AddToCart, and InitiateCheckout and sends matching browser Pixel and server CAPI copies independently.
Optional for top-of-funnel website events. Purchase, club signup, club cancellation, reservation, and registration events are tracked server-side without the legacy loader. Install it only when a site needs managed PageView, ViewContent, AddToCart, InitiateCheckout, and browser cookies.
</body> tag — site-wide footer, global custom code, or HTML templateCommon places: Webflow Project Settings → Custom Code → Footer; Squarespace/Wix footer injection; or a developer-managed global layout.
Each website event can be toggled in Configuration. Product and cart events include content_ids, content_type, content_name, value, currency, and num_items when the storefront provides them. Each AddToCart reports only the newly added line subtotal (newly added quantity × unit price). Adding one $25 bottle twice produces $25 then $25; adding two at once produces $50. InitiateCheckout reports the current cart total.
Disable overlapping automatic rules. Base Meta Pixel code may remain. However, overlapping PageView, ViewContent, AddToCart, and InitiateCheckout rules in Meta Event Setup Tool, GTM, or another integration must be disabled before those events are enabled in 1Pixel. Third-party rules use unrelated event IDs and cannot be deduplicated against 1Pixel.
For each website action, 1Pixel immediately sends a browser Pixel event and independently sends a server CAPI event with the same event_id. Meta can deduplicate those two 1Pixel copies. If Meta's browser request is blocked, the server request can still arrive; if the 1Pixel endpoint is temporarily unavailable, the browser request is not suppressed.
storefront.js, signal/heartbeat, and signal/event.Use the tools in the Configuration tab to verify everything is working before relying on live data.
Validates your Pixel ID and Access Token by calling Meta’s API. A successful test confirms "Pixel credentials verified". If it fails, the error will indicate whether the token is invalid, expired, or the pixel ID is wrong.
The Configuration tab includes a Simulate events panel with a button for each event type:
All simulated events go to Meta’s Test Events tab (using your Test Event Code) and appear within seconds. They do not affect your real conversion data or event counts.
Before simulating: Copy your Test Event Code from Events Manager → Test Events, paste it into Configuration, and click Save configuration. After a successful simulate, open Test Events in Meta, enter the same code in the filter box, and confirm the event appears within seconds. It will also show in this app’s Event Log.
The Event Log tab shows every conversion sent to Meta, with live delivery status. The log refreshes automatically — place a test order and watch it appear within moments.
Use the filters to narrow by source, Meta event type, or status. Clear Log resets the display only — it does not remove events already sent to Meta.
If events fail after all retries, use Replay dead-letter to resend them after fixing credentials or a temporary Meta outage.
See Tracking health checklist for what each Setup warning means and how to fix it.
After you save Meta credentials, the Setup tab shows Tracking health — a live checklist of whether Commerce7 events are reaching 1Pixel and Meta. A yellow circle (○) is a warning, not always an error. Optional checks can stay yellow if you do not use that feature.
What you configure in the app: Meta Pixel ID + token, Enable server-side tracking, and per-event toggles (Purchase, Lead, Subscribe, etc.) under Configuration. You do not register webhooks inside the winery admin — that is done once by the app developer in Commerce7 Dev Center when the app is published.
order.checkout_completed — used for wine shop Purchase and Tock Full-sync bookings (they arrive as orders, not reservations)reservation.created and was sent as Meta LeadFor reference, the app listens at https://1pixel-meta-c7.fly.dev/webhook (or your deployed domain). The app developer subscribes these event types in Commerce7 Dev Center → your app → Webhooks:
order.checkout_completed — wine shop & Tock Full-sync PurchasesclubMembership.created / clubMembership.cancelledreservation.created — native C7 reservations onlycustomer.createdWineries install the app from the Commerce7 App Store and configure Meta credentials — no webhook URL entry is required per winery.
Tock vs C7 reservations: a Tock booking on Full sync shows up as a Tock booking order. A booking made directly in Commerce7's own tool shows up as Commerce7 reservations. On Partial sync, Tock bookings don't show up at all — see If you use Tock — read this first.
The Event Log tab shows Event Match Quality (EMQ) scores loaded from your Meta pixel. EMQ measures how well Meta matches your conversion events to real Facebook accounts — higher scores mean better ad attribution and lookalike audiences.
The app automatically sends all available matching signals with every event: email, first/last name, phone, city, state, ZIP, country, external customer ID, IP address, and browser signals (fbc, fbp) when the legacy/manual website loader is active. EMQ scores update in Meta after ~24 hours of real events.
The legacy/manual loader can improve match quality by capturing browser cookies (_fbc, _fbp) from Meta ad clicks. These are matched to server-side events when the customer's email or IP address is recognized.
1Pixel supports sending events to two separate Facebook pixels simultaneously. This is useful for:
To enable a second pixel, expand the Secondary Pixel section in the Configuration tab and enter the second Pixel ID and its Access Token.
Both pixels receive the same live payloads — Commerce7 server events and managed website events. Simulate / test events are sent to the primary pixel only (with your Test Event Code), so a secondary pixel is not polluted during testing.
This section is for agency marketers, paid social leads, and technical marketing staff evaluating or managing 1Pixel alongside an existing Meta setup.
No. 1Pixel does not remove, reconfigure, or take over your existing Meta Pixel installation on your website. You connect the same Pixel ID and Conversions API token you already use in Events Manager. The app adds a server-side (CAPI) connection so conversions can arrive even when browser tracking is blocked.
_fbp, _fbc) for better match qualityManaged website tracking does not send Purchase. Wine shop and Tock (Full sync) purchases always come from Commerce7 server webhooks.
Meta can deduplicate browser and server events when they share the same event name and event ID. 1Pixel sends stable server-side IDs (e.g. Purchase_{orderNumber}). Whether you see duplicates depends on what else is already firing:
Do not assume “duplicate = bad” during rollout. Many wineries gain net conversions in Events Manager because server-side tracking captures orders the browser pixel never saw. Validate with 5–10 real orders: compare Event Log, Meta Overview (server vs browser breakdown), and your prior baseline.
Lead (source: Commerce7 reservations)Purchase by default (source: Tock → C7 order) — same webhook as wine ordersLead instead; wine shop stays PurchaseSee Reservations & Tock for full detail.
Commerce7 admin has no theme editor. If top-of-funnel website events are needed, use the legacy/manual loader on the public winery website. Marketing teams should coordinate with whoever manages that site. Core order tracking does not require a website loader.
_fbp / _fbc cookies, which further helps Meta tie ad clicks to conversions.The app automatically applies Meta's Limited Data Use (LDU) flag to conversion events for customers located in California. When LDU is active, Meta restricts how it uses that customer's data, consistent with CCPA requirements.
LDU is applied automatically when either of these conditions is true:
CA)facebook-limited-data-use set to trueNo manual configuration is required. Customer PII from Commerce7 events (email, name, phone, and address) is SHA-256 hashed before transmission to Meta and is not persisted by the event pipeline. To improve matching, the legacy/manual website loader temporarily stores browser identifiers (_fbp, _fbc, and click ID), IP address, user agent, and the page origin/path for up to seven days. URL query strings and fragments are removed before storage.
Open 1Pixel from inside the Commerce7 admin (Apps in the sidebar), not from a saved link or a direct browser tab.
Yellow (○) means “not seen yet” or “optional.” See the full guide in Tracking health checklist. In short:
You do not configure webhooks in the winery admin — that is handled by the app in Commerce7 Dev Center.
This almost always means your Tock ↔ Commerce7 connection is set to Partial instead of Full — see If you use Tock — read this first for how to tell the difference and who to ask.
Native Commerce7 reservations use the reservation.created webhook, not an order webhook. Enable Commerce7 reservations → Lead in Configuration. Tock Full-sync bookings will not use this path — they appear as orders instead (see Reservations & Tock).
There is typically a 20–30 minute delay before server-side events appear in Meta Events Manager's main Overview tab. For real-time confirmation, use the Simulate events panel in the app — events sent with a Test Event Code appear in Meta's Test Events tab within seconds.
The app will automatically retry failed events. If delivery still fails after retries, check the error message in the log — common causes include an expired access token or a temporary Meta API outage. Regenerate your access token in Meta Events Manager if needed and update it in the app settings.
Go to Meta Events Manager → your pixel → Settings → Conversions API → Generate access token. Copy the new token and paste it into the app's Configuration tab, then click Save Settings.
It depends on setup. 1Pixel does not remove your base Pixel code, but overlapping event rules must be disabled. Server-side Purchase events from Commerce7 may overlap with a browser Purchase on checkout if both fire for the same order — Meta deduplicates only when event IDs match. Managed website tracking shares IDs with fbq for PageView / cart events. See For marketing & ads teams for scenarios and recommendations.
Yes. All Commerce7 orders — online, tasting room, POS, and Tock bookings (Full sync) — use the order webhook. They appear as Purchase by default unless you enable Tock bookings → Lead for Tock-only.
Yes — each event type (Purchase, Subscribe, Lead, CompleteRegistration, and all website events) can be individually toggled on or off from the Configuration tab. You can also turn off all server and snippet forwarding with Enable server-side tracking.
Contact us at 7labs@dmitru.com with a description of the issue and your winery name. We typically respond within 1 business day.