Advanced Zap for Commerce7 — Docs
by 7Labs · support@7labs.io

Advanced Zap for Commerce7

Connect Commerce7 to 6,000+ apps with real-time triggers and write-back actions — no code required.

💡 Real-time delivery: Events are pushed to Zapier via REST hooks the moment they happen in Commerce7. No polling delay — your Zaps fire in under a second.

Key capabilities:

Authentication

This integration uses an API key for authentication. Each winery gets a unique key scoped to their account.

1
Open the app in Commerce7 admin
Go to Apps → Advanced Zap for Commerce7 by 7Labs → click Reveal to show your API key.
2
Connect in Zapier
In the Zapier editor, when prompted for authentication, paste your API key. Zapier will verify it immediately.
3
One key, all Zaps
Your API key is shared across all Zaps. To rotate it, click Regenerate in the dashboard, then update it under Connected Accounts in Zapier.

Quick Setup

After connecting your account, create your first Zap:

  1. Click Create Zap in Zapier
  2. Search for Advanced Zap for Commerce7 and select it as the trigger app
  3. Choose a trigger event (e.g. New Customer)
  4. Choose your action app (e.g. Mailchimp, Slack, Google Sheets)
  5. Map the fields and turn your Zap on
⚠ When testing a trigger in Zapier, it uses polling to fetch recent events. For triggers to fire in real time during live use, your Zap must be turned on.

Triggers — Customers

New Customer

Fires when a new customer account is created in Commerce7.

FieldTypeDescription
customer_idstringCommerce7 customer ID
emailstringPrimary email address
first_namestringFirst name
last_namestringLast name
phonestringPrimary phone number
birth_datestringBirth date (YYYY-MM-DD)
tagsstringComma-separated tags
created_atstringISO 8601 timestamp
tenant_idstringYour winery slug

Updated Customer

Fires when any customer field is changed in Commerce7. Returns the same fields as New Customer.

Triggers — Orders

New Order

Fires when any order is placed or submitted in Commerce7.

FieldTypeDescription
order_idstringCommerce7 order ID
order_numberstringHuman-readable order number
customer_idstringCustomer ID
customer_emailstringCustomer email
order_totalnumberTotal order amount in USD
item_countnumberNumber of line items
statusstringOrder status
created_atstringISO 8601 timestamp

High-Value Order ($500+)

Fires only when an order total is $500 or more. Returns the same fields as New Order. Use this to identify VIP purchases without filtering in Zapier.

Triggers — Wine Club

New Club Membership / Cancelled / Paused / Resumed

One trigger for each membership lifecycle event. All return the same fields:

FieldTypeDescription
membership_idstringMembership ID
customer_idstringCustomer ID
club_idstringClub ID
club_titlestringClub name
statusstringActive / Cancelled / Paused
created_atstringISO 8601 timestamp

Club Allocation Processed / Shipped

Fires when a club run is charged (Processed) or dispatched (Shipped).

FieldTypeDescription
allocation_idstringAllocation ID
club_idstringClub ID
club_titlestringClub name
total_membersnumberMembers in this run
total_revenuenumberTotal revenue for the run
allocation_datestringISO 8601 timestamp

Triggers — Reservations

New Reservation / Reservation Cancelled

FieldTypeDescription
reservation_idstringReservation ID
customer_idstringCustomer ID
reservation_typestringExperience name (e.g. "Estate Tour")
party_sizenumberNumber of guests
datestringReservation date (YYYY-MM-DD)
timestringReservation time (HH:MM)
statusstringConfirmed / Cancelled

Triggers — Products & Tags

New Product

FieldTypeDescription
product_idstringProduct ID
titlestringProduct title
typestringWine / Merchandise / Package / Experience
skustringFirst variant SKU
pricenumberFirst variant price

Tag Added to Customer

FieldTypeDescription
tag_idstringTag ID
titlestringTag name

Actions — Customers

Create Customer

FieldRequiredDescription
emailrequiredEmail address
first_namerequiredFirst name
last_namerequiredLast name
phoneoptionalPhone number
birth_dateoptionalYYYY-MM-DD
tagsoptionalComma-separated tags to assign

Update Customer

Looks up the customer by email and updates any provided fields.

FieldRequiredDescription
emailrequiredUsed to look up the customer
first_nameoptionalNew first name
last_nameoptionalNew last name
phoneoptionalNew phone number
birth_dateoptionalYYYY-MM-DD

Add Tag to Customer / Remove Tag from Customer

FieldRequiredDescription
emailrequiredCustomer email
tagrequiredTag name — must exist in Commerce7

Actions — Products

Create Product

FieldRequiredDescription
titlerequiredProduct name
typerequiredWine / Merchandise / Package / Experience
descriptionoptionalProduct description
skuoptionalSKU
priceoptionalPrice in USD

Create Product Variant

