The snag
Merchandising teams manage the item catalog in Airtable, but every launch requires re-keying every SKU into the ERP.
How Zivvy helps
Two-way sync of Airtable records into /v1/items via the Airtable REST API and Zivvy webhook events on items.updated.
Before Zivvy
Handoffs go missing, owners are unclear, audits get painful.
What you get
- Airtable base → /v1/items with UOM, tax, and price list
- Zivvy items.updated → Airtable row updates
- Bulk upload via CSV attachment on a base view
Workflow stream
New Airtable row → /v1/items with unit, tax, and price list
Common uses
01
New Airtable row → /v1/items with unit, tax, and price list
02
Zivvy items.updated → Airtable field update
03
Airtable form → new /v1/items request
Integration code
Open API referenceUpsert item from Airtable
curl -X POST https://integrate.zivvy.xyz/v1/items \
-H "Authorization: Bearer $ZIVVY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"item_code": "SKU-042",
"item_name": "Ceramic Mug",
"stock_uom": "Nos",
"standard_rate": 12.5,
"external_id": "airtable-recABC"
}'Bidirectional sync
import os, requests
from pyairtable import Api
air = Api(os.environ["AIRTABLE_TOKEN"])
table = air.table("appXXXX", "Items")
for rec in table.all():
requests.post(
"https://integrate.zivvy.xyz/v1/items",
headers={"Authorization": f"Bearer {os.environ['ZIVVY_API_KEY']}"},
json={
"item_code": rec["fields"]["SKU"],
"item_name": rec["fields"]["Name"],
"standard_rate": rec["fields"].get("Price", 0),
"external_id": rec["id"],
},
).raise_for_status()API endpoints
GET /v1/itemsPOST /v1/itemsPATCH /v1/items/{name}POST /v1/webhook-subscriptions
Events emitted
HMAC-SHA256 signed webhooks, retried for 24 hours.
- items.created
- items.updated
- items.deleted
0
free seats forever
0
card required to start
1
workspace for the workflow
Questions
Ready to try it?
Free plan. Two seats. No card.