Quick Setup

  1. In the Synkro settings navigate to External data feeds.
  2. Click Create new feed.
  3. Enter the URL of your hosted CSV file, choose the inventory location to update, and configure which columns contain your identifier (SKU/barcode) and inventory levels.
  4. Optionally add column mappings to write additional columns from the feed to variant metafields.
  5. Click Save.

Synkro will begin downloading your feed on the schedule you selected, applying the inventory levels it contains to the chosen location, and writing any mapped columns to the matching variants.

Overview

External data feeds let Synkro periodically download a CSV file from a URL and apply the data it contains to the product variants in your store. Every feed applies inventory levels to a location in your store, and can optionally map additional columns in the file to variant metafields. This is commonly used to keep Shopify in sync with a supplier, warehouse, or third-party system that publishes stock levels and product data as a hosted CSV file.

Unlike the CSV batch inventory upload tool, which requires you to manually upload a file each time, an external data feed runs automatically on a recurring schedule.

External data feeds require a Synkro plan which includes the external data feed feature. If your current plan does not include it, the External data feeds settings page will present an upgrade option.

Creating a feed

In the Synkro settings, navigate to External data feeds and click Create new feed. Configure the following:

  • Name — an optional label to help you identify the feed, e.g. “Supplier warehouse feed”.
  • Feed URL — the URL where your CSV file is hosted. The URL must be publicly accessible over http:// or https://, and must serve a file smaller than 5MB. Synkro validates the URL when you save the feed, and will show an error if the file cannot be downloaded.
  • File format — currently only CSV files are supported.
  • Location — the inventory location in your store which the feed’s inventory levels will be applied to.
  • Match products by — whether the identifier values in your feed are SKUs or barcodes. Product variants in your store are matched against the feed using this identifier.
  • Update frequency — how often Synkro downloads and processes the feed: every 15 minutes or every 30 minutes.
  • Identifier column — the column in your CSV file containing the SKU or barcode. Column numbers start at 0, so the first column is 0.
  • Inventory column — the column in your CSV file containing the inventory level. Column numbers start at 0.
  • Skip rows — the number of rows to skip at the top of the file. Use this to skip header rows, e.g. set it to 1 if the first row of your file contains column headings.
  • Column mappings — optional mappings from additional columns in the file to properties of the matching variants. See Mapping columns to variant metafields below.

Feed file format

Your feed should be a comma-delimited CSV file. Synkro always reads the identifier column and the inventory column, plus any columns you have added as column mappings. Any other columns are ignored, so your feed can contain additional data.

For example, with Skip rows set to 1, Identifier column set to 0, and Inventory column set to 2:

sku,product name,quantity
SHIRT-S,Small shirt,12
SHIRT-M,Medium shirt,3
SHIRT-L,Large shirt,0

Mapping columns to variant metafields

Beyond inventory levels, a feed can also carry other data about your products, such as lead times, supplier references, or restock dates. Column mappings let you write those columns to metafields on the matching variants each time the feed is processed.

In the feed form, click + Add column mapping under Column mappings. Each mapping has two fields:

  • Column — the column in your CSV file to read. Column numbers start at 0.
  • Variant property — where the column’s value should be written on the matching variant. Currently this must be a variant metafield, written in the format metafield:namespace.key, for example metafield:custom.lead_time. The namespace and key can contain letters, numbers and underscores.

You can add as many mappings as you need, but each variant property can only be mapped once per feed. Click Remove next to a mapping to delete it.

For example, with Identifier column set to 0, Inventory column set to 1, and column mappings of 2 to metafield:custom.lead_time and 3 to metafield:supplier.reference:

sku,quantity,lead time,supplier ref
SHIRT-S,12,3 days,SUP-1001
SHIRT-M,3,3 days,SUP-1002
SHIRT-L,0,,SUP-1003

Each time the feed is processed, the custom.lead_time and supplier.reference metafields on each matched variant are set to the values in those columns.

Keep the following in mind:

  • Mapped values are written to the variant as single line text metafields. If the metafield already exists on the variant with a different type, make sure its definition accepts a text value.
  • Blank cells are skipped. In the example above, the SHIRT-L variant keeps its existing custom.lead_time value while its supplier.reference metafield is still updated. Inventory for the row is applied as normal.
  • If a mapped column does not exist in a row, that mapping is skipped for the row.
  • Rows which are skipped for inventory reasons, such as a missing identifier or a non-numeric inventory value, are skipped entirely, so no metafields are written for them either.

How feeds are processed

Each time your feed is processed, Synkro downloads the file and works through it row by row:

  • Identifier values are matched against the product variants in your store using your selected Match products by identifier. Rows with identifiers that do not match any variant in your store are ignored.
  • For each matched variant, the on-hand inventory level at the feed’s location is set to the value in the inventory column.
  • A blank inventory value is treated as 0.
  • The feed’s location will be activated for matched variants if it is not already.
  • For each matched variant with mapped column values, the mapped metafields are set to the values in those columns.

Only the variants included in your feed are modified — inventory and metafields for variants not present in the feed are left untouched. If the feed’s location has been deactivated in Shopify, the feed will not be processed until the location is active again.

If your store’s inventory is synced to other stores or locations with Synkro, inventory changes applied by the feed will flow through your location connections like any other inventory change. Likewise, metafields written by the feed are synced to connected stores like any other metafield change.

Managing feeds

The External data feeds settings page lists your configured feeds. From there you can edit a feed’s configuration, including its column mappings, or delete it. Deleting a feed stops Synkro from downloading and processing it — your existing inventory levels and metafields are left as-is.

Troubleshooting

  • The feed URL could not be validated — Synkro performs a check against your feed URL when saving. Make sure the URL is publicly accessible (no login required), responds successfully, and serves a file smaller than 5MB.
  • Inventory is not updating — confirm that the identifier values in your feed exactly match the SKUs or barcodes of the variants in your store, and that the correct Identifier column and Inventory column are configured (remember that column numbers start at 0).
  • Rows with invalid inventory values — inventory values must be whole numbers. Rows with non-numeric inventory values are skipped, including any mapped metafields for those rows.
  • A column mapping will not save — the variant property must use the format metafield:namespace.key, using only letters, numbers and underscores in the namespace and key. Each variant property can only be mapped once per feed.
  • Metafields are not updating — confirm the mapped column numbers are correct and the cells are not blank, and that your plan includes metafield syncing.