Product sources

Connect the place your products come from, choose how often we read it, and decide what should happen to your products if it ever stops answering.

The sources table

Brand → (your brand) → Products → Sources lists every catalogue feeding this brand.

ColumnWhat it tells you
NameThe source name, with its address underneath. A push-only API source shows its push address instead.
TypeCSV feed or Product API.
StatusSee the badges below.
Refresh"Every day", "Every 3 days", "Push only", or "Stopped after 3 failures".
Last successful fetch or pushThe date of the last successful read. A push-only source shows "Pushed …" with the date your shop last sent us changes, instead of "Never".
ProductsHow many base products this source currently holds. Versions are not counted here.

Status badges

BadgeMeaning
PENDINGCreated, but nothing has been read from it yet. A push-only source leaves this state as soon as your shop's first push succeeds.
PROCESSINGA read or a push is running right now.
ACTIVEThe last read succeeded.
WARNINGThe last attempt failed. We keep retrying every hour.
INACTIVEStopped after three failures in a row.

Hover the information icon beside a badge for the plain-English reason, including the raw error when there is one.

While anything is PROCESSING, the table refreshes itself every few seconds — press Fetch now and watch the row finish without reloading the page.

Adding a source

Press Add source. The first choice is the source type, and it is the one thing you cannot change later.

Fields for every source

Name
required
What you call this source. Up to 200 characters.
Address
required
Where we read your products from. A Product API address must start with https://; a CSV feed may use plain http. Leave it empty on a Product API source to make it push-only: the schedule switch turns itself off and cannot be switched on, no first read is started, and the source simply waits for your shop to send it products.
Read every … days
Between 1 and 30. The default is every day.
If the source keeps failing
What happens to your products once reading has stopped. See below.
Read it straight away
On by default. Starts the first read as soon as you save.

Extra fields for a Product API source

Shared secret
Between 16 and 256 characters. Leave it empty and we generate one for you. We send a SHA-256 hash of this secret in a Signature header on every read, so your shop can check the request really came from Yaplet. The secret itself never travels.
Extra headers
Up to 20 name/value pairs sent with every read — an API token your shop expects, for example. You cannot override Signature, Host or Content-Length.
Fields that become keys
The product fields whose values should become the product's keys — an ingredients field, for instance. See below.
Scheduled reading
Switch it to Push only and we never read on our own; your shop sends us changes instead.

Fields that become keys

This is the setting that connects your catalogue to your product rules.

A rule applies to a product when the two share a key. A product gets its keys from two places: the rule_keys list your shop sends with it, and the values of any product fields you name here.

So if your shop sends an Ingredients field and you add Ingredients to this box, every ingredient becomes a key on that product — and any rule carrying that ingredient's name applies to it automatically.

After a source has run once, the form shows a row of chips listing every field name your shop actually sent. Click one to use it, click it again to drop it — no typing and no guessing at spelling.

Changing this setting re-derives the keys of every product of that source immediately. There is no refresh to wait for and nothing is re-read.

If the source keeps failing

This choice only takes effect once reading has stopped after three failures in a row.

Keep serving the last products we read
default
Your AI keeps recommending what it already knows, which may have gone out of date.
Hide the products until it works again
The products disappear from your AI and from product cards, and come back on the next successful read or push.

Products you switched off by hand are never switched back on by this.

What happens when a read fails

Within a single read we try three times — 30 seconds each, waiting 5 then 15 seconds between attempts — but only when the problem looks temporary (a timeout, a network error, or a server error on your side). A rejection like "not found" or "forbidden" fails at once.

Then:

What happens
1st and 2nd failure in a rowStatus WARNING. We keep retrying every hour. Nobody is told.
3rd failure in a rowStatus INACTIVE. Scheduled reading stops. Your organisation's owner gets a notification and an email.
A read that comes back with no products at all counts as a failure, not as "delete everything". A broken feed can never silently empty your catalogue.

Two things deliberately do not count as strikes: a Fetch now you ran yourself (it only sets WARNING, and nobody is emailed), and a failed push from your shop (it shows in the run report only).

The email you get

