Which feed type should I choose, API feeds or file (XML, CSV, TSV ) feeds?
Rule of thumb: Pick file feeds over API feeds if you are not sure.
File feeds (TSV, XML, CSV) are tangible downloadable files which are much more resilient and easier to troubleshoot compared to API feeds which are composed of intangible vulnerable API calls.
File feeds get full update at least once every day.
API feeds
API feeds update individual products data change (prices, stock, description, title) instantly. However, since they are rate limited by Google API, they can be slow for cases that require mass product updates, including the initial run and regular re-new runs.
API calls are made between servers and are prone to temporary errors (network, server condition, etc.)
API feeds are run
1/ When a new feed settings is saved (including new feeds creation).
2/ For individual product changes that trigger webhooks (please read on for webhooks' limitation)
3/ When manually requested from the app dashboard (Please be aware of Google's recommendations about not running API feeds too regularly).
4/ API feed fully re-run after every 30 days, to make sure that unchanged products do not expire in Google Merchant Center. You can also schedule more frequent API feed renew at additional cost.
Shopify webhooks: API feeds depend on Shopify product webhooks to learn about product changes to start synchronization. Since webhook delivery isn't always guaranteed, products might not get synced for all changes. (please read more about webhooks' limitations). Also, only these product changes trigger a webhook (and therefore get synchronized by an API feed):
- Product creates
- Price, stock, title, description and metafield changes
As webhooks do not get fired on Shopify exchange rate changes or product translation changes, API feed should not be use as the only feed for foreign currency feed (unless you use fixed exchange rates), or translated feed.
You can still combine API with file feeds, or in most case, just the file feeds alone are enough.
Another disadvantage of API feeds is that in most cases they do not remove products. Products no longer in feeds are just stop synchronized and left in Google Merchant Center for expiry (default to 30 day since last update). If items need to be removed quicker, you need to remove them in Google Merchant Center manually, or switch to file feeds.
Due to the shortcomings of API feeds, file feeds (TSV, XML) are more preferable for most of cases.
File feeds
File feeds (XML, CSV, TSV) do not update individual products, but every time they run, they update the whole portfolio part that is included in feeds. File feeds are not subjected to Google API rate limits so they are much faster than API feeds for mass updates, that is why they are recommended for foreign currency feeds. In fact, file feeds are suitable for most of the use cases, even for fast stock changing portfolio (Google bot can help to sync individual stock updates by crawling the landing page). File feeds are run:
1/ When a new feed settings is saved (including new feeds creation).
2/ At least once every 24 hours at configurable time of day. Additional runs are possible at addition cost.
3/ When manually requested from the app dashboard
File feeds are more stable than API feeds in most cases. Besides, since a tangible file is generated at the feed URL, it is easier to troubleshoot any feed issues.
Combining file feeds and API feeds
You can have the best of both file and API feeds by having the file feed as the primary feed and create a supplement API feed. A feed rule is then created (automatically) in GMC to tell Google to use the updated data from the API feed when it's available.
This setup will then allow your portfolio to be updated (price, stock changes, etc) instantly by the API suplement feed. In any cases when API feed is not working (due to above shortcomings), the file feeds get run at least 24 hours. As the file feeds are created as the primary feed, it will also make sure that obsolete products get removed.
Adding more feeds might require plan upgrades. However in cases where your store has a lot of products, the additional feed might have already been covered in your current plan.