What is the behaviour?
Merchants arrange Shopify variants deliberately, cheapest first or most popular colour first, because the first variant is the one the product page opens on. The Acumatica connector overwrites that arrangement. The community thread describes it precisely: "template sync will rearrange all the variants on the product in Shopify even if there were no changes, if template is pushed, or if something else changed on the template".
The trigger is worth noticing. It is not a variant change. Any template push re-sorts the variants, so an edit to a description or an attribute somewhere else on the template resets your merchandising.
Checked against: Acumatica community 22934: matrix items overwriting variant order on Shopify, read 20 August 2026
What actually causes it?
Designed behaviour, not a defect, which is why waiting for a fix will not work. Acumatica employee simonliang91 answered the thread directly: "we make the sort order of variants by the following order: Option1 to Option2 to Option3". The connector regenerates variant positions from the attribute values on the Acumatica side every time it writes the product.
That means Shopify’s stored variant positions are treated as derived data rather than as something a merchant owns. There is no setting that changes it, because the sort is not configuration.
Checked against: Acumatica community 22934, reply from Acumatica employee simonliang91
How do you keep the order you want?
Two routes, and only one of them survives contact with a merchandiser.
The route the thread recommends is a customisation. The answer given is to "do the customization to override the method MapVariantPositions(TemplateItems local, ProductData external) in SPTemplateItemProcessor graph". That is a scoped piece of developer work with a known entry point, which is about as good as connector customisations get, but it is code you now own across every Acumatica upgrade.
The route with no code is to make Acumatica’s sort produce the order you want. If the connector sorts by Option1 then Option2 then Option3, then choosing which attribute is Option1 and controlling the sort of its values gives you a lot of the outcome for free. Renaming size values so they sort correctly is unglamorous and it costs nothing to maintain.
Decide whether variant order is a merchandising requirement or a preference. If it is a preference, change the attribute order in Acumatica and stop.
If it is a requirement, scope the override of MapVariantPositions in SPTemplateItemProcessor as a customisation project, with a line item for retesting it at every Acumatica feature release.
Either way, stop re-ordering variants by hand in Shopify. That work is deleted by the next template push.
Checked against: Acumatica community 22934, recommended customisation, read 20 August 2026
Which release is this, and what if it stops matching your system?
The thread is anchored on Acumatica 2023 R1 with the same behaviour reported on 24R1, and it was read on 20 August 2026. A customisation that overrides a connector method is exactly the kind of thing an Acumatica feature release can break, so if you take that route, put a retest of it into your upgrade checklist rather than discovering it in production.
If your variants are not merely reordered but missing, this is not your page. Missing matrix items is a separate issue with configuration causes to rule out first, including the Export to External System flag and the dependency of Product Availability on TemplateItem.
Checked against: Acumatica community 20979: missing matrix items, a different failure
Common questions
- In what order does the Acumatica connector sort Shopify variants?
- By Option1, then Option2, then Option3, per an Acumatica employee answering the community thread on this behaviour. The sort runs on every template item push, including pushes triggered by changes that have nothing to do with variants, so manual variant ordering in Shopify does not survive.
- Can we keep our Shopify variant order without a customisation?
- Partly. Because the connector sorts by Option1 then Option2 then Option3, you can influence the result by choosing which attribute is Option1 and by naming attribute values so they sort the way you want. That gets many merchants close enough. Exact control needs the MapVariantPositions override, which is code you then maintain across upgrades.
Last updated 2026-08-20. Facts on this page last checked against source 2026-08-20.
