1Pixel – Meta Conversions API
by 7Labs for Commerce7

Documentation

Everything you need to set up and manage Facebook & Meta conversion tracking for your Commerce7 winery store.

Contents

  1. Requirements
  2. Security & tracking controls
  3. Initial Setup (5 minutes)
  4. Tracked Events
  5. Reservations & Tock
  6. Legacy/manual website loader
  7. Testing Your Connection
  8. Reading the Event Log
  9. Tracking health checklist
  10. Event Match Quality
  11. Dual Pixel Setup
  12. For marketing & ads teams
  13. CCPA & Limited Data Use
  14. FAQ & Troubleshooting

1. Requirements

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.

2. Security & tracking controls

Opening the app

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.

Enable server-side tracking

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.).

Test Event Code (required for Simulate)

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.

3. Initial Setup

1
Install the app from the Commerce7 App Store Find 1Pixel in the Commerce7 App Store and click Install. Commerce7 will redirect you through a brief OAuth flow and open the app dashboard inside your admin.
2
Get your Pixel ID and Access Token from Meta In a new tab, go to Meta Events Manager → select your pixel → Settings. Copy your Pixel ID (a 10–16 digit number) and click Generate access token to create a token.
3
Paste them into the app settings Back in your Commerce7 admin, open the 1Pixel app. Under the Configuration tab, paste your Pixel ID and Access Token into the fields and click Save Settings.
4
Verify the connection Click Test Connection. You should see a confirmation showing your pixel name. If you see an error, double-check that the Pixel ID and token match the same pixel in Meta Events Manager.
5
Done — server-side tracking is live Wine shop orders, club events, and reservations (see below) are sent to Meta automatically when their event toggles are on. Use the Event Log to confirm delivery.

4. Tracked Events

These events are sent automatically from your Commerce7 account. Each can be toggled on or off individually in the Configuration tab.

Commerce7 Event
Sent to Meta as
Order checkout completed
Purchase — includes order value, currency, and order ID
Wine club membership created
Subscribe — so Facebook knows when your ads convert to club members
Wine club membership cancelled
CancelMembership (custom server event) — club opt-out signal for audiences
Reservation created (native Commerce7)
Lead — bookings created in Commerce7’s reservation system
Tock booking (Full Commerce7 sync)
Purchase by default — Tock syncs bookings as Commerce7 orders. Optional: enable Tock bookings → Lead to send Lead instead.
New customer account created
CompleteRegistration — new account signups tracked for audience building

All events include hashed customer data (email, name, phone, address) for Meta's customer matching, which improves attribution accuracy and lookalike audience quality.

5. Reservations & Tock (plain English)

Two different booking systems, two different paths:

If you use Tock — read this first

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.

Your Tock ↔ Commerce7 connection
What actually happens
Does 1Pixel see the booking?
Full sync
Every Tock booking also creates a Commerce7 order
Yes — appears as “Tock booking” in the Event Log
Partial sync
The booking stays inside Tock and never reaches Commerce7
No — 1Pixel only listens for Commerce7 events, so it never learns the booking happened

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.

Native Commerce7 reservations (not Tock)

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.

Optional: send Tock bookings as Lead instead of Purchase

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.

Event sources panel

The Event Log sidebar groups live events by source. Filter the log by Tock booking to see only Tock traffic.

6. Legacy/manual website loader

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.

Legacy/manual installation

  1. In the app, open the Configuration tab and expand Advanced website setup
  2. Copy the legacy/manual loader code
  3. On your winery website, paste it just before the closing </body> tag — site-wide footer, global custom code, or HTML template
  4. Save and publish your website
  5. Reload the website, then open 1Pixel → Setup and confirm Website tracker detected

Common 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.

Deduplication (browser ↔ server)

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.

Verify the website tracker

  1. Open the winery website and reload a product page.
  2. In Chrome DevTools → Network, filter for storefront.js, signal/heartbeat, and signal/event.
  3. Use Meta Pixel Helper to confirm ViewContent and AddToCart contain product ID, value, currency, and quantity parameters.
  4. In 1Pixel → Setup, confirm Website tracker detected. The status changes to stale if the loader is not seen for seven days.

7. Testing Your Connection

Use the tools in the Configuration tab to verify everything is working before relying on live data.

Test Connection

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.

Simulate events

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.

8. Reading the 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.

Column
What it means
Meta event
The event name sent to Meta (Purchase, Lead, Subscribe, etc.)
Source
Where the event originated — e.g. C7 order, Commerce7 reservations, Tock → C7 order, or Website
C7 trigger
The Commerce7 webhook or managed website action that caused the event
Ref
Order number, reservation ID, or membership ID from Commerce7
Status: sent
Meta received the event successfully
Status: error
Delivery failed — see the error detail. The app retries automatically up to 3 times.

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.

9. Tracking health checklist

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.

