A deal that’s out of date is worse than no deal at all. Adlab needed every one of their websites to show the right offer, the moment it changed — without an army of people editing pages.
Adlab
Change an offer once. Every website follows.
Adlab runs a network of comparison websites. I built the place where their team manages every offer — and the connection that pushes each change out to all their sites at once.
How it works
- 01
Too many websites to keep in step
Adlab publishes deals on many websites. When a price changes, it has to change everywhere — fast. Doing that by hand, site by site, means mistakes and old prices left behind.
- 02
One place for every offer
So the team now edits each offer in one place — the catalogue. Brands, prices, lists of “the best five deals” — all managed once, with each person seeing only what they’re allowed to change.
- 03
A messenger instead of a crowd
When something changes, the catalogue doesn’t wait for the websites to ask. A messenger announces the change to every site, and keeps trying until each one has heard it.
- 04
The websites update themselves
Each website runs a small plugin I built. It hears the announcement, fetches the new offer and shows it — no one logs in to change anything.
- 05
Counting what matters
A small script on every site notes each click on an offer, and the signup forms let people switch electricity deal in minutes. Both report to one place, so there’s one honest number for what worked.
- Built by me
- Outside service
- People
Choices I made
- 01
Announce changes instead of waiting to be asked
If every website checked for news every minute, the catalogue would be flooded — and prices would still lag behind.
The catalogue announces each change, and every site fetches only what it needs.
The catch A website has to be reachable to hear the news — so the messenger keeps retrying until it is.
- 02
Lists that build themselves
Some lists are chosen by hand. Others should always show “the five best deals right now”.
Lists can be hand-picked or built automatically from rules the team sets.
The catch The rules have to be simple enough that the team can predict what a list will show.
- 03
Throw away what isn’t used
A connection to ad networks had been built, but nothing ever used it.
I removed it completely instead of maintaining it “just in case”.
The catch If it’s ever needed, it gets built again — properly, for a real need.
The result
- 1 → manyedit an offer once, and every connected website updates
- 659automated checks that run before any change goes live
- 111releases since the start — small, frequent improvements
- 0websites anyone has to update by hand
Under the hood — for the technical reader
Stack Laravel · Filament · WordPress · Next.js · TypeScript
Offer catalogue 2025
A back office for offers, brands and collections, with imports, custom fields, roles and per-team API keys.
Laravel · Filament · Horizon · Pest
WordPress plugin 2025
Connects any WordPress site to the catalogue — updates arrive by webhook, lists render with shortcodes, and the plugin updates itself.
WordPress · PHP
Signup forms 2025
Electricity signup flows for DCC Energi and white-label partners, pre-filled from the comparison, with address lookup and optional MitID.
Next.js · React · Tailwind
Click tracking 2025
A small script served from a CDN that follows visits and offer clicks across the sites.
TypeScript