Guide

How to Sync a Supplier Product Feed with Shopify

Last updated: 19 September 2026

A manual supplier update means downloading a CSV, fixing its columns in Excel and uploading it to Shopify again. Repeat the same job after every feed change.

Skip a week and prices go stale. A renamed supplier column can also break the import while the old stock remains visible to customers.

If a wholesaler, brand or dropship partner gives you a CSV feed, Pro and Scale let you schedule it without downloading a new file each day. Prices and stock update from the source. New products can be handled by a separate scheduled import.

This guide covers:

  • What a supplier sync actually needs to do
  • The four common ways merchants handle it and where each breaks
  • The criteria for a good sync setup
  • A step-by-step walkthrough of setting up automated supplier sync with Simple CSV on Pro or Scale, including matching, scheduling and monitoring
  • Real-world scenarios with example schedules
  • The tricky cases - authentication, discontinued products, file formats and limits - handled honestly

If your supplier's feed is a one-time import rather than an ongoing sync, the guide to importing products with CSV covers that scenario. This guide is for a feed that changes and needs to run again.

What "Sync" Actually Needs to Do

Before picking a tool, it helps to be clear about the four jobs a supplier sync handles. They're not the same job and they don't all need to run at the same time:

  • New products appear in the feed. The supplier added 30 SKUs last night. You want them in your store with images, descriptions and prices.
  • Existing prices change. A brand raised wholesale prices by 8% across the board. Every product you sell from them needs the new price reflected.
  • Stock levels change. The supplier sold a batch to another retailer and is down to two units of a popular SKU. Your store should show "2 in stock" before someone orders ten.
  • Products disappear from the feed. A SKU is discontinued. The supplier silently drops it. You probably don't want to keep selling it, but you also don't want it auto-deleted from your catalog without a check.

The first three jobs benefit from automation because they are frequent and predictable. The fourth is an architectural decision that needs a deliberate answer. The limitations section returns to it.

The Four Ways Merchants Handle Supplier Sync

There's no single right answer. The right choice depends on the supplier's feed format, the size of your catalog and how much engineering you want to own.

Manual download -> upload. Open the supplier's portal, download the CSV, save it, open Shopify, click Import. Works for the first few weeks, then becomes the chore that doesn't get done. One missed update can cost more in oversells than the entire automation would have cost.

Shopify's built-in CSV importer. It is free but cannot fetch from a URL, run on a schedule or map a supplier's columns to Shopify's columns. For a one-off catalog import it is fine. See the guide to importing products with CSV. For ongoing sync, it is the wrong tool.

Custom Shopify development. A developer wires the supplier's feed directly into Shopify's API. This can work well when the feed format is stable, but every supplier change creates more development work. It makes sense for very large stores with unusual requirements and costs too much for most daily price updates.

Full ERP, PIM or dropship platform. These platforms cover much more than a CSV import and often charge per SKU or order on top of a base fee. Many merchants need a small part of the feature set but pay for all of it.

A focused CSV sync tool. Right answer when the feed is CSV, sits at a public URL and you want a scheduled setup without an enterprise stack. This is where Simple CSV fits on Pro or Scale.

If your supplier's feed is XML or JSON instead of CSV, this article still covers the workflow, but you'll need a different tool for the actual sync. Inventory & Price Sync handles XML and JSON feeds.

What You Need from a Supplier Sync Setup

Use these eight criteria to evaluate any supplier sync setup, including the one you'll build below:

  • URL-based imports - no manual download step
  • Scheduled execution at a known time
  • Column mapping, so the supplier's headers don't have to match Shopify's
  • Match by SKU, barcode or product ID when Handle is not suitable
  • Choice between create-only or update-only on a per-schedule basis
  • Pre-flight preview before a run touches the live store
  • Logs with row-level detail
  • Backup integration before destructive runs

A URL import without scheduling still needs a manual run. Scheduling without column mapping depends on the supplier keeping every header unchanged. Row-level logs show exactly which SKU failed.

Setting Up Supplier Sync with Simple CSV

The walkthrough uses a wholesale supplier that publishes a CSV feed at an HTTPS URL and updates it once each night.

Step 1 - Get your supplier's feed URL

Ask the supplier for a feed URL. Most B2B portals offer one - sometimes called a "stock feed," "product feed," or "data export URL." It should be publicly accessible over HTTPS and return a CSV file when you open it in a browser.

