Supplier Sync App
User Guide
Import products and stock levels from your suppliers into Shopify. Set each supplier's defaults once, then run imports that already know your mapping, pricing and inventory rules.
On this page
Overview #
The Product Import Manager keeps your Shopify catalogue and stock in step with your suppliers.
The app connects to each supplier by live API or by CSV upload, maps their fields to your Shopify products, applies your pricing and inventory rules, and writes the result into your store. You configure a set of defaults per supplier so every import starts pre-filled and consistent.
- Match supplier items to your Shopify products by barcode, then SKU.
- Map supplier fields to Shopify fields, including dual mappings and per-field sync control.
- Price products with simple or rule-based markup, with optional price rounding.
- Control product status, null protection, delta sync, inventory buffer and continue-selling.
Install & access #
Getting the app into your Shopify admin.
Install the app
Install SAAS Integrator Supplier Sync App from the link provided by SAAS Integrator and approve the Shopify permissions it requests (products, inventory, locations).
Open it from Apps
In Shopify admin, find SAAS Integrator Supplier Sync App under Apps in the left sidebar. It opens embedded inside your admin.
Land on the dashboard
You arrive at the Product Import Manager, your home base for suppliers, connections and import history.
Key concepts #
Six terms that appear throughout this guide.
| Term | What it means |
|---|---|
| Supplier | A source of products you've set up in the Supplier Directory, with its own defaults. |
| Connection | A specific API feed or CSV source belonging to a supplier. One supplier can have several connections. |
| Defaults | The five-step configuration that pre-loads into every import for that supplier. |
| Mapping | Which supplier field fills which Shopify field. Can be dual (one source to two targets). |
| Markup | How supplier cost becomes your sell price, a simple uniform rate or conditional rules. |
| Buffer | A quantity held back from the published stock figure, so you never oversell. |
The dashboard #
The Product Import Manager, where you manage suppliers and review imports.
The dashboard opens on the Supplier Directory tab. Three summary cards across the top show your totals: Suppliers, Connections and Products. Switch to Import History at any time to review past runs.
Each supplier row shows its health, number of connections, last sync, product count, and whether defaults are set:
| Column | What it tells you |
|---|---|
| Health | Healthy or Needs attention, a quick status flag for the supplier's connections. |
| Connections | How many feeds/sources belong to this supplier. Click a row to view them. |
| Last sync | How long ago this supplier last imported. |
| Products | Number of products currently imported from this supplier. |
| Defaults | ✓ Defaults set once you've saved the five-step configuration. |
- Use Search to filter suppliers by name or email, and the All / CSV / API tabs to filter by connection type.
- Expand all opens every supplier's connections inline; + Add New Supplier starts a new supplier.
TipUse clear, consistent supplier names. They appear in Import History and on every product's provenance details.
Supplier defaults #
Set a supplier's rules once across five steps. They pre-load into every import, and you can still override any of them per-import.
Open a supplier (or click + Add New Supplier) to reach Edit: [supplier]. The defaults editor runs across five steps shown in the progress bar at the top. Use Next / Previous to move between them, Save & Close to save and return to the directory at any point, or Save Supplier Defaults on the final step.
Defaults vs. a live importThis editor sets a supplier's defaults. It does not run an import itself; it pre-fills the matching steps when you later run the import wizard.
Supplier Info
Identify the supplier and choose how its data arrives.
| Section | What to enter |
|---|---|
| Supplier Information Required | Supplier Name and Email, the basic identity of the supplier. |
| Default Connection Type Required | Choose API Connection (a live feed with auto-sync) or CSV Import (manual file uploads). |
| Default API Details Optional | For API suppliers, optionally pre-fill the Default API URL and Default Access Token, then use Validate Connection to test them. These pre-fill new connections for this supplier. |
| Internal Notes Optional | Private notes visible only to your team. |
API vs CSVChoosing API enables the Default Mapping step (Step 2), and that mapping is pre-loaded into the Key Mapping step of every import. CSV suppliers map their columns at import time instead.
Default Mapping
Tell the app which supplier field fills which Shopify field. Three counters at the top track your Source Fields (fields the supplier sends), Shopify Fields (targets available to map to), and Mapped (how many you've connected).
Each row maps one Supplier Field to one Shopify Field, with two controls on the right:
| Control | What it does |
|---|---|
| Markup (Apply) | Tick Apply on a price field to make it eligible for your Step 3 markup. Only ticked rows are affected by markup; non-price rows show a dash. |
| Sync | Controls whether this field updates when an existing product is re-synced. See How the Sync toggle works below. |
How the Sync toggle works
The Sync toggle only affects existing products on re-sync. It does not change how new products are first created.
- New products (first import): every mapped field is written from the supplier, whatever its Sync setting. The toggle has no effect when a product is first created.
- Existing products (re-sync): Sync on updates the field from the supplier on every run; Sync off leaves the field at its current Shopify value, so the import never overwrites it.
So turn Sync off for fields you curate by hand in Shopify, such as polished titles or descriptions: the first import seeds them from the supplier, and every re-sync after that leaves your edits intact.
One exception: the Tags fieldThe app adds a small source tag to every product it imports so it can recognise its own products later. On a re-sync, that tag is only re-applied when the Tags field has Sync on. Turning Sync off for Tags leaves a product's existing tags untouched, but the app won't re-stamp its source tag.
A typical default mapping looks like this:
| Supplier field | Shopify field | Markup | Sync |
|---|---|---|---|
| name | title * | — | Off |
| description | body_html | — | Off |
| barcode | barcode | — | On |
| image_url | image_src | — | Off |
| supplier_sku_code | sku * | — | On (always) |
| price | price * | ✓ Apply | On |
| rrp | compare_at_price | Apply (off) | On |
| available | inventory_quantity | — | On |
| supplier_id | vendor | — | On |
Here title, body_html and image_src have Sync off, so any edits you make to those in Shopify are preserved on every re-sync, while stock, price and the rest keep updating from the supplier.
Use + Add Mapping for another row, or ⚡ Add Dual Price Mapping for the dual-price pattern below.
Dual field mappingMap the same supplier field to multiple Shopify fields. For example, map wholesale_price to Price (with markup) and Compare At Price (without markup).
SKU always syncsThe SKU field always syncs because it's the product identity key; its Sync toggle can't be turned off.
Markup Rules
Decide how supplier cost becomes your sell price. There are two modes, chosen with the Simple Markup / Advanced Rules toggle.
Simple Markup
Apply one uniform markup to all products. Pick a Markup Type (Percentage or fixed amount) and a Value; the Quick Preview shows the resulting price, markup and margin. Optionally snap prices with Round prices to: No rounding, .99, .95, .50 or .00.
Advanced Rules
Apply different markups based on product attributes. Build each condition from three parts, a field, an operator, and a value, then set the markup that applies when the rule matches. Add more conditions with + Add condition, and more rules with + Add Markup Rule.
| Part | Options |
|---|---|
| Field | Title, SKU, Tags, Vendor, Product Type, Price, Compare at Price. |
| Operator (text fields) | is equal to, is not equal to, starts with, ends with, contains, does not contain. |
| Operator (Price / Compare at Price) | All of the above, plus greater than, greater than or equal to, less than, less than or equal to, and between. |
| Value | What to compare against (a number for price fields, text otherwise). |
| Markup | Percentage (%) or a fixed amount. The live Preview shows the new price, markup % and margin. |
Two global settings decide how rules resolve:
| Setting | Effect |
|---|---|
| Products must match | Any condition (OR) or All conditions (AND) within a rule. |
| When multiple rules match | The tie-breaker: Higher price wins, lower price wins, or by rule Priority. |
Markup needs a flagged fieldMarkup only applies to mapping rows where the Markup toggle is on (Step 2). If no field is flagged, markup has nothing to act on.
Import Settings
The behaviour rules for imports from this supplier. Every setting here is a default you can override per-import.
Default New Product Status. Choose how newly created products appear:
- Draft (default): "New products created as Draft. Review and publish from Shopify admin when ready." A safe default.
- Published: "New products Published immediately after sync. Make sure product data is ready."
Default Existing Product Status. How to handle Shopify status when an existing product is updated during sync. The default, Keep current status, no change, leaves existing products at their current Shopify status.
Default Existing Product Protection. The checkbox Respect product ownership (on, recommended) decides how much of a matched product an import may change, based on which connection created it.
In short: with protection on, stock is always updated, except for products owned by a different connection in this app, which are left completely untouched.
| Where the product came from | Stock | Other fields (title, price, images…) |
|---|---|---|
| This connection | Updated | Updated |
| Outside the app (added manually or by another app) | Updated | Left untouched |
| A different connection in this app | Skipped | Skipped |
Ownership is detected via the supplier-qty-app.connection_id metafield on each Shopify product. Turning protection off removes these guardrails: every matched product is fully overwritten regardless of origin, and products created by other connections are reassigned to this one.
Default Data Protection (Null Override). The checkbox Allow null/blank values to override existing data is off by default; blank fields in the source are skipped and existing Shopify data is preserved. Turn it on only if you want blank values to overwrite (clear) existing data.
Default Delta Sync. Enable delta sync, only process products changed since last sync is on (recommended). Unchanged products are skipped using timestamp and data-hash comparison for faster resyncs; off processes every product on every resync.
Default Inventory Location. The Shopify location where this supplier's stock is recorded. The app overwrites this location's quantities with the supplier's figures on every import. Required for the import wizard.
Use a dedicated supplier locationPoint this at a Shopify location set up to hold third-party (supplier) stock only, not a location that holds your own inventory. Think of it as where this supplier's stock lives, separate from your own stock holding. Because each import overwrites this location's quantities with the supplier's figures, choosing a location that holds your own stock would replace your real on-hand counts.
Default Inventory Buffer New reduces inventory quantities by a fixed amount before writing to Shopify. Enter a Buffer amount in units; 0 means no buffer (quantities written exactly as received). Example: supplier reports 50 units − buffer 0 = Shopify receives 50 units; a buffer of 5 would write 45.
Default Continue Selling When Out of Stock New is the checkbox Continue selling when out of stock. When on, customers can order at zero inventory (Shopify policy CONTINUE). When off (default), Shopify stops selling once stock hits zero (DENY), a safe default.
Default Supplier Data Expiry New automatically takes action on products not seen in recent supplier data. Set Expire after N days without appearing in supplier data, then choose what happens under Then (e.g. No action (track only)). Tracking metafields are written to each product: supplier-qty-app.supplier_data, supplier-qty-app.expiry_date, supplier-qty-app.date.
Purchase Orders
Purchase order generation is on the roadmap. You can configure these defaults now so they're ready when the feature launches.
| Section | What to enter |
|---|---|
| Default Fulfilment Method | Drop Ship (supplier ships to your customer) or Warehouse (supplier ships to your location first). |
| Supplier Account Details | Your account number, ABN / Tax ID, PO number prefix and currency. |
| PO Contact | Contact name, email and phone for purchase orders. |
| Delivery Address | Use your Shopify inventory location address, or enter your own. |
| Shipping | Default shipping method and freight account. |
| Order Terms | Payment terms, lead time, minimum order value and default PO notes. |
A live PO Preview shows how a purchase order will read with your settings. When you're done, click Save Supplier Defaults.
TipYou don't have to complete Step 5 to use the app today; it's optional and purely forward-looking.
The import wizard #
Running an actual import, with your supplier defaults pre-loaded.
When you start an import or re-sync, the wizard guides you through seven steps along the top progress bar. Because your supplier defaults pre-fill each step, most runs are just a matter of reviewing and confirming.
The seven steps
| # | Step | What you set |
|---|---|---|
| 1 | Data Source | The API feed or CSV file to import from. |
| 2 | Import Type | How the run behaves (e.g. full import vs re-sync). |
| 3 | Key Mapping | Supplier-to-Shopify field mapping, pre-loaded from your defaults. |
| 4 | Import Filters | Which products to include, by attribute or numeric range. |
| 5 | Markup | Pricing, simple or advanced rules, pre-loaded from your defaults. |
| 6 | Import Settings | Product status, protection, delta sync, location, buffer and more. |
| 7 | Review & Run | A single summary screen: check everything, then run or save. |
Editing an existing connectionRe-syncing a supplier opens the wizard with its last saved configuration already filled in, so you can land on Review & run and go.
Step 7 · Review & run
The final step gathers everything into one screen: "Check the summary, then start the re-sync, or save your settings to run later."
Three cards summarise the run at a glance: the number of Products, the New product status (e.g. Draft), and how many Fields mapped. Below them, the Configuration Summary lists the key settings:
| Row | Example |
|---|---|
| Source | CSV, products_export_1 (2).csv |
| Filters | 9 attributes |
| Markup | 1 condition |
| Inventory location | Your dedicated supplier stock location |
| Null override | ✓ OFF, existing data protected |
A plain-language What happens when you run this strip spells out the outcome, for example: matched products are updated at your supplier stock location by SKU; new products are created as Draft; blank source values are skipped, so existing Shopify data is protected.
Three actions sit at the bottom:
- Start re-sync: saves your settings and runs the import now. The label reflects the mode (import vs re-sync).
- Save & close: saves your settings to run later from the dashboard, without importing.
- Previous: step back to adjust any earlier choice.
Running the import
Once you click Start re-sync, progress shows inline. A bar tracks processed / total with a live percentage and a remaining count, and three tiles tally Successful, Failed and Remaining as it works. Use Cancel to stop a run in progress.
Import results
When the run finishes you get a full breakdown: a completion banner with the supplier and timestamp, and result cards for Total, Created, Updated, Skipped and Failed.
- Download full report (CSV) exports the complete result set.
- Filter the results table by outcome (All / Created / Updated / Stock Only / Skipped / Failed) or search by SKU or title.
- Each row shows the SKU, Product Title, the Action taken (e.g. Skipped), and Details, for example "No changes detected (delta sync)" when delta sync skips an unchanged product.
- Finish with ← Return to Dashboard or View Products in Shopify ↗.
Why everything might say "Skipped"If a re-sync reports products as Skipped, No changes detected (delta sync), that's expected: nothing changed at the supplier since the last run. To force a full re-process, turn off Delta Sync in Import Settings.
Import History #
A record of every run and its outcome.
Switch to the Import History tab on the dashboard to see each import logged with its supplier, timestamp and result, including any products skipped by delta sync.
Troubleshooting #
Common questions and how to resolve them.
| Symptom | Likely cause & fix |
|---|---|
| A field I edited keeps getting overwritten | Turn its Sync toggle off in Step 2, Default Mapping, so imports leave it alone. |
| Markup isn't being applied | Check that the priced field has its Markup toggle on in Step 2; markup only acts on flagged fields. |
| Blank supplier values are clearing my data | Switch Null Override off in Step 4 (it's off by default) to protect existing Shopify data. |
| Imports skip lots of products | That's delta sync skipping unchanged items. Disable it in Step 4 to force a full run. |
| Stock looks lower than the supplier's | Check the Inventory Buffer in Step 4; it subtracts a fixed amount before publishing. |
| Supplier shows "Needs attention" | Open the supplier to review its connections; data may be stale (see Data Expiry) or a feed may have failed. |
FAQ #
Quick answers.
Can I override a supplier default for one import?
Yes. Everything in the five-step defaults editor pre-fills the import wizard, but you can change any value for a single run without altering the saved default.
Does a buffer ever oversell?
No. The buffer is subtracted before publishing, so Shopify always shows a quantity at or below true stock.
Do I need to fill in Purchase Orders?
No. Step 5 is an optional preview of an upcoming feature; the app works fully without it.
Change log #
What changed in each release. Newest first.


