Once your store is connected, Qoblex keeps your products and stock levels in step with Shopify automatically, in whichever direction you chose on the settings page. This is the day-to-day sync that runs after the initial import: a product edited in Shopify flows back into Qoblex, and a product or stock change in Qoblex is pushed out to Shopify, all according to your sync directions and the per-field options you ticked.
This article explains what triggers the sync, which direction each setting drives, exactly which fields map to which Shopify fields, how Qoblex matches an incoming Shopify product to one you already have, and what you will see when it works. After reading it you will understand why a given field did or did not update, and why deleting a product in Shopify does not delete it in Qoblex.
What triggers the sync
The sync runs in two directions, each with its own trigger.
- Shopify to Qoblex (inbound). When a product is created, updated, or deleted in your Shopify admin, Shopify notifies Qoblex. Creating or updating a product is handled the same way: Qoblex fetches the current product from Shopify and updates (or creates) the matching Qoblex product. Deleting a product unlinks it (see Deleting a product in Shopify).
- Qoblex to Shopify (outbound). When you create or change a product in Qoblex, Qoblex converts it to Shopify’s format and pushes the change to your store, subject to your sync directions and field selections.
There is no separate schedule to configure: the inbound side reacts as soon as Shopify notifies Qoblex of a change, and the outbound side reacts to changes you make in Qoblex.
Gating: when Qoblex listens for inbound product changes at all
This is the single most common reason a Shopify edit does not appear in Qoblex, so it is worth stating plainly.
Qoblex only listens for product create, update, and delete changes from Shopify when at least one of Inventory, Pricing, or Product information sync is set to a Shopify-sourced direction, that is Sync from Shopify to Qoblex or Sync both ways. If all three of those are set so that Shopify is never a source (for example everything is Do not sync or Sync from Qoblex to Shopify), Qoblex does not listen for those product changes at all, and changes you make in Shopify will not flow back.
Order, fulfillment, refund, and app-lifecycle changes are listened for regardless of these settings; only inbound product changes are gated this way.
Product information sync (the direction that governs product fields)
The How would you like us to sync your products information? setting drives product-level data. Its options are:
- Do not sync (no product data flows in either direction).
- Sync from Qoblex to Shopify (Qoblex is the source).
- Sync from Shopify to Qoblex (Shopify is the source).
- Sync both ways.
What each direction does:
- Sync from Shopify to Qoblex or Sync both ways: an incoming Shopify product create/update is applied to the matching Qoblex product, updating product information (field by field, gated by the checkboxes below), variant information, mappings, and (if the Images field is ticked) images. On this inbound leg, Qoblex also removes local images that no longer exist in Shopify, so Shopify’s image set wins outright. This image removal happens whenever an inbound update is applied, under both Sync from Shopify to Qoblex and the Shopify-to-Qoblex side of Sync both ways.
- Sync from Qoblex to Shopify or Sync both ways: product changes in Qoblex are converted and pushed to Shopify. In the Do not sync or Sync from Shopify to Qoblex directions, Qoblex does not push product information out.
- Do not sync: an incoming Shopify product that has no local match is not created in Qoblex, and Qoblex records a note that the product sync is off.
Which product fields sync (the field checkboxes)
Under Which product properties and attributes would you like to sync? you tick the fields to include. These flags gate the sync of each field in both directions: on the outbound (Qoblex to Shopify) push, an unticked field is not sent; and on the inbound (Shopify to Qoblex) application, an unticked field is not updated from Shopify either. So if you untick a field, that field stops syncing both ways. Two behaviours are worth knowing:
- When Qoblex creates a brand-new product in Shopify, it sends the core fields (name, description, options, tags, type) regardless of the individual checkboxes, because a new Shopify product needs them. Handle is sent on a new product too, but only when it has a value (see below). The checkboxes take effect on later updates.
- The Brand and Product Handle (url) fields are only sent when they actually have a value in Qoblex, so an empty brand or handle will not blank out what is in Shopify.
The checkboxes are: Name / Title, Description, Brand, Options and their values (ex. color, size…), Product Type, Product Tags, Product Handle (url), Images, Sync Barcode, Inventory Tracking Policy, and Continue selling when sold out.
Push and publish new products
When product sync includes the Qoblex to Shopify direction, two extra toggles appear:
- Would you like to automatically sync new products created in Qoblex to Shopify? (
Push new products). When on, a product you create in Qoblex is created in your Shopify store. When off, Qoblex does not auto-create a Qoblex-origin product in Shopify (it records a note that new products are not pushed) unless the creation is forced by another path. Auto-creation is also blocked if product information sync for that store is Do not sync or Sync from Shopify to Qoblex, since Qoblex is not a source in those directions. - Would you like to automatically publish newly created products to your web channel? (
Publish on creation). When on, immediately after Qoblex creates the product in Shopify it publishes it (makes it available on your online store). When off, the product is created but left unpublished.
Both are on by default.
Inventory level sync
The How would you like us to sync your inventory levels (quantity adjustments, stock transfers, purchases…)? setting controls stock quantities, separately from product information.
In the settings dropdown you can pick Do not sync or Sync from Qoblex to Shopify. When set to sync from Qoblex to Shopify, Qoblex is the source of truth for on-hand quantities: adjustments, stock transfers, and purchases in Qoblex bring the Shopify quantity into line with Qoblex. Stock is pushed per mapped location, so each Qoblex location’s available quantity is reconciled against the Shopify location it is mapped to. Under the hood Qoblex does not overwrite Shopify with an absolute number: it reads the current available quantity at that Shopify location, works out the difference from the Qoblex quantity, and sends only that difference as a correction (an inventory adjustment). The end result is the same, Shopify ends up matching Qoblex, but this means Qoblex only issues an adjustment when the two differ, and a location where Shopify tracks no available quantity is skipped rather than forced. Set up those mappings first, see Shopify locations, currency, and price lists.
Qoblex can also accept stock levels from Shopify (for example during the initial import, and internally the model supports a Shopify-sourced inventory direction). If you need Shopify to drive stock on an ongoing basis, confirm the current behaviour with support, because the standard settings dropdown for inventory offers only Do not sync and Sync from Qoblex to Shopify.
Pricing and cost sync
Pricing and cost each have their own direction, independent of product information:
- How would you like us to sync your product prices? offers Do not sync, Sync from Qoblex to Shopify, and Sync from Shopify to Qoblex. When Qoblex is the source, variant prices are pushed to Shopify from the price list you selected as your price list, and the compare-at price from your compare-at list. When Shopify is the source, incoming Shopify prices update your Qoblex price lists.
- How would you like to sync your product cost data? offers Do not sync and Sync from Qoblex to Shopify.
Which price list feeds each field, the compare-at rule, and the currency and exchange-rate requirements are covered in Shopify locations, currency, and price lists. A couple of price behaviours are enforced during the push: if the compare-at price is greater than zero but lower than the price, Qoblex omits it (so a lower “compare at” is not shown as a fake discount), and if a variant’s price works out to zero, both price and compare-at are left unset rather than pushed as zero.
How Qoblex matches an incoming Shopify product
When a Shopify product arrives, Qoblex has to decide whether it belongs to a product you already have. It always tries the existing link first, then falls back to your chosen matching strategy.
- By existing link. If the Shopify product is already mapped to a Qoblex product, that product is updated. This link is the reliable path and is created the first time the two are joined.
- By your matching strategy, set under How would you like Qoblex to identify and match similar products across different stores?: – Match products by name: Qoblex looks for a Qoblex product whose name matches (trimmed of surrounding spaces). If the match is already linked to a different Shopify product, it is skipped rather than double-linked. – Match products by SKU: Qoblex matches on variant SKU. If the incoming product has no SKUs, or a matching product is already linked to another Shopify product, Qoblex records a warning and does not sync it. – Match products by barcode: same logic as SKU, matched on barcode.
- No match: if nothing matches and product sync allows it, Qoblex creates a new product from the Shopify data. If product sync is Do not sync, it is not created and Qoblex logs that the sync is off.
Deleting a product in Shopify
When you delete a product in Shopify, Qoblex unlinks the product. It removes the link (mapping) between the Shopify product and your Qoblex product, and the same for the variants, then records a note that the product was removed from that store.
Field mapping: product
The table below is the product-level mapping applied when a Shopify product is read into Qoblex and when a Qoblex product is pushed out. Direction and per-field notes reflect exactly how each field is handled.
| Qoblex field | Shopify field | Notes / transform |
|---|---|---|
| Name | Title | Pushed when Name / Title is ticked, and always for a brand-new Shopify product. |
| Description | Body (HTML) | Pushed when Description is ticked, and always for a new product. |
| Brand | Vendor | Pushed only when Brand is ticked and the Qoblex brand has a value (an empty brand is not sent). |
| Options and their values | Options (Option1/2/3) | Pushed when Options is ticked, and always for a new product. A product with a single option named Title valued Default Title is treated as a simple (non-variant) product on the way in. |
| Product Tags | Tags | Pushed when Product Tags is ticked, and always for a new product. Stored in Qoblex as the product’s categories/tags. |
| Product Type | Product Type | Pushed when Product Type is ticked, and always for a new product. |
| Product Handle (url) | Handle | Pushed when Product Handle (url) is ticked, a new product, and the handle has a value. |
| Archived status | Status (archived) |
A Shopify product with status archived comes in as archived in Qoblex; an archived Qoblex product is pushed out with status archived. |
| (publish state) | Published at | On outbound sync Qoblex sets the product as published at the current time; Publish on creation governs whether a newly created product is published. |
| Images (attachments) | Product images | See the images note below. Only synced when Images is ticked. |
Field mapping: variant
Variant-level fields map as follows. Inventory-management, overselling, and barcode fields are each gated by their own checkbox.
| Qoblex field | Shopify field | Notes / transform |
|---|---|---|
| SKU | SKU | Always mapped in both directions. On the way in it also seeds the supplier SKU. |
| Barcode | Barcode | Pushed only when Sync Barcode is ticked. |
| Tracked / Untracked | Inventory management | Pushed only when Inventory Tracking Policy is ticked: a tracked variant maps to Shopify-managed inventory, an untracked variant to no inventory management. On the way in, a variant with no inventory management is stored as untracked. |
| Allow overselling | Inventory policy | Pushed only when Continue selling when sold out is ticked: allow overselling maps to continue, otherwise deny. On the way in, continue maps to allow overselling. |
| Weight | Weight | Mapped in both directions. |
| Weight unit | Weight unit | Pushed only when the Qoblex weight unit has a value. |
| Taxable | Taxable | Pushed as taxable only when the product is taxable in Qoblex (so a non-taxable state does not reset an existing Shopify setting). |
| Option values | Option1 / Option2 / Option3 | Up to three option values, in order. A simple product’s variant uses Default Title. |
| Position | Position | Qoblex position plus one on the way out; Shopify position minus one on the way in. |
| Retail / list price | Price | Only when pricing sync includes the Qoblex to Shopify direction; taken from your selected price list, currency-converted when required. A resulting price of zero is left unset. |
| Compare-at price | Compare at price | From your compare-at price list; omitted when it is greater than zero but lower than the price. |
| Cost / moving average cost / purchase price | Inventory item cost | On the way in, Shopify’s inventory-item cost populates the variant cost, moving average cost, and purchase price (currency-converted); new variants imported from Shopify start with zero cost until this is set. |
Field mapping: inventory (per location)
Stock quantities are mapped per location, using your location mappings. Outbound stock is pushed as a delta correction: Qoblex compares its available quantity for a mapped location against Shopify’s current available quantity there and sends only the difference as an inventory adjustment, so Shopify ends up matching Qoblex.
| Qoblex field | Shopify field | Notes / transform |
|---|---|---|
| Location available quantity | Inventory level available |
Qoblex reconciles its available quantity for a mapped location against the matching Shopify location by sending the difference as a correction, not an absolute overwrite. A location that Shopify does not stock is activated with the Qoblex quantity; a location where Shopify tracks no available quantity is skipped. Each Qoblex location must be mapped to a Shopify location, or the sync raises a location mapping error (message: One of your locations is not properly mapped. Please make sure your locations are properly mapped for store [store url]). |
| Location (mapping) | Location ID | Resolved through your location mappings; one Qoblex location maps to one Shopify location and vice versa. |
| Variant | Inventory item ID | The variant must already be linked (have its Shopify inventory-item id) before its stock can be pushed. |
Field mapping: images
Images are synced only when the Images field is ticked and product information sync is not Do not sync or Shopify-sourced-only for the outbound direction.
| Qoblex field | Shopify field | Notes / transform |
|---|---|---|
| Attachment URL | Image source (Src) | The image URL is sent (URL-decoded on the way out). |
| Attachment position | Image position | Qoblex position plus one on the way out; Shopify position minus one on the way in. |
| File name | Image alt text | The attachment file name is used as the image alt text (and derived from the URL if the name is blank). |
| Variant image assignment | Image variant IDs | An image is linked to the Shopify variants that use it in Qoblex; on the way in, an image with variant ids is assigned to those variants. |
What you will see when it works
- A linked product. After the first successful sync, the Qoblex product carries a link (mapping) to the Shopify product and store; that link is what drives every later update and is what deleting the product in Shopify removes.
- Activity notes. Qoblex records a note for each inbound event, for example “[product] updated from [your store]“, “[product] created from [your store]“, or “[product] removed from [your store]“. These appear against the integration so you can see what synced and when.
- Failures you can act on. If a match is skipped or blocked, for example missing SKUs, a duplicate SKU or barcode, an unmapped location, or a product with no variants, Qoblex logs a warning naming the product and the reason. Fix the underlying data (add the SKU, map the location) and the next sync will pick it up.