Skip to content

Connecting a Supplier Feed

An import feed is a connection to a supplier’s product catalogue. CatalogRelay downloads the feed on a schedule, processes the rows, and updates your normalized catalogue.

Before adding a feed, create a supplier:

  1. Go to SuppliersAdd supplier
  2. Enter a Name (e.g. “Acme Wholesale”)
  3. Optionally add Notes (internal reference — not visible to the supplier)
  4. Set a Priority (used when the same product appears in multiple suppliers — higher priority wins for attribute enrichment)
  5. Click Save

A supplier can have multiple import feeds (e.g. one for electronics, one for accessories).

  1. On the supplier page, click Add data source
  2. Choose the connection type tab that matches your supplier
TabUse when
HTTP / FileThe supplier gives you a direct download URL (CSV, XML, JSON)
FTP / SFTPThe supplier uploads files to an FTP/SFTP server
Paginated APIThe supplier has a REST API that returns data page-by-page
SpreadsheetThe supplier shares a Google Sheet or Microsoft Excel / OneDrive file

The URL CatalogRelay fetches. Must be:

  • http:// or https:// (no S3, local paths)
  • Publicly accessible, or protected with HTTP Basic Auth
  • Not a private/internal IP address (SSRF protection)

For authenticated feeds, enter credentials in HTTP authentication:

  • Username and password for Basic Auth
  • Or Bearer token

Connect a Google Sheets or Microsoft Excel Online spreadsheet directly — no CSV export needed.

Google Sheets:

  1. Open the sheet → Share → change to “Anyone with the link” → Viewer
  2. Copy the link and paste it into the Sheet URL field

Microsoft Excel / OneDrive:

  1. In OneDrive or SharePoint: Share → “Anyone with the link” → Viewer
  2. Copy the link and paste it into the Sheet URL field

CatalogRelay converts the share link to a CSV export URL automatically. The sheet is re-fetched on every scheduled sync.

Note: Private sheets (requiring Google/Microsoft login) are not supported in this version. The sheet must be accessible to anyone with the link.

Sheet tab (Google Sheets only): To import a specific sheet tab rather than the default, enter the tab ID (the gid= number from the URL) in the Sheet tab ID field.

Select the format that matches the supplier’s feed (HTTP/FTP/API tabs only):

FormatNotes
CSVComma-separated values. Configure delimiter, quote character, and header row.
XMLSpecify the XPath to the product row element.
JSONSpecify the JSON path to the product array.

Spreadsheet sources always export as CSV automatically.

Set when CatalogRelay should automatically download and process the feed.

SchedulePlans
Manual onlyFree
Once per dayLite
Twice per dayPlus
Four times per day (every 6h)Scale

Leave empty to run manually only.

The feed will only run on schedule when Active is toggled on. You can pause a feed without deleting it by toggling it off.

On any feed’s detail page, click Run now. This triggers an immediate download and import regardless of schedule.

Useful for:

  • Testing a new feed configuration
  • Re-importing after a mapping change
  • Recovering from a failed run

Go to the feed’s Import Runs tab. Each run shows:

  • Status: pending, running, completed, partial, failed
  • Rows: total / processed / failed
  • Started at / finished at
  • Triggered by: scheduler or manual

Click a run to see chunk-level detail and any per-row error messages.

CatalogRelay checks the feed’s ETag and Last-Modified HTTP headers (or SHA-256 of the raw file) before downloading. If the feed hasn’t changed since the last successful run, the run is skipped entirely.

This prevents unnecessary processing when suppliers don’t update their feed on a given day.

Feeds are streamed to disk and processed in 1,000-row chunks. There is no memory limit or file size limit. Tested with feeds up to 2 GB.

The HTTP download has a 300-second read timeout. If a supplier’s server is very slow, contact support to adjust.

If a chunk fails (e.g. a malformed row), the chunk is retried automatically up to 3 times. After 3 failures, the chunk is marked as failed and the run is marked as partial. Other chunks continue processing — a single bad batch does not abort the entire run.

Failed rows are logged with the raw data and error message, visible in the run detail view.