Getting Started

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.