Sync Types
PullPush uses a canonical data model as the hub between any two systems. Source connectors emit canonical events; destination connectors consume canonical payloads. This means any source can sync with any destination without platform-specific mapping.
Core commerce types
Stock Levels (stocklevel)
Inventory quantities per SKU, per location. One of the most critical sync types in ecommerce — a wrong stock level means overselling or underselling. Every domain has its own critical types (e.g. invoices in accounting, contacts in CRM).
Key fields: sku, quantity, locationId, updatedAt
Important: PullPush distinguishes between a real zero (item is out of stock) and "no data at this location" (item not tracked there). Emitting 0 for unknown stock would wipe destination inventory — PullPush returns null and skips instead.
Orders (order)
Order data including line items, customer info, status, and financial details.
Key fields: orderId, status, currency, totalAmount, lineItems[], customer, createdAt
Products (product)
Product catalogs including variants, pricing, descriptions, and media.
Key fields: sku, title, description, price, currency, variants[]
Communication types
| Type | Description | Key fields |
|---|---|---|
contact |
Customer and company records | email, name, company |
call |
Phone call records and metadata | callId, direction, duration |
invoice |
Financial documents | invoiceId, amount, currency, status |
How canonical mapping works
Each platform connector maps its native data structure to the canonical model:
Shopify inventory_level.available → canonical stocklevel.quantity
Linnworks StockLevel.Available → canonical stocklevel.quantity
Magento stock_item.qty → canonical stocklevel.quantity
This happens automatically for built-in connectors. Dynamic connectors define the mapping in their canonical_map configuration. AI-generated connectors have the mapping created during generation.
Per-key ordering
Events for the same canonical key (e.g., the same SKU) are always processed in order. If two stock updates arrive for SKU-1847, PullPush guarantees the second update won't be processed before the first — even under high concurrency.
This prevents the classic race condition where an older stock value overwrites a newer one.