1. Home
  2. Knowledge Base
  3. Integrations
  4. Shopify
  5. 05. How Shopify order sync and order editing work

05. How Shopify order sync and order editing work

Once your Shopify store is connected and your products are imported, Qoblex keeps your orders in step with Shopify automatically. Every time an order is placed or changed in Shopify, Qoblex receives the update, matches it to your catalog and customers, and creates or updates the matching sale order in Qoblex. You do not import orders by hand for this to happen: the sync runs on its own in the background.

This article explains what triggers order sync, the direction it flows, how an incoming order is turned into a Qoblex sale order (customer matching, line items, allocations, taxes, invoices, payments, currency, and location), and exactly what happens when someone edits an existing order in Shopify. After reading it you will understand which fields carry across, why a Qoblex order looks the way it does, and where to look when an order does not appear as expected. Refunds, returns, and fulfillment are covered separately in How Shopify refunds, returns, and fulfillment sync work.


What triggers order sync and which way it flows

Order sync is one-directional: Shopify to Qoblex. Qoblex listens for changes in Shopify and mirrors them into your account. Editing an order inside Qoblex does not push that change back to Shopify through this sync.

There are two ways an order enters Qoblex:

  • Automatic first fill after products import. As soon as your first product import from Shopify finishes, Qoblex automatically queues a one-time import of every order that is currently open in Shopify. You do not start this yourself: it is created for you at the end of the product import so your live orders are present from day one. This runs page by page through your open orders and hands each one to the same sync used for ongoing updates. (Bringing in older, already-closed historical orders is a separate manual action, described in Import historical Shopify orders.)
  • Ongoing updates. After that, Qoblex reacts to changes in your Shopify store in real time, and each kind of change drives a specific behavior:
What happens in ShopifyWhat Qoblex does
An order is created or edited (any change to the order)Re-reads the whole order from Shopify and creates or updates the matching Qoblex sale order
An order is deletedTreats it like an update: re-reads the order, and if Shopify reports it as cancelled the matching Qoblex sale order is cancelled
An order is fulfilled or partly fulfilledUpdates fulfillment (see article 06)
A refund is createdUpdates the order for the refund (see article 06)

“Order editing” in Shopify is not treated differently from order creation. Shopify tells Qoblex an order has changed whether it was just created or later edited. Because of that, Qoblex always re-reads the full, current order from Shopify and re-applies it, rather than trying to patch individual fields. This is why an edit in Shopify (adding a line, changing a quantity, editing an address, applying a discount) reliably flows through.

What must be in place for an order to sync

An order will only turn into a Qoblex sale order when the surrounding setup is ready:

  • The store is fully connected. The integration must be a live Shopify store with valid credentials. Temporary or half-connected stores are skipped.
  • A product import has run. Orders are matched to products by the mappings created during product import, so line items only resolve once your catalog exists in Qoblex. See How Shopify product and inventory sync works.
  • Your subscription is active. If your Qoblex plan has been expired for a week (7 days) or more, incoming Shopify orders are skipped rather than created.
  • The order is not locked or legacy in Qoblex. If you have unlocked an order in Qoblex, or the order is an older-format (“v1”) order, Qoblex stops applying Shopify updates to it and records a notice on your activity feed instead. This protects manual changes you made in Qoblex from being overwritten.

While a product import is still running for a store, live order updates for that store are held and applied afterward, so an import in progress and a live edit cannot collide. If an order looks like it has not updated during an import, wait for the import to finish.

How an order is matched and built

When Qoblex receives an order, it reads the complete order back from Shopify and then runs it through a fixed sequence of steps. Understanding this sequence explains what you see on the resulting Qoblex order.

Is this a new order or an edit?

Qoblex looks up whether it already holds a sale order for that Shopify order (matched on the Shopify order’s ID for your store and integration).

  • No match: it creates a new sale order, then opens it (accepts it out of quote state) so it behaves like a normal live order.
  • Match found: it updates the existing Qoblex order in place, re-reading its lines, totals, addresses, and status from Shopify. If Shopify now reports the order as cancelled, Qoblex cancels the matching order instead of updating it.

Customer matching

