Enable Batch Inventory Pre-Processing
Authors:
Girish Padmanabha, Randy Chan
Changed on:
12 Feb 2025
Key Points
- Inventory Batch Pre-Processing (BPP) occurs before batch inventory updates reach the workflow engine. If you rely on every incoming inventory item hitting the workflow, ensure you configure the job-level meta value appropriately or disable BPP at the relevant account/retailer level. However, we recommend using the job-level option for greater flexibility. Be sure to read through this article in full—especially the “Managing Batch Pre-Processing” section—before making any changes.
- If enabled at an ACCOUNT level, every retailer under that ACCOUNT will have their batch inventory updates pre-processed
- If enabled at RETAILER levels, it will only pre-process updates for that specific retailer
- The RETAILER context setting overrides the ACCOUNT context setting. This allows you to enable the whole account and disable it for specific retailers.
Prerequisites
Steps
Setting up Batch Pre-Processing
Workflow Comparison
The first step is to ensure that your inventory workflows are compatible with Batch Pre-Processing to ensure that they work correctly and won’t impact your inventory accuracy.
Batch Pre-Processing is based on the logic within the inventory module. This diagram details the high-level view of the logic.

Signs of a compatible workflow
- Uses the latest inventory module reference workflow and reference plugin
- Transient quantities are either standard/default types or, if custom, are properly input in the batch payload
- Does not rely on unchanged inventory records for further processing
Signs of an incompatible workflow
- The workflow executes logic on unchanged inventory records (which Batch Pre-Processing typically filters out)
Managing Batch Preprocessing (BPP) at Account and Retailer Levels
Batch Pre-Processing is enabled by default. You will notice that the setting
`fc.enable.batch.preprocessing`
`TRUE`
Managing Batch Preprocessing (BPP) at Account and Retailer Levels
The
`fc.enable.batch.preprocessing`
Disabling BPP
- At the Account Level:
To disable BPP globally for all Retailers under an Account, setto`fc.enable.batch.preprocessing`
at the Account level. This sets a default behavior for all Retailers unless overridden by specific Retailer-level settings.`FALSE`
- At the Retailer Level:
To disable BPP for a specific Retailer, setto`fc.enable.batch.preprocessing`
for that Retailer. This ensures that BPP is turned off for the selected Retailer, regardless of the Account-level setting.`FALSE`
Enabling BPP
- To Enable BPP Globally:
Setto`fc.enable.batch.preprocessing`
at the Account level. This enables BPP for all Retailers within the Account unless explicitly overridden by a Retailer-level setting.`TRUE`
- To Enable BPP for a Specific Retailer:
- If the Account-level setting is , you can enable BPP for a specific Retailer by setting
`FALSE`
to`fc.enable.batch.preprocessing`
for that Retailer.`TRUE`
- This Retailer-level setting will take precedence over the Account-level setting, ensuring BPP is enabled only for the desired Retailer.
- If the Account-level setting is
Key Rules and Behavior
- Retailer-Level Overrides: A Retailer-level setting (or
`TRUE`
) will always override the Account-level setting for that specific Retailer.`FALSE`
- Global Defaults: The Account-level setting acts as the default behavior for all Retailers unless a specific Retailer-level override is applied.
- Case-Insensitive: The value input for is not case-sensitive (e.g.,
`fc.enable.batch.preprocessing`
and`TRUE`
are treated the same).`true`
- Flexible Control: This setup allows for flexible configurations, enabling global control while allowing exceptions at the Retailer level.
By configuring
`fc.enable.batch.preprocessing`
After updating the setting, the new value will take effect within 5 minutes. The handling of all inventory within the batches created under a job will be determined based on the logic defined by the input at the job level, including the
`meta`
`fc.enable.batch.preprocessing`
Inventory Batch Preprocessing Settings and Behavior in Job API
The
`meta`
`meta`
`preprocessing`
The behavior of the
`meta.preprocessing`
`fc.enable.batch.preprocessing`
|
| Additional Info in Job Payload | Result |
true | "preprocessing": "skip" | BPP should not be used | Do not use BPP |
true | "preprocessing": "enabled" | BPP should be used | Use BPP |
true | "meta": null or "meta": {} | BPP should be used | Use BPP |
true | Omitted or previously created Jobs | BPP should be used | Use BPP |
false | Any value | BPP should not be used (overridden) | Do not use BPP |
- When is
`fc.enable.batch.preprocessing`
:`true`
- "preprocessing": "skip"
- Action: BPP should not be used.
- "preprocessing": "enabled" ( any value other than "skip" )
- Action: BPP should be used.
- "meta": null or "meta": {}
- Action: BPP should be used.
- Jobs without
`meta`
- Action: BPP should be used.
- "preprocessing": "skip"
- When is
`fc.enable.batch.preprocessing`
:`false`
- Regardless of the value (including
`meta.preprocessing`
or omitted)`null`
- Action: BPP should not be used.
- Regardless of the
- The fc.enable.batch.preprocessing setting takes precedence over the value. If fc.enable.batch.preprocessing is set to
`meta.preprocessing`
, BPP will not be used regardless of the`FALSE`
value.`meta.preprocessing`
- Ensure that when setting , only the supported values (
`meta.preprocessing`
or`"skip"`
) are used to avoid unexpected behavior.`"any value not skip"`
- A job-level override will affect only the batches containing inventory data created under the specific job, and this impact will remain in effect until the job expires.
Post enablement analysis
Due to the way Batch Pre-Processing works, it is most efficient with large amounts of updates and a significant unchanged rate. Through our Metrics API we provide metrics to track the total number of batch items processed and the ratio of unchanged items.
Desired volumes
For the total amount of batch inventory updates, you should be aiming for the following:
- At least 1 million total per day
- Grouped in batches of at least 100,000
For the unchanged rate of batch inventory updates, you should be aiming for the following:
- Ideally, the unchanged rate should be greater than 50%
- Once the unchanged rate falls below 50% (the majority of submitted changes are considered updates), Batch Pre-Processing loses its efficiency gains vs batch inventory updates going straight into workflows
- Most retailers have an unchanged rate of greater than 80%
Using the Metrics API to analyse
Finding total amount
The metric to use here is bpp_records_processed_total. This will return the total count of all batch inventory updates processed through Batch Pre-Processing for the given time period
Find the unchanged rate
This will use an additional metric. To calculate the unchanged rate you will want to divide the total unchanged records by the total records. The metric for unchanged records is bpp_records_unchanged_total.
E.g. (bpp_records_unchanged_total / bpp_records_processed_total)