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.

Client
Shiptimize
Sector
Logistics
Kind of work
WebMaintenance

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

  1. 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.
  2. 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.
  3. Versioned every request and every saved choice, so a slow response can never overwrite a newer one.
  4. Scoped every name by brand, so two white-labelled plugins run side by side on one shop.
  5. 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.
  6. Added a fallback chain for address lookup, so a failed lookup still leaves the shopper with a usable map.
  7. Shipped it in the PrestaShop, WooCommerce and Magento 2 plugins, across every brand build.

Before and after

BeforeAfter
Nine separate map copiesOne core, one adapter per platform
A stale response could winVersioned requests and saves
One brand per shopBrands side by side on one shop
A desktop layout, shrunkA phone-first bottom sheet

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

Ready to build something great?

Tell us what’s breaking, or what you need built. You talk to the engineer who does the work.