The Variant Location Plan Metrics import lets you bring SKU × Location × Date level plan data into Toolio — for example, units, retail, or any custom metric you plan outside of Toolio. Once the file is uploaded, Toolio automatically rolls those numbers up to the choice and cluster level so they appear in your New Assortment Plan (NAP) without any extra setup. This article walks through exactly how that roll-up works and what to check before you import.
Use Cases
You plan at the SKU × store × week level in another system and want those numbers visible in Toolio's
New Assortment Plan.You want the plan from your Allocation tools to flow into your Assortment Plan automatically as a starting point.
You need a fast way to seed an
Assortment Planwith externally-built numbers instead of building them from scratch in Toolio.
What You Upload
Each row in the import file represents the plan metrics for one SKU at one location on one date. The required columns are:
Column | Description |
| The external ID of the SKU. Must match a variant that already exists in Toolio. |
| The external ID of the location. Must match a location that already exists in Toolio. |
| The date these metrics apply to. |
| One or more metric columns (e.g. |
A small example file might look like this:
VariantId | LocationId | date | Plan Units | Plan Retail |
SKU-A-S | STORE-01 | 2026-02-01 | 5 | 250 |
SKU-A-S | STORE-02 | 2026-02-01 | 3 | 150 |
SKU-A-M | STORE-01 | 2026-02-01 | 4 | 200 |
SKU-A-M | STORE-02 | 2026-02-01 | 2 | 100 |
Toolio stores each row in the Variant Location Plan Metrics Import table. If you re-import a row with the same VariantId, LocationId, and date, the metrics are overwritten with your latest values.
How Toolio Aggregates Your Data
This is the part most people want to understand. Your file is at the SKU × location × date level, but the New Assortment Plan is at the choice × cluster × date level. Toolio bridges the two with a three-step roll-up that runs automatically right after your import finishes: it groups SKUs up to their choice, maps locations to clusters via your default Automated Cluster Group, then combines the two to build the Choice × Cluster rows that surface in New Assortment Plan.
Step 1: Group SKUs Up to Their Choice
Every SKU (variant) in Toolio belongs to a Choice (its style/color). Toolio looks at the choiceId already configured on each variant in your file and groups the SKUs accordingly.
Continuing the example above, suppose SKU-A-S and SKU-A-M are both sizes of the same choice CHOICE-A. After this step, the data looks like:
Choice | Location | Date | Plan Units | Plan Retail |
CHOICE-A | STORE-01 | 2026-02-01 | 9 (5 + 4) | 450 (250 + 200) |
CHOICE-A | STORE-02 | 2026-02-01 | 5 (3 + 2) | 250 (150 + 100) |
Step 2: Map Each Location to a Cluster
Toolio uses your default Automated Cluster Group (ACG) to translate each location into the cluster it belongs to. The default group is the one flagged as the default on your account — Toolio picks it automatically and applies it across the entire import. Only one cluster group is used per import.
Within that group, only cluster assignments that meet both of these conditions are picked up:
The assignment is marked Adjusted — the saved/applied version of your clusters, not a draft or proposed state.
The location is flagged included in the cluster (i.e. not opted out).
If a location doesn't have a matching, included, Adjusted assignment in the default group, its rows are skipped. The unmatched location IDs are listed in the sync log so you can fix the cluster mapping and re-import.
For each location that does map, Toolio attaches three things to the row:
The specific
Automated Clusterthe location belongs to (e.g.CLUSTER-NORTH)The cluster's
Assortment Group(if one is configured on the cluster)The cluster's
Inventory Group(used for the size-level roll-up below)
Continuing the example, suppose your default cluster group puts STORE-01 in CLUSTER-NORTH and STORE-02 in CLUSTER-SOUTH. After Step 2, every row in your data carries its cluster information alongside the choice and metrics.
Step 3: Roll Up to Choice × Cluster
Now Toolio combines the choice (from Step 1) and the cluster info (from Step 2) to build the rows that actually surface in New Assortment Plan.
A Choice in New Assortment Plan is uniquely identified by three things together:
The parent
Actual ChoiceThe
Automated Cluster Groupit was rolled up againstThe cluster's
Assortment Group(if one is set, otherwise blank)
The cluster group itself is part of the choice's identity: rolling the same Actual Choice up against a different cluster group would produce a separate Choice row in NAP. In practice you only have one default cluster group, but this is why every Choice is tied to a specific cluster configuration.
A Choice Offering then narrows a Choice down to one cluster within that group — it's the plan for that choice in that cluster, over time.
Bringing the example together, your file becomes these rows in New Assortment Plan:
Choice (Actual Choice + ACG + Assortment Group) | Choice Offering (Choice + Cluster) | Date | Plan Units | Plan Retail |
CHOICE-A | CHOICE-A × CLUSTER-NORTH | 2026-02-01 | 9 | 450 |
CHOICE-A | CHOICE-A × CLUSTER-SOUTH | 2026-02-01 | 5 | 250 |
These are written as Choice Offering Scenario Metrics under the plan scenario — the same scenario that powers the Plan columns in New Assortment Plan. If multiple locations land in the same cluster (e.g. both STORE-01 and STORE-05 are in CLUSTER-NORTH), their numbers are summed together at this step.
Size-Level Metrics
In parallel with Step 2, Toolio also writes the data at the Choice × Size × Date level. Each variant's size value is matched to a size option, and metrics are summed up for every (choice, size, date) combination. This is what lets the size breakdown views in New Assortment Plan reflect your imported plan without any further action.
How Toolio Handles Existing vs. New Choices
For every (Actual Choice + Automated Cluster Group + Assortment Group) triple Toolio derives from your import, it checks whether a matching Choice already exists in New Assortment Plan. The behavior is distinctly different in each case.
When a Matching Choice Already Exists
If a Choice already exists in New Assortment Plan with that exact triple, Toolio reuses it without modification:
The existing
Choicerow is kept as-is — none of its attributes are overwritten by the import.For each
(Choice, Cluster)pair in your import, an existingChoice Offeringis also reused if one is already there. The offering'sLaunch DateandEnd Dateare not changed by the import.The
planscenario metrics on the offering are overwritten for each(offering, date)that appears in your import. Dates not present in your file are left untouched.Size-level behavior matches: existing
Choice Sizerows are reused, andplanscenario metrics for the imported dates are overwritten.
In short, re-importing into an existing Choice is a metric-only update.
Worked example.
Suppose CHOICE-A × CLUSTER-NORTH already exists with Plan Units = 9 on 2026-02-01. You re-import Plan Units = 12 for 2026-02-01:
The existing
ChoiceandChoice Offeringare reused — launch and end dates aren't changed.Plan Unitson2026-02-01becomes12(overwritten).
When No Matching Choice Exists
If no Choice exists for that triple, Toolio creates the full structure from scratch:
A new
Choiceis created withStatusset toActual Choice AssignedandChoice Statusset toSKU Location Sync(so you can identify import-created choices later).Any attributes on the parent
Actual Choiceflagged withCopy from Pastare copied forward onto the newChoice.For each
(Choice, Cluster)pair, a newChoice Offeringis created. ItsLaunch Dateis the earliestdatein your import for that pair, and itsEnd Dateis the latest.New
Choice Sizerows are created for every(choice, size)pair found in your data.planscenario metrics are written for every imported date, at both the offering and size levels.
Worked example.
Same CHOICE-A × CLUSTER-NORTH, but this is the first time it's been imported. Your file has rows on 2026-02-01, 2026-02-08, and 2026-02-15:
A new
Choiceis created with copied attributes from the parentActual Choice.A new
Choice Offeringis created withLaunch Date = 2026-02-01andEnd Date = 2026-02-15.Three
planscenario metric rows are written, one per date.
Required Setup Before Importing
The sync depends on several pieces of master data being in place. If any of these are missing, the affected rows are skipped silently and only logged.
Variants must have a
choiceId— this is the link between the SKU and its style/color. SKUs without achoiceIdare dropped.The
choiceIdmust match anActual Choicein Toolio — if no matchingActual Choiceexists, the SKU's data is dropped.A default
Automated Cluster Groupmust be configured with the locations you're importing for. Toolio uses the cluster group flagged as the default on your account.Locations must be assigned to a cluster in that default group, with
Adjustedcluster type and the location flagged as included.(Optional) An
Assortment Groupcan be associated with each cluster — if present, it becomes part of the choice's identity, so the sameActual Choicecould produce differentChoicesfor differentAssortment Groups.
When the Sync Runs
The sync is fully automatic. The lifecycle is:
You upload the CSV via Settings > Imports using the
Variant Location Plan Metrics Importmodel.Rows are parsed, validated, and written to the import staging table.
As soon as the import finishes, Toolio queues an async task to run the Allocation → Assortment Plan sync.
The async task runs in the background and processes your data in batches of choices. You can track its progress in the Task Manager.
Once it completes, the new metrics are visible in
New Assortment Planunder theplanscenario.
You don't need to trigger the sync manually — uploading the file is enough.
FAQs
What scenario do these numbers populate?
The plan scenario. They appear wherever New Assortment Plan views surface Plan metrics for a Choice Offering or Choice Size.
What happens if a SKU's variant has no choiceId?
The row is skipped. Toolio logs how many rows were dropped for this reason in the sync log. To fix this, make sure your Product/Variant feed sets choiceId on every SKU that should be planned.
What happens if a location isn't in the default cluster group?
Rows for that location are skipped. The sync log lists the unmatched location IDs so you can update your cluster mappings and re-run.
How are launch and end dates set on the Choice Offering?
For brand-new offerings created by the import, the launch date is the earliest date in your file for that (choice, cluster) and the end date is the latest. For offerings that already exist, neither date is changed — the import only updates metrics.
Can I re-import to update numbers?
Yes. Re-importing a row with the same VariantId, LocationId, and date overwrites that row's metrics. The roll-up to choice and cluster level then re-aggregates from the latest imported values, so the numbers in New Assortment Plan reflect your most recent file.
Are existing Choice records in New Assortment Plan overwritten?
No. If a Choice already exists for the (Actual Choice, Automated Cluster Group, Assortment Group) combination in your data, Toolio reuses it. Only brand-new combinations result in new Choices being created.
Why don't I see size-level metrics for some SKUs?
Size metrics require the variant's size attribute to map to a known size option in Toolio. If a variant's size value doesn't match any option, that variant's data still flows into the choice and cluster totals, but isn't counted at the size level.
How do I know the sync ran successfully?
Check the import status under Settings > Imports. The sync's async task will appear in the Task Manager once the import finishes, and the log captures totals for processed rows, created offerings, created offering metrics, and created size metrics — along with any skipped variants or locations.