Skip to main content

How sales orders sync between Shopify and Katana

Open sales orders, changes made to orders, and a two-way sync of fulfillment statuses

Written by David Lorbiecke

When the Shopify integration is active, sales orders flow automatically from Shopify into Katana and stay in sync if they're changed.

The integration is one-directional for order creation: Shopify orders create Katana sales orders, but creating a sales order in Katana does not create a Shopify order.

Fulfillment status flows both ways once an order exists.


Orders tab

  1. Open the Shopify configuration page in Katana.

  2. Click the Orders tab.


Shopify orders that are imported

A Shopify order is imported into Katana when all of these are true:

  • The order is in open status (not Draft, not Archived).

  • The payment status is Paid (or Payment pending if enabled).

  • Fulfillment status is Unfulfilled or Partially fulfilled.

  • It was created on or after the integration's last activation date. On initial connection, Katana backfills orders created in the last 14 days; older open orders aren't automatically imported.

Shopify orders that don't import

  • Draft or Archived orders.

  • Orders with Pending fulfillments on hold.

  • Fully Cancelled or fully Refunded orders.

  • Orders with Payment pending status when you have not enabled importing those.

  • Orders that were already imported and then deleted in Katana — these are not re-imported automatically. Katana stores a hidden Shopify order ID on each imported sales order to prevent duplicate imports, so later updates to the same Shopify order won't trigger a re-import either.

Fully fulfilled / fully shipped historical orders are not imported automatically.

Multi-currency. Shopify orders in non-base currencies import correctly if you have this feature on your account.

Orders tab settings

Setting

Default

Effect

"Paid" orders

On (cannot be turned off)

Paid Shopify orders import as Katana sales orders.

"Payment pending" orders

Off

If enabled, payment pending Shopify orders will also be imported.

Bring shipping cost as a shipping fee line

On

Shopify shipping cost appears as a single shipping fee line on the Katana sales order.

Custom line items — non-physical handling

Service

Shopify custom (one-off) non-physical line items are created in Katana as Service or Product items.

Bring order changes from Shopify to Katana

On

Line item add/remove/quantity changes update the matching Katana order.

Bring fulfillment location update for each sales order row

On

If Shopify changes the fulfillment location, the Katana order row's location is updated to the mapped Katana location.

Bring order returns from Shopify to Katana

Off

If a Shopify return is created, a return order is created in Katana and linked to the original sales order.

Sync fulfillment status

On

Two-way fulfillment status sync — see the Fulfillment sync section below.

Data mapping between Shopify and Katana

When a Shopify order is imported, fields map to the Katana sales order as follows:

Shopify field

Katana field

Notes

Order number

Sales order #

Direct mapping.

Created date

Created date

Direct mapping.

Delivery date

Calculated as Created date + the product's default delivery time.

Customer name

Customer name

Matched to an existing Katana customer if found, otherwise a new customer is created.

Billing / Shipping address

Bill to / Ship to

Direct mapping.

Line items

Line items

Matched by SKU. If a SKU isn't found in Katana, a new product is created.

Quantity

Quantity

Direct mapping.

Price

Price per unit

Adjusted for tax based on the Shopify "Prices include tax" setting.

PO Number

Customer reference #

Direct mapping.

Discounts

Discount %

Proportionally allocated across line items.

Note: A hidden Shopify ID is added to each imported SO in Katana to prevent duplicate imports, even if the order is deleted in Katana.

Order changes: how they're applied

When a Shopify order is changed (and Bring order changes is on), Katana updates the matching sales order:

  • Line item quantity changed — the matching Katana "not shipped" row is updated. If a manufacturing order (MO) is linked and is in "Done" or "Work in progress", the MO is unlinked. If the MO is "Not started", its production quantity is updated.

  • Line item added — a new row is added to the Katana order.

  • Line item removed — the matching Katana "not shipped" and "not invoiced" row is deleted. Any linked MO in "Not started" is deleted; MOs already in "Done" or "Work in progress" are unlinked.

  • Order cancelled or refunded (and not yet fulfilled) — the Katana order is deleted (provided it has no invoice and isn't in a locked inventory period).

  • Order archived (and not yet fulfilled) — same as cancelled: Katana order is deleted.

Rows that are already packed, delivered, or invoiced in Katana are not changed regardless of what happens to the corresponding Shopify line item. This protects work that has already physically happened.

What doesn't sync from order changes:

  • Changes to customer details, billing / shipping addresses, or order dates on an already-imported Shopify order do not propagate to Katana.

  • Changes to product customization options (Shopify line-item properties) on an existing line do not update the matching Katana row.

  • Shipping tracking changes in Shopify are not propagated to Katana after the fulfillment is created.


Orders tab: Fulfillment sync

Fulfillment sync runs in both directions when its toggle is on:

Shopify → Katana. When a Shopify fulfillment is marked Success, the matching Katana order is set to Delivered (or partially delivered). All-or-nothing rule: if any line item in the fulfillment can't be matched to a Katana order row, the whole fulfillment is rejected.

Katana → Shopify. When a Katana row is set to Packed or Delivered, a Shopify Fulfillment is created for those rows. When the entire Katana order is set to Delivered, the corresponding Shopify order is marked fully fulfilled.

A Katana fulfillment in "Delivered" state never gets updated from Shopify — once the order is delivered, that's it.

Pickup / POS orders. Pickup-fulfilled orders behave slightly differently from shipped orders:

  • When a pickup order is marked Picked up in Shopify, Katana marks the matching order Delivered and closes it.

  • When you mark a pickup order Delivered in Katana, the Shopify order stays Unfulfilled — you must mark it picked up in Shopify manually. See How Shopify POS orders sync to Katana for details.

Batch-tracked items. When fulfillment is initiated from Shopify (i.e. Shopify → Katana), Katana assigns batches using FIFO (first-in, first-out) for any batch-trackable items on the order.

Multiple Shopify stores

You can connect more than one Shopify store to the same Katana account. Each integration operates independently, with two cross-store behaviors worth knowing:

  • Shared products. Products with the same SKU across stores are recognized as the same Katana product — no duplicates are created.

  • Location mapping. Each store can map to the same Katana location or to different locations; configure this per store in the integration's Locations tab.

See Shopify integration overview for the full multi-store setup walkthrough.

Things to watch for

  • Order deleted in Katana doesn't come back. If you delete an imported sales order in Katana, the Shopify order is not re-imported automatically.

  • Cancelled Shopify fulfillment doesn't revert Katana. If a Shopify fulfillment is cancelled after Katana has already marked the order Delivered, Katana stays Delivered.

  • Shipping tracking is one-shot. Tracking info is added when the fulfillment is created. Later changes in Shopify don't update Katana, and vice versa.

  • Katana → Shopify is fulfillment-only. Creating a sales order in Katana does not create a Shopify order. Only fulfillment status flows back to Shopify.

  • Pickup orders need manual closure in Shopify if you mark them Delivered in Katana before they're marked picked up in Shopify.


Your feedback is invaluable. Let us know your thoughts on this article or anything in Katana you'd like to see improved: [email protected]

Did this answer your question?