Modules and extensions: buy, build, repair
An online shop is rarely defined by its platform, but by the modules added to it. This section brings together twenty-four pages on that ground: choosing between buying and building, scoping a need, and understanding what happens when a module stops working.
Who this section is for
People arrive here in two very different states of mind. Either a function is missing: a product configurator, instalment payments, a tracking screen for the team, a notification that does not exist as standard. Or an installed module is causing trouble: it stopped showing after an update, it clashes with another one, it slows every page down, or its vendor has gone quiet.
In both cases the underlying question is the same: how far should you lean on what already exists, and at what point is it better to write code you control. These pages answer by giving the criteria rather than a single recommendation — the right call depends on order volume, on how long the shop is expected to live, and on who will maintain it afterwards.
How the section is organised
The twenty-four pages follow the life of a module. Decision pages first: buy or build, official, third party or bespoke, what actually drives the price, how to scope a need before asking for a quote. Then the most common functional needs: subscriptions and member areas, deposits and instalments, configurators, PDF documents, notifications, an extra field on a product or an order, a business screen in the admin, after-sales handling, background processing.
Then the failures: a module broken by an update, a conflict between two modules, an active module that displays nothing, overwritten changes, a module slowing the shop down, a vendor that disappeared. And finally the life cycle: auditing an existing set of modules, testing before production, uninstalling cleanly, maintaining over time, taking over unfinished work.
What a module actually does to your shop
A module is not a brick sitting beside the site: it fits inside it. On PrestaShop it attaches to hooks, adds its own tables, and may drop a file into override/ to change the behaviour of a core class. That is where most conflicts start: two modules that want to override the same method cannot coexist, and the second simply fails to place its override, often with nothing visible to the merchant.
On WooCommerce the equivalent mechanism runs through actions and filters, and through templates copied into the child theme under woocommerce/. Those copies do not follow the extension's updates: when WooCommerce changes a template, the copy keeps being used as it is, and the page renders from an outdated version. It is the most ordinary reason a checkout loses a legal notice or a field after a version bump.
Keeping those two mechanisms in mind is enough to see why a set of modules degrades over time, and why the question to ask before buying is not only whether it does what you want, but what it touches.
Four pages for the most common questions
-
Buy a module or have one built
The criteria that tip the decision either way, and the cases where buying costs more over time.
-
Conflict between two modules
How to recognise a conflict, isolate it without breaking the shop, and what can be done when neither module can be changed.
-
Module broken after an update
Why a platform update alone can disable a module, and what to check before reinstalling it.
-
What drives the price of a module
What you actually pay for in bespoke work, and the items that make a quote vary threefold.
ChatGPT Ads conversion tracking
-
ChatGPT Ads module for PrestaShop
Deduplicated OpenAI pixel and Conversions API, oppref kept until the order, consent respected: built and installed by me.
-
ChatGPT Ads extension for WooCommerce
OpenAI pixel and Conversions API, compatible with HPOS, the block checkout and consent plugins: built and installed by me.
In this section
-
Buying an off-the-shelf module or having one built
An off-the-shelf module costs less than custom development and covers most common needs. So the real question isn’t «should I…
-
Scoping a module requirement before pricing it
«I need a module for deposits», «a filter module», «a sync module»: phrased that way, these requests can’t be priced seriously…
-
What really drives the price of a custom module
Two requests that fit in the same sentence can demand wildly different amounts of work. It isn’t the number of screens or the…
-
Vendor module, third-party module or custom build
The same feature can come from three places: a module published by the platform vendor, a module sold by a third party, or code…
-
Taking over a module left unfinished by another contractor
A half-finished module, a developer who no longer replies, a store that’s waiting: the question isn’t «can you finish it», but…
-
Maintaining a custom module over time
A custom module is not a finished object. The platform changes version, PHP removes functions, a third-party API changes its…
-
The module is active but nothing shows on the site
The module is installed, it appears in the list, it is enabled and its settings page responds. Yet the store shows no trace of…
-
Two modules treading on each other
Each module works perfectly on its own. Enabled together, they break the cart, empty a page or lock the admin. A conflict can’t…
-
A module broken by its own update
The module worked, you accepted the update it offered, and it has been broken since — or it works, but the adaptations made for…
-
Modules that slow the store down
«I have too many modules» is a common and rarely accurate diagnosis. A store can run many and stay fast, or run only a few and…
-
The module works, but its publisher is gone
The module runs, the store sells, and yet the publisher no longer answers. No new version for a long time, support that returns…
-
Uninstalling a module without leaving traces
Removing a module looks like the simplest operation in the world. In fact, disabling, uninstalling and deleting are three…
-
Testing a module before putting it into production
Installing a module straight onto the store that sells is the most avoidable cause of weekend outages. A test copy changes…
-
Adding a business screen to the back office
Many stores run with a spreadsheet permanently open beside the back office: supplier tracking, per-customer budgets, commissions…
-
Adding a field to a product or an order
«I just need one more field.» It is the request that looks simplest and holds the most surprises, because a field never exists…
-
Deposits, balances and split payments
Taking part of the amount at order time and the balance later looks like a payment setting. In fact it touches the order, the…
-
Subscriptions, memberships and member areas
Selling a subscription, a membership or access to a private area isn’t selling one more product. The one-off order gives way to a…
-
Product configurators and personalisation
Engraving a name, choosing a dimension to the millimetre, composing an object from options that depend on each other: these look…
-
Generating PDF documents from the store
An invoice that must carry a particular wording, a picking slip suited to the workshop, a label in the carrier’s format, a quote…
-
After-sales, tickets and product returns
After-sales almost always starts in an inbox, and eventually disappears there. Bringing those exchanges back into the store…
-
Email and SMS notifications triggered by the store
Adding the product brand to the confirmation email, texting a customer when the parcel leaves, alerting the workshop as soon as…
-
A module that has to run with nobody watching
Syncing supplier stock every night, moving an order automatically from one status to another, producing a periodic export: these…
-
Auditing a store’s module estate
A store a few years old accumulates modules installed for a one-off campaign, replaced without being removed, or inherited from a…
Frequently asked questions
How many modules can a shop carry?
Is a paid module more reliable than a free one?
Can I have a purchased module modified?
My module's vendor has disappeared, what now?
I can't describe my need in technical terms, is that a problem?
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.