If your team maintains the feed in a spreadsheet, you can also publish a Google Sheet as a CSV URL and use that as the scheduled source on Pro or Scale.

  • HTTPS only. Simple CSV doesn't fetch from FTP or SFTP. If your supplier only offers FTP, ask whether they have an HTTPS option or set up a small mirror script that pulls the FTP file every morning and serves it from your own HTTPS endpoint. For larger setups this is a one-line cron job to a static file host.
  • Authentication. If the URL requires a username and password, use basic auth in the URL itself: https://username:password@example.com/feed.csv. API key headers, OAuth and signed URLs aren't supported - for those, the same mirror-script approach works.
  • Test the URL in a browser in private mode, so your saved credentials don't disguise a problem. If the file downloads cleanly there, Simple CSV can fetch it.

Save the URL - you'll paste it into the import step.

Step 2 - Choose your import strategy

Simple CSV import strategy screen for choosing create or update imports
Choose whether the import should create products or update products.

When you start a new import in Simple CSV, first choose to create new products or update existing ones.

  • Inventory and price refresh. Update existing products only. This processes fewer fields and avoids re-creating products you've manually customised.
  • Adding new products from the feed. Create new products. On Pro or Scale, run this on a separate schedule from the price and stock update.

The second choice on this screen - whether one row equals one product or whether the same product spans multiple rows - depends on whether the supplier's feed contains variants. Most B2B feeds use one row per SKU.

Step 3 - Map your columns

Simple CSV column mapping interface for supplier feed columns
Map supplier feed columns to Shopify product fields.

Suppliers rarely use Shopify's column names. A feed may contain headers such as OFFERID, NAME, PRICE_OLD and WEIGHT, sometimes in another language.

Simple CSV reads the supplier's headers and proposes a mapping. You confirm or change each field. Up to five examples per column show the actual data in the feed (scroll horizontally to see them all) so you can spot a wrong guess immediately - for instance a column labeled OFFERID that actually contains a 13-digit barcode rather than a Shopify product ID.

For a typical supplier feed, the fields that matter are:

  • The match key, usually SKU
  • Price and Compare-at price if the feed has both regular and sale prices
  • Inventory quantity
  • Title, description and images - usually only on the create side, since you may not want supplier title changes overwriting your edited Shopify titles

On update runs, map only the fields you actually want changed. If you've spent time rewriting the supplier's terrible default titles, don't map the title column on the daily update. The supplier's "Premium Quality 100% Pure Set 3-Pack" doesn't need to overwrite your "Outdoor Wood Care Set" every morning.

Step 4 - Choose how products are matched

Simple CSV product matching dropdown for update imports
Choose how Simple CSV should match supplier rows to Shopify products.

For an update run, the most important decision is how Simple CSV figures out which row in the supplier's feed corresponds to which product in your store.

  • SKU - the default and the right answer for most supplier feeds. Stable across renames and URL changes. Use this unless you have a specific reason not to.
  • Barcode - useful when the supplier provides UPC/EAN/GTIN consistently but doesn't share consistent SKUs.
  • Product ID - Shopify's internal numeric ID. It is rare in supplier feeds and almost never the right choice.
  • Handle (URL) - the product's URL slug. Fragile because handles change when titles change. Avoid for supplier sync.

SKU, barcode and handle matches are exact, case-insensitive and ignore surrounding spaces. A supplier value of SF-2000-SET cannot update SF-2000-SET-CP. If an exact SKU or barcode exists on more than one product, Simple CSV skips the row and records the number of matches in the import log instead of choosing a product.

Match by SKU. The exception is large dropship setups where the supplier publishes barcodes consistently and SKUs are derived per-retailer.

Step 5 - Review the summary before running

Simple CSV preview summary before a supplier feed update
Preview the update before it changes products in Shopify.

Before any run touches your live store Simple CSV shows a pre-flight summary. A full preview of the data being changed is shown for imports of new products. For updates the summary tells you the row count, the source file or URL and the match key.

Read this screen. The number of rows tells you whether the feed is the size you expected - a feed that's suddenly 12 rows when it's normally 4,000 is a sign the supplier's export broke. The match key reminds you what's being used to find products.

The "Create backup now" link is worth using before any large update. Image changes in particular can't be reversed cleanly and a backup taken sixty seconds before a sync gives you a clean rollback path. Simple CSV integrates with the free backup app for this.

