How a feed is sent

For arlanix/product-feed 1.0.0

How a feed is sent

The store's catalogue is kept, product by product as it changes, in the module's own tables; a feed delivers from them, as a file on the store or an upload on the schedule in its Schedule section, or, for Merchant Center's API, product by product as they change. Both are done by the Magento cron. Run and check a feed is about starting a run yourself and reading what it did; this page is about what goes on in between.

What a run said

A line about products left out is an error of the run, since those products are not in the feed, even when the run succeeded and the rest went out. A run's warnings are what the feed type found: a field the platform requires with no mapping rule, and how many products went out with an empty field the platform requires, a text over its length or a value it does not list. Each is one line with the number of products, not a line per product. Those products are in the feed all the same; the warning says what the platform may refuse, and where in the mapping to look.

How long runs are kept

Runs older than 30 days are removed every night, with what they said, except each feed's last run, which the grid reads. To keep them longer, change Keep run history for (days) under Stores → Configuration → Arlanix → Feeds → Building and delivery; 0 keeps them all.

A run that reports no progress for 30 minutes is marked Stopped responding, so a process the server killed does not leave the feed looking busy. The feed's next run does the same at once when it starts.

A failed run is tried again, less and less often

A file feed whose run fails is tried again 15 minutes later, or at its schedule if that comes first. If that fails too, the next try waits twice as long, whatever the schedule says: 30 minutes, then an hour, two hours, four, and then every six hours until a run works, so a server that is down for a weekend is not asked every few minutes. A run that stopped responding counts as a failure. The run's Details say how many times in a row it failed and when the next try is, and the grid's Schedule column shows when that is. Once you have fixed the cause, Generate or Deliver to SFTP in the row's Select menu runs the feed at once; the first run that works puts the feed back on its schedule.

A feed sent to Google Merchant Center product by product waits less: 5 minutes after a failure, then 10, 20, 40, and an hour at most, and its Schedule column says next attempt and when. It has nothing to run by hand: once you have fixed the cause, save the feed, which ends the wait. A run that Google stops part way, because the account was refused or Google did not answer, keeps what it sent; the products it did not reach are not counted as refused and go next time.

An empty feed is never published

A run in which every product is left out, or that no product reached at all, publishes nothing: the file on the store stays as it was, an upload is not made, and an API feed takes nothing down from the platform. Health says Empty, not delivered, the feed's form opens with a red message, and the run fails with Nothing to deliver: every one of the 181 products was left out…; Why? says why, the same way as for a few products.

That is almost always a mapping that went wrong: a field marked Required that nothing fills, or a dictionary that excludes everything. Fix the mapping and run the feed again. The next scheduled run tries again on its own; a refused run is not retried sooner, the way a failed one is.

A feed that should publish an empty file, or empty an API feed's listing, says so with Allow an empty feed in its Channel section. On, an empty feed is published like any other.