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.
Adding a supplier
Section titled “Adding a supplier”Before adding a feed, create a supplier:
- Go to Suppliers → Add supplier
- Enter a Name (e.g. “Acme Wholesale”)
- Optionally add Notes (internal reference — not visible to the supplier)
- Set a Priority (used when the same product appears in multiple suppliers — higher priority wins for attribute enrichment)
- Click Save
Adding an import feed
Section titled “Adding an import feed”A supplier can have multiple import feeds (e.g. one for electronics, one for accessories).
- On the supplier page, click Add data source
- Choose the connection type tab that matches your supplier
Connection tabs
Section titled “Connection tabs”| Tab | Use when |
|---|---|
| HTTP / File | The supplier gives you a direct download URL (CSV, XML, JSON) |
| FTP / SFTP | The supplier uploads files to an FTP/SFTP server |
| Paginated API | The supplier has a REST API that returns data page-by-page |
| Spreadsheet | The supplier shares a Google Sheet or Microsoft Excel / OneDrive file |
HTTP / File tab
Section titled “HTTP / File tab”The URL CatalogRelay fetches. Must be:
http://orhttps://(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
Spreadsheet tab
Section titled “Spreadsheet tab”Connect a Google Sheets or Microsoft Excel Online spreadsheet directly — no CSV export needed.
Google Sheets:
- Open the sheet → Share → change to “Anyone with the link” → Viewer
- Copy the link and paste it into the Sheet URL field
Microsoft Excel / OneDrive:
- In OneDrive or SharePoint: Share → “Anyone with the link” → Viewer
- 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.
Format
Section titled “Format”Select the format that matches the supplier’s feed (HTTP/FTP/API tabs only):
| Format | Notes |
|---|---|
| CSV | Comma-separated values. Configure delimiter, quote character, and header row. |
| XML | Specify the XPath to the product row element. |
| JSON | Specify the JSON path to the product array. |
Spreadsheet sources always export as CSV automatically.
Schedule
Section titled “Schedule”Set when CatalogRelay should automatically download and process the feed.
| Schedule | Plans |
|---|---|
| Manual only | Free |
| Once per day | Lite |
| Twice per day | Plus |
| Four times per day (every 6h) | Scale |
Leave empty to run manually only.
Active
Section titled “Active”The feed will only run on schedule when Active is toggled on. You can pause a feed without deleting it by toggling it off.
Running a feed manually
Section titled “Running a feed manually”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
Monitoring import runs
Section titled “Monitoring import runs”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.
Skip-if-unchanged
Section titled “Skip-if-unchanged”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.
Large feeds
Section titled “Large feeds”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.
Error handling
Section titled “Error handling”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.