Health check
What it means
What to do
Meta credentials saved
Pixel ID and Conversions API token are stored
Configuration → paste credentials → Save configuration
Server-side tracking enabled
Master switch allows webhook and snippet events to be sent
Configuration → turn on Enable server-side tracking
Website tracker detected Optional
The hosted loader checked in from the public winery website within the last seven days
If absent or stale, reinstall the current loader site-wide, publish the website, and reload a public page. Core Commerce7 webhook events continue without it.
Commerce7 webhook received recently
At least one live server event (not simulate) appears in the last 50 Event Log entries — e.g. club signup, order, or reservation
Place a test order, club signup, or wait for live traffic. If nothing ever appears, confirm tracking is on and contact support — the app’s webhook URL must be registered in Commerce7 Dev Center (developer setup).
Checkout-complete order webhook seen
Commerce7 sent order.checkout_completed — used for wine shop Purchase and Tock Full-sync bookings (they arrive as orders, not reservations)
Enable Purchase in Configuration. Place a test wine shop order (or a Tock booking with Full sync). Yellow is normal until the first checkout completes.
Native C7 reservation → Lead Optional
A booking created in Commerce7’s native reservation system fired reservation.created and was sent as Meta Lead
Only if you take tasting bookings in Commerce7 (not Tock-only). Enable Commerce7 reservations → Lead. Create a test reservation in C7. Safe to ignore if you use Tock Full sync — those bookings use the order webhook instead.
Tock routing Optional
A Tock booking synced as a Commerce7 order was detected
Requires Tock set to Full sync — see If you use Tock — read this first. Optional toggle Tock bookings → Lead changes Tock from Purchase to Lead.
No delivery errors
No failed sends or dead-letter queue entries
Check Event Log for errors; refresh Meta access token if expired

Commerce7 webhooks (developer setup — not in winery admin)

For 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:

Wineries 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.

10. Event Match Quality

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.

Score range
What it means
8.0 – 10.0 Excellent
Strong matching. Meta can attribute most conversions to ads accurately.
6.0 – 7.9 Good
Solid matching. Most events are matched with good accuracy.
Below 6.0 Needs work
Low match rate. Ensure Commerce7 customer records have email and phone on file.

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.

11. Dual Pixel Setup

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.

12. For marketing & ads teams

This section is for agency marketers, paid social leads, and technical marketing staff evaluating or managing 1Pixel alongside an existing Meta setup.

Does 1Pixel replace or override our existing pixel?

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.

What this app adds to your data picture

Source
What Meta receives
Typical marketing value
Commerce7 webhooks (default)
Purchase, Subscribe, Lead, CompleteRegistration, CancelMembership
Recovers blocked checkout / iOS conversions; authoritative order value from C7
Legacy/manual website loader
PageView, ViewContent, AddToCart, InitiateCheckout
Top-of-funnel + browser cookies (_fbp, _fbc) for better match quality
Simulate buttons
Test events only (with Test Event Code)
QA before campaigns — never mixed into live reporting

Managed website tracking does not send Purchase. Wine shop and Tock (Full sync) purchases always come from Commerce7 server webhooks.

Duplicate events — when to expect them, when not to

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:

Scenario
Duplicate risk
Recommendation
C7 server Purchase only (no browser checkout pixel)
Low — one Purchase per order
Ideal default; fills gaps from ad blockers / iOS
Existing browser Purchase on checkout and 1Pixel server Purchase
Medium — two Purchases unless event IDs match
Compare Events Manager after go-live; disable browser Purchase in the other tool, or disable Purchase in 1Pixel if server is redundant
1Pixel website events + matching Meta Event Setup Tool / GTM rules
High — the other integration generates unrelated event IDs
Keep the base Pixel, but disable overlapping automatic PageView, ViewContent, AddToCart, and InitiateCheckout rules
Commerce7 sends the same webhook twice
Low — app logs duplicates; default mode still forwards once per retry pattern
Use Event Log; contact support if repeated duplicates appear
Secondary pixel enabled
Intentional — same event to two pixels
Use only when agency + brand pixel both need the feed

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.

Reservations & Tock — what marketers should label in reports

See Reservations & Tock for full detail.

Test events vs live production data

Website tracking — optional legacy/manual loader

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.

Controls agencies should know about

Event Match Quality (EMQ) & attribution notes

Go-live checklist for marketers

  1. Confirm Pixel ID + CAPI token in 1Pixel match the pixel used for active campaigns
  2. Run Test Connection, then Simulate Purchase with Test Event Code; confirm in Meta Test Events
  3. Place one real test order (and one reservation / Tock booking if applicable); confirm Event Log shows sent
  4. In Events Manager, check server vs browser event breakdown after 24–48 hours
  5. Document whether an existing browser Purchase pixel is still active — plan for possible dedupe review
  6. Decide whether the legacy/manual loader is needed for top-of-funnel website events (it is not required for core order tracking)

13. CCPA & Limited Data Use

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:

No 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.

14. FAQ & Troubleshooting

I see “Unauthorized” when opening the app

Open 1Pixel from inside the Commerce7 admin (Apps in the sidebar), not from a saved link or a direct browser tab.

Tracking health shows yellow warnings — do I need to fix them?

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.

Tock bookings aren’t showing in the Event Log

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 reservations aren’t showing as Lead

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).

Events aren't showing up in Meta Events Manager

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.

I see "error" status in the event log

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.

My access token expired — how do I regenerate it?

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.

Will I get duplicate conversions if I also have the Facebook Pixel on my site?

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.

Does this work with tasting room / POS orders?

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.

Can I track only some event types?

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.

I need help

Contact us at 7labs@dmitru.com with a description of the issue and your winery name. We typically respond within 1 business day.