Pickup points in a PrestaShop one page checkout: why some carrier modules need a refresh
Why pickup-point and locker modules can show an empty list or an old address in a PrestaShop one page checkout, including the native 9.2 checkout, how to test it, and the two ways to fix it.
In short
- Carrier modules add pickup points under their carrier through the
displayCarrierExtraContenthook, using the customer and address they know at that moment. - In a one page checkout the address and the carrier are chosen without a page load, so modules that read the address only when the page loads show an empty list or the old address.
- The fix is either a carrier module that re-renders after each checkout refresh, or a checkout that reloads once at the right moment and keeps what the customer typed.
- PrestaShop’s own one page checkout in 9.2 has the same requirement: modules that inject content into the carrier section must re-render after an AJAX refresh.
A customer types their address, picks the pickup-point carrier and sees… nothing. No map, no list of points, or a list for the address they had before. Press F5 and everything appears. If you run a one-page checkout on PrestaShop and a pickup-point or locker carrier, you may have seen this. Here is why it happens and what you can do about it.
How carrier modules plug into the checkout
PrestaShop lets a carrier module add its own content under its carrier in the delivery step through the displayCarrierExtraContent hook. The PrestaShop developer documentation describes it as the hook that displays “additional content for a carrier, such as pickup points”. That is where the map, the list of lockers or the “choose a point” button comes from.
The module decides what to show based on what it knows when it runs: the cart, the customer and the delivery address.
Why the standard checkout rarely shows the problem
The default PrestaShop checkout has four steps: personal information, addresses, shipping method and payment. By the time the customer reaches the shipping step, the customer and the address have already been saved, and the delivery step is rendered with them. Whatever the carrier module reads at that moment is correct.
What changes in a one-page checkout
In a one-page checkout the customer fills in their details and picks a carrier on the same page, without a page load in between. That is the whole point: fewer waits, fewer chances to leave.
Most carrier modules cope with this. Some do not, because they read the customer and the address only once, when the page loads. Two cases come up again and again:
- A guest saves their details for the first time. When the page loaded there was no customer and no address yet, so the module has nothing to search with. The list of points stays empty until the page is refreshed.
- A logged-in customer changes the delivery address. The module still holds the address from the page load, so it offers points near the old address.
Neither case is a bug in PrestaShop or in the checkout. The module was written for a checkout where every step is a fresh page.
The same applies to PrestaShop’s own one page checkout, introduced in PrestaShop 9.2. Its announcement notes that, because checkout updates are asynchronous, modules that inject content into the carrier or payment sections need to re-render after an AJAX refresh. For a wider comparison, see PrestaShop one page checkout in 2026.
Two ways to fix it
1. The carrier module refreshes itself. The cleanest fix is a module that updates its content when the delivery options are re-rendered. If you can, report the behaviour to the carrier module’s developer; many fix it once they know.
2. The checkout reloads once, at the right moment. When the module cannot be changed, the checkout can reload the page once, right after the event the module misses, and keep everything the customer has typed. The customer sees one short reload instead of a broken delivery step.
The second option costs a little speed, so it should be switched on only for the case that needs it. In Prime OPC these are two separate settings in the module configuration:
- Reload checkout after a guest saves their details
- Reload checkout after a customer changes the delivery address
Both are off by default. Turn one on only if a carrier needs it; if every carrier updates without a refresh, the checkout stays faster with both off.
How to test your carriers
Run these three checks on your store, ideally on a copy of it, for every carrier that shows extra content:
- New guest. Open a private window, add a product, fill in a new address and select the carrier. Does the list or map appear with points near that address?
- Logged-in customer, second address. Log in as a customer with two addresses, select the pickup carrier, then switch to the other address. Do the points follow?
- Order without a point. Try to place the order without choosing a point. The checkout should stop and ask the customer to complete the delivery selection.
If check 1 fails, you need the guest reload. If check 2 fails, you need the address reload. If both pass, leave both off.
We test Prime OPC this way with live carrier modules, including BRT FermoPoint pickup points on an Italian store.
Questions and answers
Why does my pickup point map stay empty in a one page checkout?
Usually because the carrier module reads the customer and the delivery address only when the page loads. A guest who enters an address on the same page has no saved address at that moment, so the module has nothing to search with.
Does this also happen with the native PrestaShop 9.2 one page checkout?
It can. PrestaShop’s announcement of the native one page checkout says that modules which inject content into the carrier or payment sections need to re-render after an AJAX refresh, and asks module developers to test their modules in the new flow.
How do I fix a carrier module that needs a refresh?
Ask the carrier module’s developer to update its content when the delivery options are re-rendered. If that is not possible, use a checkout that reloads the page once after the guest saves their details or after the address changes, keeping the entered data.
How do I test pickup points before going live?
Place a test order as a new guest with a new address, then as a logged-in customer switching between two addresses, and finally try to order without choosing a point. The list should follow the address every time, and the checkout should refuse an order with no point selected.