Feeds
A feed keeps a catalogue list in step with an external source. Instead of typing a hundred products by hand, you point a feed at a spreadsheet or a dataset and Klyo imports them, then re-imports cleanly when the source changes.
What works today
All four source types import for real: Google Sheets, uploaded Excel files, BigQuery, and Google Merchant Center. Running a sync by hand works end to end, and the nightly automatic sweep runs where it has been switched on for the environment (see the note below).
Your organization settings carry a Feeds tab that lists every feed in one table: what each one fills, where it reads from, how many items it owns, and how its last run went, so a failing import is visible without opening the catalogue it belongs to. Last run shows how long ago the feed ran; hover it for the outcome, what that run changed, and the exact time. A run that did not succeed keeps its status in the row, so you never have to hover to spot a failure. It is a readout, not a control panel: each row links through to the catalogue the feed fills, where you sync it, read its history, edit its labels, or reopen the setup wizard.
A feed always fills one specific catalogue list, and you do not have to create that list first: connecting a feed can create a brand-new catalogue list for it in the same wizard, naming the list and turning detected columns straight into fields, so you never juggle two screens to set one up. You start that wizard from the catalogues area, where a Feed manager sits beside the catalogue it fills.
Where catalogue items come from
| Source | What it reads |
|---|---|
| Google Sheet | A range from a sheet you share with Klyo |
| Excel | An .xlsx file you upload |
| BigQuery | A table or a query result |
| Merchant Center | Your product catalog |
When you set up a feed, Klyo shows the service account to grant access to, and previews the columns it finds so you can map them before the first import.
The column mapping
A feed maps source columns onto catalogue item fields. One column is the external id, the stable key Klyo uses to recognise a row again. Others map to the catalogue item's name, its description, its declared fields, and asset references. Asset references are resolved against your asset library, and a reference that does not resolve is flagged rather than dropped.
Images come along with the rows
A column you map as a reference image column does more than match a name. An http(s) link is downloaded and stored in your library's Synced folder, then linked to the catalogue item, so the picture arrives with the row and you never upload it by hand. A gs:// URL or an exact asset name matches something already in your library instead.
A single cell can hold several links: Merchant Center's additional_image_link returns every extra image at once, and a sheet author separates them with commas or line breaks. Klyo brings in all of them, one asset per link. The Synced folder stays mirrored to the live feed, so an image the feed stops naming is removed again.
Syncs are idempotent
A sync matches rows on their external id, so re-running it updates catalogue items in place and never duplicates. A row that vanishes from the source is tombstoned (soft-deleted), preserving history for any combination package that used it. Your manual edits win: if you edit a feed-imported catalogue item by hand, it is marked manual so a later sync does not overwrite you.
Every run is audited as a sync run with counts of what was created, updated, left unchanged, tombstoned, skipped, and left unresolved (an image reference that matched nothing), plus any per-row errors. You can see the run history for each feed.
A manual sync runs in the background rather than blocking the page: Klyo tells you it is still working and you are free to navigate away, and the feed picks up the finished state on its own once the run settles.
What you can do today
- Create feeds against Sheets, Excel, BigQuery, or Merchant Center.
- Create a brand-new catalogue at the same time, instead of pointing a feed at one you made earlier.
- Check access and preview columns before importing.
- Map columns to catalogue item fields and asset references.
- Run a sync on demand in the background and review its run history.
Automatic syncing depends on your environment
Feeds can run on a nightly schedule, and the schedule settings are always there, but the trigger that fires them is provisioned per environment. Where it is not provisioned, syncs run when you click sync. The feed view tells you whether automatic syncing is active for your feed, so you are never guessing.