From this screen, choose Start update to run it once. On Pro or Scale, choose Schedule to run it later.

Step 6 - Schedule the recurring sync

Simple CSV schedule task screen for recurring supplier sync
On Pro or Scale, schedule the supplier feed to run automatically.

Saving the import as a Pro or Scale schedule removes the manual run.

A Pro or Scale schedule has three fields:

  • Name - anything that helps you recognise this run later, such as Supplier A - daily stock or Brand X - weekly price
  • Day of week - every day or a specific weekday
  • Time - the hour to run, in your local timezone

Choose the supported cadence for each automation. Pro automations can run as often as every 6 hours, while Scale automations can run hourly. Pro supports up to 3 automations and Scale supports up to 7.

  • Run before your shop's peak hours. If most of your traffic is 9 AM onward, schedule the sync for 4 AM. Fresh data is live before customers arrive and the sync doesn't compete with checkout traffic for API capacity.
  • Run after the supplier's update. If the supplier publishes their daily feed at 2 AM their time, schedule yours for at least an hour after, accounting for timezone differences.
  • Run separate schedules for create and update. Each schedule has one strategy, either create new products or update existing ones. For most suppliers this means two schedules. One adds new products and the other refreshes prices and stock. Two narrower schedules are easier to debug than one combined run.

Step 7 - Monitor

Once a Pro or Scale schedule is live, you check on it through two screens.

The Recent imports list shows every manual run and every scheduled Pro or Scale run with its current status - Completed, In progress, Scheduled or Not completed.

Simple CSV recent imports list with scheduled import statuses
Review recent manual runs and Pro or Scale scheduled import runs.

Open any run for the row-level detail.

Simple CSV completed import status page with row-level log entries
Open a run to inspect row-level status messages and download the log.

The summary at the top shows the number of rows processed, variants updated, failures and skipped variants. Below that, every row gets a Success, Warning or Error status with an explanation.

When an exact SKU or barcode belongs to several products, the log names the identifier, reports how many products matched and confirms that the row was skipped to avoid updating the wrong product.

For audit, the log can be downloaded as a file - useful when a customer queries a price change two months later and you need to confirm exactly what synced when.

Notifications are in-app - there's no email yet when a run fails. Until that changes, the recommended habit is to check the Recent imports list once a week, especially in the first month after setup.

Real-World Scenarios

Three common supplier sync setups and how to configure each.

Daily inventory sync from a wholesale supplier

You sell ~3,000 SKUs from a wholesaler. They publish a daily stock feed at 2 AM. You want stock levels in your store to reflect their warehouse before your customers wake up.

  • Strategy: Update existing only
  • Match: SKU
  • Mapped fields: SKU + inventory quantity and nothing else
  • Pro or Scale schedule: Every day at 4 AM local time

Minimal mapping matters when you have already edited titles, descriptions and images in Shopify. The supplier's feed may contain all of them, but the daily run should not overwrite your work. Map only the SKU and stock fields for a predictable daily update.

Weekly price update from a brand

You sell a brand's products at retail. They update wholesale prices weekly, on Sundays. You want your retail prices and compare-at prices to reflect the new wholesale costs every Monday morning.

  • Strategy: Update existing only
  • Match: SKU
  • Mapped fields: SKU, price and compare-at price
  • Pro or Scale schedule: Every Monday at 6 AM

The compare-at price column handles sale rotations. When the brand puts a product on sale, the feed populates compare-at. When the sale ends, compare-at goes blank and your "was/now" UI clears automatically.

New product additions from a dropship supplier