One email per organisation per hour, however many sources are involved — it cannot nag you. It tells you what happened, why, how to fix it, and what happens if you do nothing, with a button straight to this page.

A successful push does not restart a schedule that has stopped. Once a source is INACTIVE, only Fetch now starts it reading again.

Fetch now

The circular-arrow button reads the source immediately, in the background.

  • There is a five-minute cooldown per source. Inside it, the button tells you how long is left.
  • It is also how you restart a stopped source: a successful manual read clears the strikes, sets the source back to ACTIVE, and brings back any products that were hidden.

The last run report

The chart icon opens the report for the most recent run. Only the latest run is kept for each source — read it before you trigger the next one.

It shows whether the run was scheduled, manual or a push; whether it was a full snapshot or only changes; and a grid of counters.

The ones worth knowing:

CounterWhat it means
Items received / Items usedHow many products arrived, and how many survived validation.
Products added / updated / unchanged / removedWhat changed at the base-product level.
Versions stored / Versions removedThe same, for versions. On a healthy run this is at least as large as the product count.
Search card pieces indexedHow much searchable text the AI re-read. A product becomes one to a few pieces depending on how much it carries.
Overview pages rewrittenThe catalogue pages that were rebuilt — one for the catalogue as a whole, plus one per category.
Skipped as invalidItems that were left out. The reasons are listed underneath.
Versions that stopped a productA version that failed validation takes its whole product out of the run, so this being non-zero explains a missing product.
Product prices ignored (versions sent)You sent a price on the product and versions underneath it. The versions win and the product-level price is ignored — see the Product API reference.
Search terms cut for lengthA product sent more search terms than one product may carry; the rest were dropped.
If the products saved but the catalogue pages did not, the report shows: "The products were saved, but the catalogue overview pages could not be updated. The next run rebuilds them." Your products are fine and answers still work — but until the next run, the AI's picture of your catalogue's structure is one run out of date.

Below that, up to three lists:

  • Skipped items — which items were left out and why (the first 50).
  • Products cut for length — products that sent more keys or more search terms than one product may carry.
  • Fields the shop sent — every field name seen in this run. This is the same list the "fields that become keys" chips come from.

Row actions

Fetch now, Last run report, Edit, Delete — plus two more on Product API sources: Copy push URL, and a shortcut to the API tab with that source already selected, so the code samples carry its real address.

Deleting a source deletes its products, along with everything the AI learned about them. The confirmation tells you exactly how many. A source cannot be deleted while a read or push is running.

Limits worth knowing

LimitValueWhat you see if you hit it
Products per source20,000The read fails and asks you to split the catalogue across several sources
Products per organisation20,000The read fails; write to support to have it raised
Versions per organisation100,000The read fails, naming the number it would have reached
Versions per product500The product is skipped as invalid
Sources per organisation100Saving the source fails
Response size50 MB"The response is larger than 50 MB"
Read timeout30 seconds per attempt"The request timed out after 30 seconds"
Extra headers20 per sourceThe Add header button stops
Fields that become keys20 per sourceThe box stops accepting more
Keys per product500Counted as "Keys cut for length" in the report
Search terms per product100 words, versions includedCounted as "Search terms cut for length" in the report
Category depth6 levels, 100 characters eachThe item is skipped as invalid
Description per product20,000 charactersThe item is skipped as invalid
There is no cap on custom field text any more. Your product's own fields used to be cut at 4,000 characters; now everything you send is kept and indexed, split into search pieces behind the scenes. The old "Fields cut for length" counter only appears on reports from before this change.

Smaller limits while nobody is paying

An organisation with no active subscription and no credit balance gets deliberately smaller feed limits, because it could never store a catalogue that size anyway:

LimitWhile nobody is billedOn a paid plan or with credits
Response or push size5 MB50 MB read / 25 MB push
Products in one read or push1,00020,000
Pushes per minute660

Adding credits or starting a subscription lifts these immediately — there is nothing to switch on and nothing to wait for.

The API tab prints the numbers that apply to your organisation, not the paid ones — so a developer reading it on a free organisation sees the real limits. When the smaller set is in force, the tab says so and names what the limits become once you add credits.