If you sell products from suppliers, your catalogue is only as accurate as the data they send. A supplier’s feed is typically a CSV file on a server, an XML or JSON endpoint or an API. It says what exists, what it costs and what is in stock. Syncing it well means customers see current prices and availability. Syncing it badly means oversells, wrong prices and, occasionally, a catalogue wiped out by one broken file.
This guide covers the full chain: formats and access, mapping, validation, pricing rules, update frequency, new and discontinued items, error handling and monitoring. It builds on order routing for dropshipping, bulk product upload for Shopify and product data enrichment.
Feed formats and access
| Format or method | Typical use | Notes |
|---|---|---|
| CSV or spreadsheet on a server (FTP, SFTP, URL) | Small and mid-sized suppliers | Simple, but column changes and encoding problems are common |
| XML | Distributors and larger suppliers | Structured, sometimes huge; parse efficiently |
| JSON API | Modern suppliers and platforms | Supports incremental updates and filters; mind rate limits |
| EDI | Large wholesalers | Standardised, requires specialist handling |
| Email attachments | Legacy suppliers | Fragile; automate retrieval and validate carefully |
| Marketplace or platform feeds | Dropshipping platforms and apps | Check terms of use and update frequency |
Ask each supplier for documentation of the feed: fields, units, update frequency, change notices and a contact for problems. Prefer authenticated access with credentials stored securely, and do not hammer their servers; fetch at the frequency they allow.
Choose a stable key
Every sync step depends on matching feed rows to your products. Use a stable identifier: the supplier’s SKU or product ID, or a GTIN. Do not match by title, which changes, or by position in the file. Store the supplier key on each of your products and variants, ideally in a metafield or custom field. For variants, you need the key at the variant level. If a supplier changes its SKUs, you will need a mapping table, so ask them to notify you in advance.
Map the fields
| Feed field | Your field | Transformation |
|---|---|---|
| supplier_sku | Variant SKU and supplier key | Trim spaces; keep case as supplied |
| title | Product title | Apply your title formula; see title formulas |
| description | Description | Rewrite or enrich; avoid duplicate supplier text |
| cost_price | Cost | Convert currency if needed; store separately from selling price |
| rrp | Compare-at or reference | Use with care and only if genuine |
| stock_qty | Inventory | Apply buffer; treat blank as unknown, not zero |
| images | Images | Download and host; check rights |
| category | Collections and tags | Map supplier categories to yours |
| weight, dimensions | Shipping fields | Convert units |
| gtin, brand, mpn | Identifiers | Validate check digits |
Validate before you apply
Feeds break in boring ways: a column is renamed, a decimal comma replaces a point, the file is truncated, prices arrive as zero or stock as negative numbers. The worst failure is the feed that is valid but wrong, such as a file with all stock set to zero because of a supplier system fault. Validation catches these before they reach customers.
| Check | Example rule | On failure |
|---|---|---|
| Structure | Expected columns present, correct types | Reject file; alert |
| Row count | Within a range of the previous file, such as plus or minus 20 percent | Hold; alert for review |
| Required values | SKU, price and stock not empty | Skip the row; log |
| Ranges | Price above zero and below a ceiling; stock between zero and a maximum | Skip or hold the row |
| Price change | More than 30 percent change | Hold for approval |
| Mass stock change | More than a set share of items going to zero | Hold the whole update |
| Duplicates | Same SKU twice | Keep one by rule; log |
| Encoding | Characters decoded correctly | Reject or convert |
Keep a snapshot of the previous good feed and of your catalogue state before applying changes, so you can roll back. Log every change with old and new values. Our supplier feed sync service is built around these controls.
Pricing rules
Selling price should be computed from cost by rules, not typed. A typical rule set uses a margin or markup by category, adds shipping or handling for heavy items, rounds to a price ending you prefer, respects a minimum price and a minimum margin and handles exceptions for particular products. Include fees from marketplaces where they apply. Recalculate when cost changes and flag changes above a threshold for review, because a supplier error could otherwise set your price to a loss-making level. For channels with minimum advertised price rules or supplier price policies, include them in the rules. See dynamic pricing for online stores for more.
Stock rules
- Buffer. Subtract a safety quantity from supplier stock, since it changes between feed updates; see inventory buffers.
- Cap. Do not show more than a sensible maximum, such as 20 or 50, so a single large sale cannot oversell stale numbers.
- Unknown stock. Missing is not zero. Decide whether to keep the last known value or hide the item.
- Lead times. If the supplier ships within days, show that on the product page.
- Multiple suppliers. If two suppliers carry the same item, choose by rule: cheapest, fastest or preferred.
New, changed and discontinued items
| Situation | Typical rule |
|---|---|
| New item in the feed | Create as draft; enrich and review before publishing |
| Changed content | Update only fields the supplier owns; keep your edits locked |
| Price or stock change | Apply automatically within rules |
| Item missing from the feed | Set stock to zero, then draft after a grace period; never delete automatically |
| Supplier marks discontinued | Stop selling when stock is gone; redirect the URL to a replacement or category |
| SKU changed | Use the mapping table to avoid duplicates |
Separate the creation of products from the frequent updating of stock and price. New products need enrichment and review; stock updates need speed. Running them as two flows lets you update stock every few hours without touching content, and create new products weekly with a review step.
Frequency
| Data | Suggested frequency |
|---|---|
| Stock | As often as the supplier updates and rate limits allow; hourly to daily |
| Price | Daily, with approval for large changes |
| New products and content | Weekly or on demand |
| Full reconciliation | Weekly: compare the whole catalogue with the feed |
Images and rights
Supplier images are often the slowest and riskiest part of a feed. Check that you have the right to use them, download them rather than hotlinking, since the supplier’s links may break or change, and process them to your standard; see product photo editing at scale. Compare image hashes between runs, so you re-download only what changed. Watch for placeholder images that suppliers use for missing photos, and hold such items back from publication. If the supplier includes watermarks or promotional overlays, ask for clean files or reshoot.
Handling several suppliers
With more than one supplier, the same product may appear in several feeds with different prices, stock and lead times. Decide the rule for choosing: lowest cost with enough stock, fastest delivery or preferred partner. Keep each supplier’s data separate until the merge step, record which supplier supplied each order line and route fulfilment accordingly; see order routing to suppliers. Track supplier performance, because a cheap supplier with frequent stock errors can cost more than it saves. Assign each supplier a contact, a feed owner on your side and an escalation path for outages.
| Choice rule | Good when | Watch for |
|---|---|---|
| Lowest cost | Margins are thin and suppliers are equally reliable | Lower reliability from the cheapest option |
| Fastest delivery | Speed drives conversion | Higher cost |
| Preferred supplier first | You have a strong relationship or volume deal | Single point of failure |
| Highest stock | Availability matters most | May be slow or expensive |
| Split by region | Suppliers serve different areas | Complex routing |
Monitor the sync
- Alert if a feed has not arrived or has failed validation.
- Report each run: rows read, created, updated, skipped, held and errors.
- Track the age of the last successful sync on a dashboard.
- Compare your stock with the supplier’s for a sample of items.
- Review the held items each day.
- Watch for supplier-driven changes in format and notify the supplier of recurring problems.
See monitoring store automations for the layers of checks that make a sync trustworthy.
A worked example
A store syncs 8,000 items from two suppliers. One morning, a supplier’s export fails and sends a file with every stock value at zero. Without validation, 8,000 products would have shown as sold out during the morning peak, with an estimated loss of perhaps 90 orders at $55 and a 35 percent margin, around $1,700 in margin, plus the lost customers. The mass-stock-change check holds the update, alerts the owner and the previous stock stays live until the supplier fixes the file. Building the validation took about 6 hours, roughly $150. The figures are illustrative.
Mistakes to avoid
- Applying feeds without validation.
- Matching on titles.
- Treating blank stock as zero.
- Deleting products automatically.
- Overwriting your edited content on every sync.
- Syncing too often and hitting limits, or too rarely and overselling.
Sources and further reading
Figures and rules in this guide come from the primary pages below. Platform limits and prices change, so open the page before you build on a number.
- Shopify Developer Docs: bulk operations, handling large catalogue operations through the API
- GS1: GTIN validation, how GTIN check digits are calculated
- Google Merchant Center Help: feed processing, common feed problems and how they are diagnosed