Qoblex attaches a customer to every order using the customer records in your account, reusing an existing contact where it can rather than creating duplicates:

  • Company (wholesale) orders. If the Shopify order is placed on behalf of a purchasing company (B2B), Qoblex matches an existing customer by company name. If one exists it reuses it, refreshes its addresses, and adds the buyer as a contact person on that company. Otherwise it creates the company as a Wholesale customer. Orders tagged wholesale in Shopify are also treated as Wholesale.
  • Retail orders. For a normal storefront order Qoblex matches an existing customer by email and name. If a match exists it reuses it (and restores it first if it had been deleted) and merges in any new addresses from the order. Otherwise it creates a new Retailer customer from the Shopify customer’s name, email, phone, and addresses.
  • Guest / no customer. If the order carries no customer at all, Qoblex books it against a single built-in Anonymous customer contact so the order still has a home.

When a Shopify customer has no email address, Qoblex generates a placeholder address so the contact can still be saved. If you later see a customer with an unusual auto-generated email, that is why; you can edit the contact in Qoblex.

Line items and catalog matching

Each Shopify line item is matched to one of your Qoblex product variants so stock and cost are tracked correctly. Qoblex matches first on the Shopify variant mapping created during product import, and falls back to matching on SKU if the variant is not yet mapped. A Shopify “Tip” line that is not a real product is skipped. When an order is edited, existing Qoblex lines are recognised by their Shopify line ID so the edit updates the same lines rather than duplicating them.

Allocations (which location the stock comes from)

For lines that still need to ship, Qoblex reserves stock (an allocation) against the location Shopify assigned to that part of the order. It reads Shopify’s fulfillment orders that are still open, on hold, or in progress, maps each assigned Shopify location to its paired Qoblex location, and allocates the outstanding quantity there. If an assigned location is not mapped, Qoblex falls back to your default web-channel location, then to your first mapped location; if no location is mapped at all the allocation cannot be built and the sync fails with an error on your activity feed.

Order location

The order itself is stamped with a Qoblex location. If you have not set up any location mapping at all, Qoblex simply uses the integration’s default location. Once you have location mappings in place, Qoblex uses the location Shopify assigned to the order if it is mapped; if not, it uses the default web-channel location you set in your location mapping; and if neither applies it falls back to your first mapped location. Set this up under location mapping, described in Shopify locations, currency, and price lists.

Currency and exchange rate

If the order is in a different currency from your Qoblex base currency, Qoblex records an exchange rate on the order. On the first sync it derives the rate from the order (or looks it up), and it then keeps that same rate on later edits so a long-running order’s converted totals do not drift every time it is touched.

Order status

Qoblex sets the sale order’s status from the Shopify order’s financial and fulfillment status: a paid or fulfilled order becomes an open (or closed) sale order, while an order that is not yet actionable is held as a quote. A cancelled Shopify order cancels the Qoblex order.

Invoices and payments

Qoblex records payments and raises invoices from what Shopify reports, so your accounting follows the order automatically:

  • It pulls the order’s payment transactions from Shopify and records each new one against the Qoblex order. On an edit, payments already recorded are not duplicated: only payments Qoblex has not seen before are added.
  • It raises an invoice when the order has a new payment, or when the order is fully paid or refunded. A partially paid order with no new payment is left un-invoiced until the next payment arrives. Invoices raised this way are authorized automatically.

Order field mapping (Shopify to Qoblex)

The tables below list the order fields Qoblex reads from Shopify and where each one lands, derived from the live order sync request builders. Blank or missing Shopify values are handled as noted.

Order