FieldRequiredDescription
product_idrequiredParent product ID
skurequiredVariant SKU
pricerequiredPrice in USD
labeloptionalVariant label (e.g. "750ml")
inventoryoptionalStarting inventory count

Actions — Reservations

Create Reservation

FieldRequiredDescription
emailrequiredCustomer email
experience_idrequiredCommerce7 experience ID
reservation_daterequiredYYYY-MM-DD
reservation_timerequiredHH:MM (24-hour)
party_sizerequiredNumber of guests
notesoptionalSpecial requests or notes

Cancel Reservation

FieldRequiredDescription
reservation_idrequiredReservation ID to cancel
reasonoptionalCancellation reason

How It Works

Events flow from Commerce7 to your Zaps in two stages:

1. Webhook → Server

Commerce7 sends a signed webhook to https://zap.dmitru.com/webhook every time an event occurs. The server verifies the HMAC signature, normalises the payload, and stores it in a 7-day rolling queue.

2. Server → Zapier (instant)

Simultaneously, the server pushes the payload to all active Zap connections via REST hooks. This is what gives sub-second delivery — no polling required.

🔄 Polling fallback: When you click "Test trigger" in the Zapier editor, Zapier fetches recent events via polling. This uses the 7-day event queue and returns the 3 most recent events of that type.

Dashboard Features

Your app dashboard (accessible from Commerce7 admin) includes several tools to help you manage and debug your integrations. To try the UI with sample data only, use /app?tenantId=demo (case-insensitive). If you configure that URL in the Commerce7 app settings but the iframe still shows your real winery ID in the query string, add &demo=1 — when the app loads inside Commerce7 admin, that flag selects the demo tenant so you are not blocked by Subscribe. Shortcuts: /preview and /demo redirect to the same demo URL (with that flag). The demo is read-only and does not expose a real API key.

FeatureDescription
Live Event FeedReal-time stream of the last 20 events received from Commerce7. Auto-refreshes every 30 seconds.
Activity StatsEvents processed, active Zap connections, and delivery errors over the configured retention window (default 14 days).
Send Test EventFire a sample payload to all connected Zaps for any trigger type — useful for testing without waiting for real Commerce7 activity.
Payload InspectorView the exact JSON your Zaps receive, based on the last real event of each trigger type.
Delivery LogHistory of the last 30 webhook deliveries to your Zaps, with HTTP status and timestamps. Errors show the failure reason.
Webhook Endpoint URLThe Commerce7 webhook endpoint (/webhook). Commerce7 configures this automatically when you install the app.

Closed-Loop Automations

Because this app includes both triggers and write-back actions, you can create Zaps that read from Commerce7 and write back into it. For example:

These closed loops keep your Commerce7 customer data accurate without any manual work.

Server environment

These variables are set on the host (e.g. Fly.io secrets or .env locally). You rarely need to change them unless you self-host.

VariablePurpose
APP_URLPublic base URL of this app (used in links and logs).
C7_APP_ID / C7_APP_SECRETCommerce7 app credentials (required).
SESSION_SECRETSecret for embedded dashboard sessions (required).
DB_PATHSQLite file path (default ./data/zapier_c7.db; Fly uses /data/zapier_c7.db).
EVENT_RETENTION_DAYSHow long events and stats are kept (default 14).
C7_RESERVATION_TENDER_TYPEOptional; if Commerce7 requires a tender type on Zap-created reservations (e.g. Cash).
NODE_ENVUse production for secure cookies and to require the embedded app to load from Commerce7 (except the public tenantId=demo dashboard).

Troubleshooting

My Zap isn't firing
Make sure your Zap is turned on in Zapier. Zaps only receive live webhooks when active. Also check the Delivery Log in your dashboard — if deliveries show errors, your Zap URL may have changed.
The test in Zapier returns no data
The test uses the stored event queue (retention defaults to 14 days). If no events of that type have occurred in that window, the test may return empty. Use the Send Test Event button in your dashboard to fire a sample payload immediately.
I regenerated my API key — now my Zaps are broken
Go to Zapier → My Apps → find Advanced Zap for Commerce7 → click the three-dot menu → Reconnect → paste your new API key. All Zaps using that connection will resume automatically.
Deliveries show "error" in the dashboard
This usually means the Zapier webhook URL has changed (e.g. you turned the Zap off and on). Zapier automatically re-subscribes when you turn a Zap back on, so the old URL is stale. Turn the Zap off and back on to refresh the connection.
An action returned an error
Actions call the Commerce7 REST API directly. Common reasons for failure: the customer email doesn't exist in Commerce7, a tag name doesn't match exactly, or a required field is missing. Check the error message in Zapier's task history for details.
How do I get support?
Email support@7labs.io with your winery ID (shown in your dashboard) and a description of the issue. Include the Zapier task ID if relevant.