Advanced Zap for Commerce7
Connect Commerce7 to 6,000+ apps with real-time triggers and write-back actions — no code required.
Key capabilities:
- 14 real-time triggers — customers, orders, wine club, reservations, products, tags
- 8 write-back actions — create/update customers, manage tags, create products, manage reservations
- Closed-loop automation — use triggers and actions together to write data back into Commerce7
- High-value order trigger — fires only when order total ≥ $500, no Zapier filter needed
- Configurable event queue — recent events are retained for Zapier polling and dashboard stats (default 14 days, see environment)
- Delivery log — see every webhook delivery, status, and error in your dashboard
- Test event button — fire sample payloads to your Zaps without waiting for real Commerce7 activity
Authentication
This integration uses an API key for authentication. Each winery gets a unique key scoped to their account.
Quick Setup
After connecting your account, create your first Zap:
- Click Create Zap in Zapier
- Search for Advanced Zap for Commerce7 and select it as the trigger app
- Choose a trigger event (e.g. New Customer)
- Choose your action app (e.g. Mailchimp, Slack, Google Sheets)
- Map the fields and turn your Zap on
Triggers — Customers
New Customer
Fires when a new customer account is created in Commerce7.
| Field | Type | Description |
|---|---|---|
customer_id | string | Commerce7 customer ID |
email | string | Primary email address |
first_name | string | First name |
last_name | string | Last name |
phone | string | Primary phone number |
birth_date | string | Birth date (YYYY-MM-DD) |
tags | string | Comma-separated tags |
created_at | string | ISO 8601 timestamp |
tenant_id | string | Your 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.
| Field | Type | Description |
|---|---|---|
order_id | string | Commerce7 order ID |
order_number | string | Human-readable order number |
customer_id | string | Customer ID |
customer_email | string | Customer email |
order_total | number | Total order amount in USD |
item_count | number | Number of line items |
status | string | Order status |
created_at | string | ISO 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:
| Field | Type | Description |
|---|---|---|
membership_id | string | Membership ID |
customer_id | string | Customer ID |
club_id | string | Club ID |
club_title | string | Club name |
status | string | Active / Cancelled / Paused |
created_at | string | ISO 8601 timestamp |
Club Allocation Processed / Shipped
Fires when a club run is charged (Processed) or dispatched (Shipped).
| Field | Type | Description |
|---|---|---|
allocation_id | string | Allocation ID |
club_id | string | Club ID |
club_title | string | Club name |
total_members | number | Members in this run |
total_revenue | number | Total revenue for the run |
allocation_date | string | ISO 8601 timestamp |
Triggers — Reservations
New Reservation / Reservation Cancelled
| Field | Type | Description |
|---|---|---|
reservation_id | string | Reservation ID |
customer_id | string | Customer ID |
reservation_type | string | Experience name (e.g. "Estate Tour") |
party_size | number | Number of guests |
date | string | Reservation date (YYYY-MM-DD) |
time | string | Reservation time (HH:MM) |
status | string | Confirmed / Cancelled |
Triggers — Products & Tags
New Product
| Field | Type | Description |
|---|---|---|
product_id | string | Product ID |
title | string | Product title |
type | string | Wine / Merchandise / Package / Experience |
sku | string | First variant SKU |
price | number | First variant price |
Tag Added to Customer
| Field | Type | Description |
|---|---|---|
tag_id | string | Tag ID |
title | string | Tag name |
Actions — Customers
Create Customer
| Field | Required | Description |
|---|---|---|
email | required | Email address |
first_name | required | First name |
last_name | required | Last name |
phone | optional | Phone number |
birth_date | optional | YYYY-MM-DD |
tags | optional | Comma-separated tags to assign |
Update Customer
Looks up the customer by email and updates any provided fields.
| Field | Required | Description |
|---|---|---|
email | required | Used to look up the customer |
first_name | optional | New first name |
last_name | optional | New last name |
phone | optional | New phone number |
birth_date | optional | YYYY-MM-DD |
Add Tag to Customer / Remove Tag from Customer
| Field | Required | Description |
|---|---|---|
email | required | Customer email |
tag | required | Tag name — must exist in Commerce7 |
Actions — Products
Create Product
| Field | Required | Description |
|---|---|---|
title | required | Product name |
type | required | Wine / Merchandise / Package / Experience |
description | optional | Product description |
sku | optional | SKU |
price | optional | Price in USD |
Create Product Variant
| Field | Required | Description |
|---|---|---|
product_id | required | Parent product ID |
sku | required | Variant SKU |
price | required | Price in USD |
label | optional | Variant label (e.g. "750ml") |
inventory | optional | Starting inventory count |
Actions — Reservations
Create Reservation
| Field | Required | Description |
|---|---|---|
email | required | Customer email |
experience_id | required | Commerce7 experience ID |
reservation_date | required | YYYY-MM-DD |
reservation_time | required | HH:MM (24-hour) |
party_size | required | Number of guests |
notes | optional | Special requests or notes |
Cancel Reservation
| Field | Required | Description |
|---|---|---|
reservation_id | required | Reservation ID to cancel |
reason | optional | Cancellation reason |
How It Works
Events flow from Commerce7 to your Zaps in two stages:
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.
Simultaneously, the server pushes the payload to all active Zap connections via REST hooks. This is what gives sub-second delivery — no polling required.
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.
| Feature | Description |
|---|---|
| Live Event Feed | Real-time stream of the last 20 events received from Commerce7. Auto-refreshes every 30 seconds. |
| Activity Stats | Events processed, active Zap connections, and delivery errors over the configured retention window (default 14 days). |
| Send Test Event | Fire a sample payload to all connected Zaps for any trigger type — useful for testing without waiting for real Commerce7 activity. |
| Payload Inspector | View the exact JSON your Zaps receive, based on the last real event of each trigger type. |
| Delivery Log | History of the last 30 webhook deliveries to your Zaps, with HTTP status and timestamps. Errors show the failure reason. |
| Webhook Endpoint URL | The 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:
- High-Value Order fires → automatically tag the customer as "VIP" in Commerce7
- New Club Member fires → add "Club Member" tag to their profile
- Club Membership Cancelled → remove the "Club Member" tag automatically
- Reservation Cancelled → tag the customer "Needs Rebooking" for follow-up
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.
| Variable | Purpose |
|---|---|
APP_URL | Public base URL of this app (used in links and logs). |
C7_APP_ID / C7_APP_SECRET | Commerce7 app credentials (required). |
SESSION_SECRET | Secret for embedded dashboard sessions (required). |
DB_PATH | SQLite file path (default ./data/zapier_c7.db; Fly uses /data/zapier_c7.db). |
EVENT_RETENTION_DAYS | How long events and stats are kept (default 14). |
C7_RESERVATION_TENDER_TYPE | Optional; if Commerce7 requires a tender type on Zap-created reservations (e.g. Cash). |
NODE_ENV | Use production for secure cookies and to require the embedded app to load from Commerce7 (except the public tenantId=demo dashboard). |