A dropship supplier adds new products throughout the week. You want them in your store within 24 hours with images descriptions and starting prices. You also want to review them quickly before they go live to customers.

  • Strategy: Create new products
  • Overwrite behavior: Skip products with the same SKU (so the daily run only creates products that don't already exist)
  • Mapped fields: SKU, title, description, images, price, inventory quantity and vendor
  • Pro or Scale schedule: Every day at 3 AM
  • Set new products to Draft status then promote to Active after a quick review

Create runs use an Overwrite behavior setting rather than a match key. You can import all rows, skip products with the same EAN or skip products with the same SKU. For a daily dropship feed, Skip-by-SKU is the safe choice. It stops the run from creating a duplicate each time the supplier includes a SKU added on an earlier day.

Pair this Pro or Scale create schedule with a separate update schedule for the same supplier. One creates new products. The other refreshes prices and stock on existing products, which makes a failed run easier to trace.

Advanced Pricing and Inventory Rules (Pro and Scale plans)

The Pro and Scale plans can adjust supplier stock and prices without editing the source feed. The rules below run again on every scheduled import.

Advanced inventory rules

Inventory rules can rewrite SKUs, apply a low-stock buffer and turn a supplier status into zero stock.

Add a prefix or suffix to the SKU. When the supplier's SKUs collide with your existing SKUs or when you want to namespace a supplier's products you can prefix or suffix every incoming SKU. A SKU of H4H499.2 becomes SUP-H4H499.2 with a SUP- prefix or H4H499.2-EU with an -EU suffix. The mapping screen shows a live preview of the resulting SKU as you type.

Simple CSV advanced inventory rules for SKU formatting and stock handling
Configure SKU formatting and stock rules once, then apply them on every Pro or Scale scheduled run.

Low stock -> set to 0. A safety threshold for selling sold-out products. If you set the threshold to 5 anything below 5 is treated as zero stock for the import. This protects against the standard "supplier shows 2 in stock but they shipped to another retailer first" problem - by the time you process the order they're sold out and you have an angry customer. Setting the threshold a little above zero leaves a buffer.

Set out of stock by value. Some suppliers don't track stock as a number - they use a status field like available / inactive / discontinued. This rule lets you pick a field and a value that means "out of stock". When the rule matches the row's stock is set to zero regardless of what the stock column says.

Advanced pricing rules

Pricing rules apply fixed changes or percentage markups, then round the result.

Fixed change. Add or subtract a fixed amount from every price. Useful for shipping cost markups or fixed-amount commission. Use a minus sign to subtract - -3 turns a price of 10 into 7.

Percentage change. Add or subtract a percentage. 25% turns 10 into 12.50. -20% turns 10 into 8. Percentage change is applied after the fixed change, so you can add EUR 2 for packaging and then apply a 30% margin.

Price rounding. Round to the nearest whole number, half or another increment. You can also choose a .99 or .95 ending. A supplier price of 19 with a 25% markup and .99 ending becomes 23.99 instead of 23.75.

Simple CSV advanced pricing rules for markups, rounding and price endings
Apply markups, rounding and price endings to supplier prices automatically.

A percentage markup combined with rounding to .95 keeps the same margin when a supplier raises wholesale prices. The retail prices update overnight and still end in .95.

Why these rules matter for sync

Without these rules, every supplier feed needs preprocessing before or after import. Simple CSV applies the saved rules on every scheduled run on Pro and Scale. The markup stays in the app rather than in a copy of the supplier's feed.

Advanced rules and scheduled URL imports are part of the Pro and Scale plans. The Free plan still supports manual URL imports and column mapping. Automated supplier sync requires a paid plan.

Known Limitations

Variants missing from the feed. Free and Pro do not clean up missing feed items automatically. On those plans, use a manual diff between your Shopify catalog and the latest supplier feed to find discontinued products. On Scale, optional cleanup checks every previously managed variant. A variant missing from the current feed is set to 0 at every active Shopify location, even when sibling variants are still present. Simple CSV then turns off Continue selling when out of stock for the missing variant. It does not turn that setting back on if the variant reappears, although the next import restores the feed quantity.

Inventory is set to 0 before Simple CSV applies the configured product action. A product stays active when only some variants are missing. When every tracked variant is missing, cleanup leaves the product active, sets it to draft or unlists it according to your setting. Simple CSV does not delete it.

Cleanup uses the saved Shopify variant ID when one is available. For older tracked rows, it falls back to the mapped Shopify variant SKU or barcode.

Authentication beyond basic auth. Basic auth in the URL works at https://user:pass@example.com/feed.csv. API key headers, OAuth tokens and signed URLs with expiring parameters do not. The standard workaround is a small middleware script. It authenticates to the supplier's API, downloads the CSV and serves it from your own HTTPS endpoint with basic auth. A free Cloudflare Worker can do this in under fifty lines.

FTP and SFTP feeds. Not supported. Ask whether the supplier also offers HTTPS. If FTP is the only option, use a scheduled job to copy the file to a public HTTPS path each morning.

XML and JSON feeds. Not Simple CSV's job. For non-CSV feeds, Inventory & Price Sync handles XML and JSON.

Sub-hourly sync. A Pro or Scale schedule runs once at its chosen time. Multiple schedules per day are possible within the plan limits, but a real-time or sub-hourly sync from a single feed is not. Most supplier feeds update once or twice a day, so a daily or twice-daily import fits them. Flash sales and high-velocity inventory that need sub-hourly parity require another tool.

Email failure notifications. Notifications are in-app only at the moment. Until email alerts ship, check the Recent imports list weekly.

Best Practices

Use these checks when setting up a Pro or Scale production schedule.

  • Test with one row first. Before enabling a Pro or Scale schedule, manually run a one-row CSV to confirm the mapping and matching are correct. A row-level success on a single product is much cheaper than discovering a mapping bug across 3,000 products.
  • Back up before the first large sync. A free backup app gives you a recovery path if a feed change causes the wrong updates.
  • Match by SKU. It is predictable and the right default for almost every supplier feed.
  • Schedule outside peak shop hours. Pro and Scale imports use API calls. Large imports can compete with other store activity if scheduled during a busy period.
  • Check logs weekly, especially in the first month. Most issues surface in the first few weeks, including column renames, format changes and expired authentication. After a month of clean runs, monthly checks are usually enough.
  • One schedule per concern. Within the Pro or Scale automation limit, a daily price refresh, a daily stock refresh and a daily new-product create are easier to debug as three schedules than one.
  • Save your mapping configs. Re-importing from the same source reuses the saved mapping. You do not need to map columns again each time.

Guide FAQ

Frequently Asked Questions

Can I sync inventory automatically from a supplier?

Yes, on Pro or Scale. Set up a scheduled URL import in Simple CSV pointing at the supplier's CSV feed. Choose Update existing products, match by SKU and map only the inventory quantity column. The sync runs at the scheduled time every day with no manual step.

What file formats does Simple CSV support?

CSV, XLS and XLSX. Simple CSV reads the first worksheet of an Excel workbook. For XML or JSON supplier feeds, Inventory & Price Sync is the right tool.

How often can the sync run?

Pro automations can run as often as every 6 hours, while Scale automations can run hourly. Pro includes up to 3 automations and Scale includes up to 7.

Can I authenticate to a supplier URL?

Yes, using basic auth in the URL at https://username:password@example.com/feed.csv. API key headers, OAuth and signed URLs are not directly supported. For those, set up a small middleware that fetches with the supplier's authentication and exposes the file at a public HTTPS endpoint with basic auth.

Does Simple CSV support FTP or SFTP feeds?

No, only HTTPS. If your supplier only offers FTP, the standard workaround is a small script that mirrors the FTP file to a public HTTPS URL once per day.

What happens to products that disappear from the supplier's feed?

Free and Pro do not clean up missing feed items automatically. On Scale, optional cleanup first sets every previously managed variant missing from the current feed to 0 at every active location, then turns off Continue selling when out of stock for that variant. This also applies when sibling variants remain in the feed. The configured product action runs afterwards and only when the whole product is missing. Depending on your setting, Simple CSV leaves the product active, sets it to draft or unlists it. A variant that reappears gets its feed quantity back, but Continue selling when out of stock stays off until you turn it on again.

Will I get an email if the sync fails?

Not currently. Failure notifications are in-app only - you'll see the run marked Not completed in the Recent imports list. Check it weekly, especially in the first month after setup.

How does Simple CSV match my supplier's products to my Shopify products?

Simple CSV can match by SKU, barcode, product ID or handle. SKU, barcode and handle matches are exact after letter case and surrounding spaces are ignored. If an exact SKU or barcode belongs to more than one product, the row is skipped and the import log reports the conflict.

Is scheduled sync available on the free plan?

No. Scheduled URL imports require Pro or Scale. Pro includes 3 automations that can run every 6 hours, while Scale includes 7 automations that can run hourly. Before a large scheduled update, use the free backup app.

Can I sync from multiple suppliers at once?

Yes, within your plan's automation limit. Each supplier feed uses a separate automation with its own mapping and timing. Pro supports up to 3 automations and Scale supports up to 7.

Set Up Supplier Sync

If your supplier provides a CSV feed at an HTTPS URL, the setup above takes about fifteen minutes for the first feed and five minutes for each one after. The free plan handles up to 100 rows per file so you can test the feed and mapping manually before upgrading to Pro or Scale for scheduled imports.