One pickup map for every checkout
The pickup map is the last screen a shopper uses before paying. It had been copied into every Shiptimize plugin, and every copy had drifted. We replaced all of them with one phone-first widget that each plugin loads through a small adapter.
The situation
Shiptimize’s plugins put a pickup-point map into merchants’ checkouts, under several carrier brands. Merchants install and host the plugin themselves, so what ships has to be right when it leaves. Before this work the map lived in nine separate copies, with mixed library versions.
What made it hard
One widget had to run on modern and very old checkouts, on a phone, and under two white-labelled brands on the same shop at once, without either one breaking the other.
What we did
- Wrote the spec first and put it through two rounds of review before any code existed. Scope was signed off in writing, platform by platform.
- Built one core with a thin adapter for each platform. One build loads on old checkouts, and the map library, Leaflet or Google Maps, loads separately.
- Versioned every request and every saved choice, so a slow response can never overwrite a newer one.
- Scoped every name by brand, so two white-labelled plugins run side by side on one shop.
- Designed for the phone first: a bottom sheet on small screens, pins that cluster and separate as you zoom, and a list linked to the map.
- Added a fallback chain for address lookup, so a failed lookup still leaves the shopper with a usable map.
- Shipped it in the PrestaShop, WooCommerce and Magento 2 plugins, across every brand build.
Before and after
What we would do differently
Live checkout tests on real shops caught two things the unit tests could not: a hover link that did nothing on clustered pins, and opening hours shown as closed on one platform. A real checkout now joins the test plan in the first week, not the last.
Built with
JavaScript · Vite · Leaflet · Google Maps · PrestaShop · WooCommerce · Magento 2
More for Shiptimize
Shop integrations moved off an old core system, with no downtime
Merchants print labels all day, and a bug here ships a parcel twice. We moved every integration to a new service, one at a time, with the old system ready to take over at any moment.
One click turns any shop’s order page into a shipment
Merchants without a plugin typed every address by hand. Our browser extension reads the order on screen with AI vision, then books the shipment and prints the label.
Ready to build something great?
Tell us what’s breaking, or what you need built. You talk to the engineer who does the work.
