The allocation strategy import lets you create new strategies in bulk by uploading a file — including store assignments and start and end dates. This is useful when migrating an existing allocation setup into Toolio or when strategies are being created outside of Assortment Plan seeding.
Important: The import creates new strategies only. It will not update or overwrite strategies that already exist in Toolio. Any changes after creation must be made in the UI.
File Format
Use this sample import file as a reference for the required columns and format.
The column schema is fixed by Toolio — only the fields listed below are recognized. Any additional columns in the import file are ignored. Customization beyond these fields is handled through allocation defaults, not by extending the file format.
Each row represents a choiceId and (optionally) a store. When multiple rows share the same choiceId, they are grouped into a single strategy:
Strategy-level fields are taken from the last row in the group.
Each row with a
locationIdcreates a per-location override for that store. Per-location fields are:startDate,endDate,phaseOutDate,safetyStock,orderCycle,minPresentationWeeks, andsizeRange.Rows without a
locationIdcontribute only to strategy-level values.
Required Fields
choiceIdis required. Without it, the row is rejected.An External ID column is also required. The import uses the External ID, not the
choiceId, to decide whether a strategy already exists. See Skipped — Strategy Already Exists below for how this affects choices that already have a strategy.locationIdis required on any row that defines a per-location override. A row withoutlocationIdonly contributes to strategy-level fields.
All other fields are optional. When omitted, Toolio applies the matching allocation default if one exists, or the system-level default for that field.
Supported Fields
Field | Type | Purpose |
| String | The choice being allocated. Required. |
| String | A specific store to include in the strategy. Required on rows that define per-location overrides. |
| String | Existing location list to associate with the strategy. Defaults to a system-managed list if omitted. |
| Date | Date allocation should begin. |
| Date | Date allocation should stop. |
| Date | Date after which no further allocations are made. |
| Enum | How demand is calculated. Must match an allowed value. |
| Number | Demand value (used with certain |
| String | Name of the sales curve to apply. |
| String | Name of the size curve to apply. |
| String | Name of the size range to apply. |
| Integer | Safety stock level. |
| Integer | Order cycle in weeks. |
| Integer | Weeks the presentation minimum is enforced, counted from the start date. |
| Number | Holdback percentage to retain at the source. |
| Boolean | Whether to push all available inventory. |
| Enum | Method used to prioritize allocation. Must match an allowed value. |
| String | Name of the location curve to apply. |
| String | Name of the launch curve to apply. |
| String | Name of the presentation profile. |
| String | Name of the return profile. |
| Enum | ROS rank value. Must match an allowed value. |
| String | ROS model definition (JSON). |
| Boolean | Whether the strategy is active. Defaults to |
| Boolean | Whether retrending is disabled for this allocation strategy. |
How Store Inclusion Works
Stores listed for a given choiceId are included in the strategy; any store not listed is excluded. There is no need to configure store lists manually after import.
Stores must be members of the associated location list. Including a store that isn't in the location list won't be flagged as an error, but the strategy may not behave as expected.
Location Lists
You can optionally specify a locationListName to associate the strategy with an existing location list in Toolio.
If no locationListName is provided, the system automatically assigns a system-managed default list.
If a locationListName is provided but does not exist in Toolio, the strategy for that choiceId will be skipped and an error will be returned — the import does not create new location lists.
How Allocation Defaults Are Applied
Allocation defaults are merged into each strategy during import, before the strategy is created. For any field not included in the import file, Toolio checks whether a matching allocation default exists and fills in the missing value.
Imported values always take precedence. If a field is present in the import file, the default for that field is ignored — even if a matching allocation default exists.
Fields that can be filled from allocation defaults include: Safety Stock, Order Cycle, Minimum Presentation Weeks, Holdback %, Push All, Prioritization Method, Sales Curve, Size Curve, Location Curve, Presentation Profile, and Return Profile. Location List is not taken from defaults: a row with no locationListName gets the system-managed list.
Example: Your allocation default sets Safety Stock = 2 and Sales Curve = "Standard Fall". Your import file includes a Safety Stock value of 5 for a choiceId but does not specify a Sales Curve. The resulting strategy will have Safety Stock = 5 (from the import) and Sales Curve = "Standard Fall" (from the default).
For per-location overrides, Toolio uses the first value it finds for each store: the value in your import file, then the store's value in the matching Allocation Default's location overrides, then the strategy-level value. This applies to Safety Stock, Order Cycle, Size Range, Minimum Presentation and Minimum Presentation Weeks.
If a strategy has no rows with a locationId and its matching Allocation Default has location overrides, Toolio creates a per-location override for every store in the strategy's location list, using the store values from the default. Each store starts on the strategy's startDate, or today if the file has none.
Errors and Skipped Rows
There are two distinct outcomes when a row or strategy cannot be processed: errors and skips. Both are reported after the import completes.
❗ The import summary reports the number of skipped and errored rows — it does not list which choiceIds they belong to. If the counts don't match what you expect, use the FAQs below to reconcile your file against the strategies that were actually created. Exposing more detail on skipped and errored rows is a known gap that has been logged with the Toolio product team.
Errors — Row Rejected, Strategy Not Created
An error is reported when a row contains invalid data. The strategy for that choiceId is not created. Errors fall into two categories:
Schema or format errors are caught before the import is saved. A row is rejected immediately if:
choiceIdis missing (the only required field)A field has the wrong data type (e.g. a non-date value in
startDate, a non-integer insafetyStock)An invalid value is used for an enum field —
demandType,prioritizationMethod, orrosRankmust match one of the allowed values listed in the sample import file
Reference errors are caught during finalization. A strategy is skipped if any name in the file cannot be resolved to an existing record in Toolio:
Store (
locationId) not foundLocation list (
locationListName) not foundSize curve, sales curve, location curve, launch curve, size range, presentation profile, or return profile name not found
In both cases, the row number and field name are included in the error report so you can correct and re-import.
Skipped — Strategy Already Exists
Rows are grouped into strategies by External ID. If a strategy with that External ID already exists in Toolio, all of its rows are skipped. The count of skipped rows is included in the import summary. The import will never overwrite an existing strategy.
A new External ID on a choiceId that already has a strategy creates a second strategy for that choice. More than one strategy per choice is allowed. Toolio only blocks the new strategy if it shares a store with an existing active strategy and their date ranges overlap.
Using the Choice ID as the External ID does not guarantee a match. Only strategies created by an earlier import that used the Choice ID as the External ID carry it. Strategies created in Toolio, and strategies that existed before External ID matching was introduced, have a system-generated External ID (for example, AS-1234). A file keyed on Choice ID won't match those strategies, so the import creates a new one.
To avoid an unwanted second strategy:
Before uploading, filter Allocation Strategies by the choices in your file.
Remove any choice that already has a strategy from the file.
Add the stores for those choices to the existing strategy in the grid.
FAQs
Can I add my own columns to the import file?
No. The schema is fixed by Toolio, and any columns outside the supported list are ignored. To customize values that aren't in the file, configure allocation defaults — they are merged into the strategy at import time for any field not provided.
Can I update an existing strategy through the import?
No. The import is create-only. If a strategy with the same External ID already exists, it will be skipped. All changes to existing strategies must be made in the UI.
What happens if I don't specify a location list?
The system assigns a system-managed default location list. You can update the location list on the strategy in the UI after import if needed.
What happens if one row in a choiceId group has an invalid reference?
The entire strategy for that choiceId is skipped — no partial strategies are created. Fix the invalid row and re-import to create the strategy.
How do I find out which choices were skipped?
The summary gives you a total count of skipped rows, not the choiceIds behind it. To identify them, compare the choiceIds in your import file against the strategies that already exist in Toolio — any External ID that already has a strategy was skipped, along with every other row in its group.
Keep in mind the count is a row count, not a choice count. A single skipped choiceId with six rows in your file reports as six skipped rows.
Why did the import create a second strategy for a choice that already had one?
The import matches existing strategies by External ID, not by choiceId. If the existing strategy has a system-generated External ID (for example, it was created in Toolio) and your file uses the Choice ID, they don't match and a new strategy is created. To keep everything on one strategy, remove the new strategy and add its stores to the existing one. Use store-level start and end dates if those stores need different timing.
A choice from my file has no strategy after the import. What should I check?
If a choiceId from your file has no strategy in Toolio, work through these checks in order:
A strategy with that External ID already exists. Existing strategies are never overwritten, so all rows with that External ID are skipped. This is the most common cause.
The dates aren't in a valid order. If the
phaseOutDatefalls before thestartDate, no strategy is created for thatchoiceId. Confirm thatstartDate,endDate, andphaseOutDateare consistent on every row in the group.A referenced name doesn't exist in Toolio. A size curve, sales curve, location curve, launch curve, size range, location list, presentation profile, or return profile name that can't be resolved causes the whole strategy for that
choiceIdto be skipped — even if only one row in the group carries the bad reference.The file has no External ID column. An import without an External ID column can show
Completedwith no errors and still create no strategies. Add the column and re-import. If your External IDs match your Choice IDs, repeat thechoiceIdvalue in it.
Correct the rows and re-import. Because the import is create-only, re-running the same file won't affect strategies that were already created successfully.
