Zapier receives store events with Webhooks by Zapier, and calls the store with the same app's Custom Request. Webhooks by Zapier is available on Zapier's paid plans.
1. Paid order → Google Sheets row
Catch the event
- In Zapier, click Create → Zaps. For the trigger, choose Webhooks by Zapier, event Catch Hook, and click Continue.
- Leave Pick off a Child Key empty and continue. Zapier shows the webhook URL: copy it.
- In the store's admin, open Configuration → Integration Hub → Webhooks → Add webhook and choose
Zapier, Make or n8n.
- Name: "Zapier: orders to Sheets"
- URL: the address you copied
- Events: untick everything except
order.paid - Save. The signing secret it shows isn't needed for Zapier.
- Give Zapier a sample. Open Preview, choose
order.paid, pick an order and the Zapier webhook, click Show message and then Send to this webhook. - Back in Zapier, click Test trigger. The sample appears with fields such as Data Number, Data Customer Email and Data Totals Total.
Add the row
Add an action: Google Sheets, event Create Spreadsheet Row. Connect your Google account and choose the spreadsheet and worksheet. Its first row should have the headers Order, Date, Customer, Email, Total and Items.
Map the columns:
Column Zapier field Order Data Number Date Data Created On Utc Customer Data Customer First Name, a space, Data Customer Last Name Email Data Customer Email Total Data Totals Total Items Data Items Sku (Zapier lists every item's SKU, separated by commas) Click Test step, then Publish.
2. New order → Slack message
Make a second Zap the same way with order.placed, then add Slack → Send Channel Message:
- Channel: #orders
- Message Text:
New orderData Number:Data Totals Total Data CurrencyfromData Customer First Name Data Customer Last Name.Data Admin Url
Give each Zap its own webhook in the store, with only the events it needs.
3. Calling the store from a Zap
To update the store, such as marking an order as shipped when your warehouse tool says so:
- In the store's admin, add an API key under API keys with only the scopes the Zap needs (
orders:writehere). - In the Zap, add Webhooks by Zapier → Custom Request:
- Method: POST
- URL:
https://shop.example.com/api/cartenvo/v1/orders/order ID/shipments - Data:
{"trackingNumber": "tracking number", "ship": true} - Headers:
Authorization=Bearer cih_…(the key),Content-Type=application/json
The API guide lists every call. Use the order's data.id (the ID in admin), not data.number.
Things to know
- Zapier's address is the only protection. Zapier's Catch Hook can't check the store's signature, so keep the webhook URL private. For workflows that create invoices or move money, check the signature in a Code by Zapier step using Catch Raw Hook (which keeps the raw body) and the code in the webhook guide.
- Repeats: the store retries a delivery Zapier doesn't confirm. Zapier may run twice for the same event; use the event's Id with a Filter or Storage by Zapier to skip repeats where that matters.
- Samples: messages from Send to this webhook have Context Sample = true. Add a Filter step that continues only if Context Sample does not exist, if a live Zap mustn't act on them.