ConnectWiz + WooCommerce

Live integration

Two-way WooCommerce sync — with an ownership contract

Most "Woo integrations" are an import button and a prayer. This one is a governed, two-way sync where you decide, per data domain, which system owns the truth — and every conflict lands on a ledger instead of overwriting silently.

One-click pairing Field-level ownership Conflicts on a ledger
WooCommerce × ConnectWiz
Rehearse before live
Products, images, variations in
Ownership: Woo / here / both — your call
Conflict caught → ledger, retry
30+
Fields carried per product — images, sale windows, GTINs, tags, up-/cross-sells, variations
15 min
Pairing-link lifetime — the connect handshake expires instead of lingering
4
Webhook topics provisioned automatically — product, order and customer changes flow in
2,000
Products per import run — a stated ceiling, not a surprise at row 2,001

E-commerce

What it does — precisely

One-click pairing

The standard WooCommerce authorization flow provisions API keys and webhooks automatically — no key-copying ritual, no webhook checklist.

Deep import

Images, category trees, regular and sale prices with their windows, GTINs, tags, upsells and cross-sells, variation prices and images — the catalog arrives whole, not as a name-and-price skeleton.

Real write-back

Product edits here can write back to Woo — governed by a per-operation switch with a rehearse mode, so you see what would change before anything does.

Field-level ownership

Per domain you choose: data lives with Woo, lives here, or syncs both ways. Owned-elsewhere fields render read-only with the reason on screen — no two-masters chaos.

A conflicts ledger

Failed or conflicting syncs land in a visible ledger with resolve-and-retry — never a silent overwrite discovered at inventory time.

Orders join the flow

Woo orders appear with their source marked, beside orders from the chat shop, the AI and the API — one order truth across surfaces.

Under the hood

Sync engineering most integrations skip

A paranoid pairing handshake

The connect link expires in 15 minutes, the callback is marked consumed before anything else so it can never be replayed with older credentials — and the store URL used is the one you typed, never the one a callback claims.

Retry-proof by design

Woo renumbers its delivery IDs on every retry, so dedupe deliberately ignores them and keys on message content instead. Outbound, the idempotency key rides in the order’s own metadata and is re-found by search — because the dangerous case is the write that landed while the response got lost.

Second-pass relations

Upsells and cross-sells arrive as shop IDs pointing at products that may not exist yet — so they resolve in a second pass after the catalog lands, and the category tree is fetched separately because a product payload only names its leaves.

Currency read once, correctly

Woo publishes currency per order and never per product — so the shop currency is read once from the store’s own settings before the catalog imports, instead of being guessed per row.

A conservative status map

Fulfillment pushes map only where the vocabularies truly agree; a "returned" order is never force-translated — it reaches a human as an order note instead. And status notes post with customer-notify off, so Woo doesn’t email your customer twice.

Your typing wins

A field a person edited by hand here is never overwritten by an import — the sync respects the human, and says so in the source card on every item.

Setup

How it connects

01

Pair the store

Click connect, approve in your WooCommerce admin — keys and webhooks are provisioned for you.

02

Choose ownership

Pick, per data domain, who owns the truth: Woo, ConnectWiz, or both ways.

03

Rehearse, then go live

Run write-back operations in rehearse mode first; flip to live when the diff looks right.

Better together

What it composes with

WordPress plugin

The plugin signs logged-in Woo customers into the chat — the same person the sync already knows, orders attached, no re-registering.

Product feeds

The imported catalog can publish as a Google Shopping / Meta Commerce feed — one variant per row, honest skips with reasons, no invented currency conversions. See Commerce.

Wiz + flows

The AI answers "where is my order?" from live store data, and flows can react to commerce events — the sync is the floor everything else stands on.

Security & guarantees

The boring guarantees

Keys provisioned, never pasted

The wc-auth flow has your store hand keys to us server-side — encrypted at rest, with no copy-paste ritual for a human to leak.

Every webhook proven

Inbound deliveries are HMAC-signed with a secret we mint per store and compared in constant time — a spoofed "product update" bounces at the door.

Polite to your store

Verified-but-unhandled deliveries still answer success, because Woo deactivates a webhook after five consecutive failures — we absorb oddities rather than let your store give up on us.

SSRF-guarded egress

Every call to your store URL passes an egress guard — a malicious "store address" can’t be used to probe internal networks.

The honest fine print

Boundaries, stated

No payment processing

Orders sync; charging cards stays with your store and payment provider — pretending otherwise is how platforms become half-bank, badly.

Media follows ownership

Where Woo owns content fields, they are read-only here by design — the point of an ownership contract is that it binds us too.

The 2,000-product ceiling

One import run carries up to 2,000 products — a stated engineering bound. Larger catalogs are a scaling conversation we’d rather have honestly than time out silently.

Orders are read, not copied

Store orders show live on the contact (cached for a minute, ten most recent) rather than being duplicated into a second ledger — a deliberate one-source-of-truth decision, stated here.

WooCommerce FAQ

Straight answers

More in the full FAQ, or ask us directly.

Products with images, categories, regular/sale prices and windows, GTINs, tags, up- and cross-sells, and variations with their own prices and images — inbound on pairing, and outbound via write-back operations you enable per domain. Orders arrive marked with their WooCommerce source.

No — that’s the design center. Write-back runs per-operation behind a rehearse mode, field-level ownership makes owned-elsewhere fields read-only, deterministic idempotency keys make retries safe, and anything conflicting lands on a visible ledger for a human to resolve.

They solve different jobs: this integration syncs catalog and orders; the WordPress plugin embeds the chat widget and signs customers in via SSO so a logged-in Woo customer is recognized in chat. Most stores run both.

The integration distinguishes "store is down" from "this customer never bought anything" — a transport failure is surfaced as an error, never silently rendered as an empty history. Failed reads back off and retry instead of hammering your server.

Every mirrored order carries a deterministic idempotency key in its metadata, and before creating, the integration searches for that key — so even the nasty case where the write landed but the response was lost cannot produce a second order. The duplicate check runs in rehearse mode too.

Yes — customers match by account identity where one exists, and guest orders are found by email or phone search, so the person asking "where’s my package?" in chat is recognized either way.

Connected honestly beats connected loudly.

Every integration here is described by what it really does — direction, ownership and limits included.