Connect a store, decide who owns the count, choose a direction for products, stock and orders, turn on webhooks and read the sync history.
A store connection brings the store's products, stock and orders into Karmaflow.ai and, when you choose, sends products and stock back. Each store is its own connection with its own settings, so a business with a Shopify storefront and a WooCommerce wholesale site can run both. The first decision is who owns the count; everything else follows from it.
inventory:config:manage) — the seeded Manager role.Inventory → Setup → Stores (/inventory/stores).
myshopify.com address), the Admin API access token and the API secret key. WooCommerce: enter the Store URL, the Consumer key and the Consumer secret.Credentials are stored encrypted and never shown again. Nothing syncs until you choose the directions and run a sync; a failed verification shows the store's error on the connection, with Verify to try again after you fix the key.
Open the connection. The first card, Who owns the count, is the one setting that decides what an order does:
| Choice | What happens |
|---|---|
| The store | Shopify or WooCommerce already deducts for its own orders. Its stock figure is pulled here on every sync and webhook, and store orders are recorded without touching stock. Right for a store that is already selling and for a business that counts in the store. |
| Karmaflow | Stock is managed here — several locations, purchase orders, counts — and the level is pushed to the store after every change. Store orders deduct here, like any other order. Right when the shelf, not the storefront, is the truth. |
Switching from The store to Karmaflow changes the Stock direction to Here → store and vice versa; check the levels before the first push, because the next change to a level overwrites the store's figure.
Click Save.
Under Locations, click Load from Shopify and pick which of your locations each Shopify location is. Unmapped locations land on the default. Under Karmaflow authority, a level pushed to Shopify goes to the location mapped to it; under store authority, each Shopify location's figure lands on its mapped location.
WooCommerce has one stock figure per product; it lands on, and is pushed from, the connection's default location.
The Sync now card has two buttons:
Under the buttons: the last run's figures (products created and updated, levels, pushed, orders) and the run history with each run's trigger (manual, tick, webhook, connect), status (ok, partial, failed) and errors.
A product pulled from the store remembers the values it was synced with. On the next pull, a field you changed here since then is kept, and a field you did not touch takes the store's value — so a description rewritten here survives a price change made in the store. A store-side SKU change that collides with another local SKU keeps the local one.
A run reads up to 50 pages of 100 products; a larger catalog is brought in across runs rather than in one request storm, and the run says it was truncated.
Click Register under Real-time updates (webhooks). Karmaflow.ai registers the topics on the store through its API:
products/create, products/update, products/delete, inventory_levels/update, orders/create, orders/updated, orders/paid, orders/fulfilled, orders/cancelled. Shopify signs each delivery with the app's API secret key, so the key must be saved on the connection.product.created, product.updated, product.deleted, order.created, order.updated, signed with a secret only this workspace knows.The card shows the Receiver URL (copy it if you ever register a webhook by hand), how many are registered, and the last delivery. Re-register repairs them; Remove deletes them from the store; Regenerate URL & secret invalidates the existing registrations until you register again. A delivery with a bad signature is refused and nothing is written.
A store without webhooks still works: changes arrive on the scheduled sync.
After three consecutive failures the connection backs off (five minutes, doubling, up to six hours) and raises the notification A store sync stopped working — email straight away, by default, to everyone with Manage Inventory Settings, Locations & Stores — and the workflow trigger Store sync failed fires with the platform and the error. The connection card shows the last error and when it retries; the Settings hub row reads N stores connected · 1 failing. A successful run clears the backoff.
Disconnect removes the connection and its webhooks. Products and orders already imported stay, with their store links kept, so reconnecting the same store relinks them instead of creating duplicates.
.htaccess or ask the host.