The Unlimited Briefing

Customisation vs extensibility: the day your vendor's roadmap becomes your problem

Enactor Editorial Thought Leadership
Published 27 August 2026
Read time 7 minutes

Most retailers who changed platforms in the last decade weren't chasing a shinier user interface. They wanted control over specific things: how quickly a new promotion could go live, whether a checkout journey could change without a vendor ticket, whether an in-store process built for one region could be adapted for another without a twelve-month project plan.

Control, in other words, meant being able to shape the platform around the business, on the business's own timeline. Most got some version of that control. Fewer of them checked what kind.

There's a day that comes for almost every retailer who chose the wrong kind. It's not launch day, and it's rarely a bad one on the surface. It's the day a vendor ships a routine update: a security patch, a new release, a compliance fix that can't wait. And somewhere in IT, someone has to say the sentence nobody wants to say out loud: we can't take that update yet. Not without weeks of rework first.

That's the day your vendor's roadmap becomes your problem. Not because the vendor did anything wrong, but because of a decision made years earlier about how “control” was implemented.

Two words, one very expensive difference

Customisation and extensibility get used as if they're roughly the same thing: both mean the platform bends to fit the business, not the other way round. In practice, they describe two entirely different relationships with the vendor's core code.

Customisation, in its most common form, means going into the core and changing it. Overwriting a class. Forking a module. Editing the thing the vendor built so it does what you need today. It feels like ownership, because in the moment, it is: your logic, right there in the code, doing exactly what you asked.

Extensibility means something narrower and, it turns out, much more durable: adding your logic at a defined point the platform exposes for exactly that purpose, without touching what's underneath. The core stays the vendor's to maintain and evolve. Your logic sits alongside it, not inside it.

The difference is invisible on day one. Both approaches solve today's requirement. The difference shows up the day the vendor changes the core you built inside of.

What customisation quietly costs you

A fork doesn't stay still. Every time the vendor patches, upgrades, or extends the platform you customised, that patch has to be reconciled against the changes you made to the same code. Sometimes it merges cleanly. Often it doesn't, and someone on your team inherits the job of manually re-applying months or years of business logic on top of a codebase that's moved on without them.

This is how retailers end up quietly declining security patches, delaying version upgrades past their support window, or budgeting a re-platforming project to migrate off a customisation nobody fully remembers the reasoning for. None of that was in the original business case. It's the interest payment on a loan nobody remembers taking out.

It also puts the retailer in a strange position: the more they've customised, the less able they are to benefit from the vendor's own roadmap. New capability ships, and it can't be adopted cleanly, because it lands on top of a private fork the vendor never tested against. The retailer paid for a platform that keeps evolving, then built themselves out of the ability to receive that evolution.

Extension: the same freedom, without the fork

The alternative isn't “don't change anything.” It's changing things at a point designed to be changed, so the vendor's evolving core and the retailer's own logic don't have to fight each other on upgrade day.

This is built into how Enactor's Toolkit works in practice, not just as a philosophy. When a retailer needs to override how something behaves, the pattern isn't to edit the underlying process: it's to expose an extension point at that step and let the retailer's own logic decide, at that point, whether to run its own version or fall through to Enactor's default. If the retailer's extension decides the default behaviour is still correct, it does nothing, and the vendor's version runs untouched. If it needs to override that behaviour, it can, cleanly, without editing the process itself.

That means an Enactor upgrade can move the core forward underneath a retailer's extensions without breaking them, because the extension was never inside the part that changed. The retailer isn't waiting on the vendor's roadmap, and they're not fighting it either. They're building alongside it.

This runs through the platform at three levels, not one.

Configuration, through Estate Manager

Role-based, no-code changes to journeys, business rules and UI that a retail operations team can make directly. No developer required.

Back-end development, through the Toolkit

A visual, low-code process editor where a developer can search the existing library of actions and processes to understand how something already works before extending it, rather than reverse-engineering a black box.

UI development, independently of the business logic underneath

Enactor has migrated its own page rendering to React without touching the business processes running beneath it, which is itself a proof point that the two layers are genuinely decoupled, not just described that way in a diagram.

At scale, that resource library isn't small: tens of thousands of pre-built actions and processes across the platform, built precisely so a developer's first move is to search for what already exists rather than to start from a fork.

Proof from the field, not just from the product sheet

This isn't a theoretical benefit. Lindex, the Swedish fashion retailer, chose Enactor specifically to change the shape of this relationship with their store systems:

Enactor is the perfect solution to help fulfil Lindex's goals of achieving a new, agile way of working with our store systems. By training our internal IT teams to build and extend applications for themselves using the Enactor Toolkit, Estate Manager, and enabling them to own the user experience with the React UI, we will be in a much stronger position to respond to industry changes quickly, keeping us ahead of the curve at all times.

Annika Elfstrom Annika Elfstrom CIO, Lindex

That's the difference in one sentence: an in-house team that can extend and own their own applications, rather than a team that either waits on a vendor's release calendar or maintains a growing private fork to get around it.

Why this matters: who owns your roadmap

This is where Enactor doesn't restrict you, where other systems limit. When you extend rather than customise, what you build is genuinely yours. It's your IPR, sitting at defined points you control, upgradeable on your own timeline rather than tied to a fork that decays a little more with every vendor release you can't safely take.

The retailers who avoid “that day” aren't the ones who customised the least. They're the ones who were precise about where their logic lives: never inside the vendor's core, always at the point the platform was built to receive it. That's a decision made once, early, in how a platform is architected. It's also, not coincidentally, the decision that determines whether your vendor's roadmap is something that happens to you, or something you get to build alongside.

Learn More...

Enactor is the Unlimited Unified Commerce platform that empowers retailers through flexible configuration, integration and extension. Get in touch to see how the Toolkit and Estate Manager work in practice.