Qoblex fieldShopify fieldNotes / transform
Order numberOrder nameThe Shopify order name (for example #1001) becomes the Qoblex order number.
Shopify referenceOrder IDThe Shopify order’s ID is stored as the order’s external reference and is what Qoblex uses to match future updates to the same order.
Order datecreatedAtStored in UTC.
Last updatedupdatedAtStored in UTC.
CurrencyPresentment currency (falls back to shop currency)The currency the customer was charged in.
Exchange rateDerived (see Currency and exchange rate above)Set once on first sync and reused on later edits.
Tax inclusivetaxesIncludedMarks whether line prices already include tax.
SourcesourceNameThe Shopify sales channel/source that created the order.
TagsOrder tagsShopify tags are joined into a comma-separated list.
NotesOrder noteThe order note text.
Billing addressBilling addressFalls back to the customer’s address if the order has none.
Shipping addressShipping addressFalls back to the customer’s address if the order has none.
CustomerOrder customer / purchasing companyResolved as described in Customer matching above.
LocationAssigned location / default web-channel locationResolved as described in Order location above.
StatusFinancial + fulfillment statusMapped to open, closed, quote, or cancelled.
Refunds, fulfillmentsOrder refunds, fulfillmentsDelegated to the refund and fulfillment sync (see article 06).

Line item

Qoblex fieldShopify fieldNotes / transform
Line referenceLine item IDUsed to recognise the same line on an edit so it is updated, not duplicated.
Product variantVariant ID, then SKUMatched to a Qoblex variant by the Shopify variant mapping first, then by SKU.
Product nameLine item title / nameThe item name shown on the line.
QuantityLine item quantityDefaults to 0 if Shopify sends none.
PricePresentment unit priceThe per-unit price in the order currency, taken from Shopify’s original presentment unit price.
Discount amountDiscount allocations (falls back to total discount)When Shopify sends discount allocations they replace the line’s total-discount figure and are summed; otherwise the line’s total discount is used.
Tax amountTax linesThe sum of the line’s Shopify tax lines, in presentment currency.
Tax classTax line titles and ratesBuilt from the Shopify tax line titles and rates; a tax line priced at zero yields a zero-rate component, and a line with no tax at all becomes a zero-rate “Sales Tax Exempt” class.

Allocation

Qoblex fieldShopify fieldNotes / transform
ItemFulfillment-order line variantMapped to the Qoblex variant via the product mapping.
LocationFulfillment order assigned locationMapped to the paired Qoblex location.
QuantityFulfillable quantityOnly lines with a fulfillable quantity above zero are allocated, from fulfillment orders that are open, on hold, or in progress.

What you see in Qoblex

A synced order appears as a normal sale order in Qoblex, under Sales > Orders, with:

  • the Shopify order number (for example #1001) as its order number and the Shopify order stored as its external reference, so it always maps back to the same order in Shopify;
  • the matched or newly created customer attached;
  • line items matched to your products, with quantities, prices, discounts, and taxes;
  • allocations against the correct location for anything still to ship;
  • any invoices and payments Shopify has reported; and
  • a confirmation on your activity feed reading Order {number} synced successfully from Shopify.

If a sync cannot be completed, Qoblex records a notice on your activity feed describing the problem (for example a failure to create or update the order) so you can act on it.

Troubleshooting order sync

An order in Shopify did not appear in Qoblex
Check that your first product import has finished: orders only match to products that already exist in Qoblex, and live updates are held while an import is running. Confirm the store is fully connected (not a temporary store) and that your Qoblex subscription is active, since orders are skipped when a plan has been expired for a week (7 days) or more. If an import is still in progress, wait for it to complete and the held updates will be applied.
I edited an order in Shopify but Qoblex did not change
Qoblex re-reads the whole order whenever it changes in Shopify, so an edit normally flows through on its own. If it did not, check whether the order was unlocked in Qoblex or is an older-format order: in both cases Qoblex stops applying Shopify updates to protect your manual changes, and records a notice on your activity feed. Re-syncing is not possible for those orders; make the change in Qoblex directly.
A line item came in without a product
Line items match to your catalog by the Shopify variant mapping first and then by SKU. If a product was not part of your import, or its SKU does not match, the line will not resolve to a Qoblex variant. Import or match the product (see article 04), then trigger a change on the order in Shopify so it re-syncs.
The order was booked against the wrong location
The order and its allocations use the location Shopify assigned, mapped to your Qoblex location; when a Shopify location is not mapped, Qoblex falls back to your default web-channel location. Review your location mapping and default web-channel location in Shopify locations, currency, and price lists.
The order shows an unfamiliar customer or email
For orders without a Shopify email, Qoblex generates a placeholder email so the contact can be saved, and for orders with no customer it uses a single built-in Anonymous customer. Edit the contact in Qoblex if you need to correct it.
Was this article helpful?

Related Articles