This document will guide you through how to use Inventory Feeds and some example cases where an Inventory Feed is a preferred data export option. Pre-requisitesThis document assumes you are knowledgeable and aware of the following subjects:
Use the guides here to create a new Inventory Feed via GraphQL
Additional guide also provides insight into troubleshooting Inventory Feed issues
Important
To enable inventory feeds in your account, please reach out to your Expert Services or Customer Success representative. They will guide you through the process and ensure the correct steps are taken for successful activation.
Create a new Inventory Feed via GraphQL API
Author:
Fluent Commerce
Changed on:
1 July 2025
Key Points
After following this guide a user will be able to create a new Inventory Feed
The output from this feed can be used to supply inventory availability data to any system
Additional steps will outline optional configuration that can be applied to Inventory Feeds
Steps
Update an existing Inventory Feed via GraphQL API
Author:
Fluent Commerce
Changed on:
30 Jan 2024
Key Points
After following this guide a user will be able to update an existing Inventory Feed
Various updates are available once an Inventory Feed has been created and started running
Steps
Manage and view Inventory Feed Runs
Author:
Fluent Commerce
Changed on:
4 June 2024
Key Points
Inventory Feed runs can be individually tracked for their status and data about the run
A user will know how to analyse Inventory Feed Runs from this guide
Overview: Summarizes overall feed status and key metrics.
Feeds: Lists individual feed details for deeper insight.
Fluent Commerce
Assumptions
This guide assumes the destination S3 bucket has already been created.
Important Callout on Destination S3 Bucket!
Region RestrictionThe destination S3 bucket for your feed must be located in the same AWS Region as the Fluent-managed source bucket. Pointing a feed to a destination S3 bucket in a different Region will result in an exception (`IllegalLocationConstraintException`)Available Options:
Cross-Region Access: Keep your feed files in the source Region and configure your jobs (e.g., Lambda, Glue) so they can be read directly from that location.
Self-Managed Replication: Set up S3 Cross-Region Replication (CRR) to automatically copy new objects from the source Region bucket to a bucket in your desired Region.
It is not necessary to recreate destination S3 buckets when activating or deactivating inventory feeds. The same destination S3 bucket can be used for multiple inventory feeds, making it crucial not to delete the S3 bucket on the destination side unless absolutely required.
Required Steps
A few steps must occur in a specific order to create and enable an Inventory Feed. The feed will not be enabled if steps are skipped or not completed correctly.
Create and configure Inventory Feed
Inventory Feeds are currently created via API. The GraphQL API mutation to do this is createInventoryFeed. See GraphQL API schema for details of the required data for that mutation. When successful, the creation event will respond with a value to add as an S3 Bucket Policy. This value will allow the data to be replicated into your target bucket.
Initial Status
Inventory Feeds will always be set to the status “CREATED” after step one. Once activated with the correct S3 bucket policies applied the feed can be set to “ACTIVE”.
Required Data
Field
Description
Type
ref
Unique reference for the Inventory Feed
String
source
Target source and filters to apply when generating data for Inventory Feed
InventorySourceInput
destination
Target AWS S3 bucket destination for Inventory Feed
InventoryDestinationInput
InventorySourceInput
The `source` field consists of:
type (InventoryDataType!): The type of inventory data. You can choose from:
`INVENTORY_CATALOGUE`
`INVENTORY_POSITION`
`VIRTUAL_CATALOGUE`
`VIRTUAL_POSITION`
filters ([InventoryDataFilterInput]): Optional filters to apply to the inventory data. Each filter consists of:
name (InventoryFilterName!): The name of the filter. You can choose from:
`REF`
`TYPE`
`STATUS`
`CATALOGUE_REF`
operator (InventoryOperator!): The operator for the filter. You can choose from:
`IN`
`NOT_IN`
`EQUAL_TO`
`NOT_EQUAL_TO`
value (Json!): The value to filter by. This can be a single value or an array of values.
How Filters Work
When setting up filters, you first select an inventory data type and then optionally set filters based on that data type. Filters are combined using "AND" conditions, meaning all conditions must be met. Within each filter, "IN" and "NOT IN" operators can handle multiple values with an "OR" condition.
Examples
INVENTORY_POSITION Example
If you select `INVENTORY_POSITION` as the inventory data type and apply the following filters:
STATUS EQUAL_TO "ACTIVE"
CATALOGUE_REF IN ["DEFAULT:1", "DEFAULT:67"]
This setup means:
Fetch all inventory positions where the status is equal to "ACTIVE"
AND the catalogue reference is either "DEFAULT:1" or "DEFAULT:67"
VIRTUAL_POSITION Example
If you select `VIRTUAL_POSITION` as the inventory data type and apply the following filters:
STATUS EQUAL_TO "AT_RISK"
CATALOGUE_REF IN ["BASE:1", "AGGREGATE:1"]
This setup means:
Fetch all virtual positions where the status is equal to "AT_RISK"
AND the catalogue reference is either "BASE:1" or "AGGREGATE:1"
You can add the new security policy to your target S3 bucket by following this guide from AWS: Adding a bucket policy by using the Amazon S3 console - Amazon Simple Storage Service.Once this new policy has been applied, the data produced from the Inventory Feed will be replicated into the target S3 bucket as soon as there is a new piece of data produced by the Inventory feed.
After correctly creating the Inventory Feed and configuring the bucket policy on the target S3 bucket, you can update the Inventory Feed to “ACTIVE”. From this point, the Inventory Feed will begin running on the schedule as defined against the entity.
Validation
When setting a feed to “ACTIVE” we validate everything is set correctly. If this update fails see How to Troubleshoot Inventory Feeds
Each Inventory Feed is made up of Inventory Feed Runs. These are the individual executions of an Inventory Feed.The two queries available to view Inventory Feed Runs are:
InventoryFeedRun
InventoryFeedRuns
InventoryFeedRun
This query lets you pull data related to an individual Inventory Feed Run. To do this, you must know the unique reference of the Run you want to pull data from.
InventoryFeedRuns
This query lets you pull data about multiple Inventory Feed Runs at once. For example, if you’re looking for historical data from a specific Inventory Feed, this query will allow you to query every Run related to that feed.To explore these queries and the other Inventory Feed queries, see our GraphQL API.
Inventory Feed unable to activate
When updating an Inventory Feed to Active status, our system will validate that the target S3 bucket has the correct configuration.Option 1: Confirm the target bucket has the correct policy appliedIf the policy is correctly applied, check Option 2.Option 2: Review the failure responseAs part of the update mutation, the failure response will provide the context of what is failing. This can help you to fix the incorrect configuration.
Inventory Feed Run in status “Failed”
An Inventory Feed Run may have failed for a range of reasons. Depending on these reasons, you may be unable to take proactive action.Option 1: Check the Inventory Feed Run error messageThe error message saved against an Inventory Feed Run will be able to provide context on what has caused the failure. If it is a configuration issue, you can update the Inventory Feed to fix this issue. Other times, it may be a random failure. At that point, the next Inventory Feed Run will catch the Inventory Feed back up to the latest view of Inventory Availability.Option 2: Target S3 bucket configurationIf anything changes with the configuration of the target S3 bucket, this may cause Inventory Feed Runs to fail consistently. If this has happened, the first piece to try would be to reset the configuration. If that isn’t possible, you may need to create a new Inventory Feed to replace the broken one.