Skip to content
Case Study · From No Website to an Owned Platform

No website, a generic checkout, and a business invisible online

Dunkin' Doggies is a dog swimming pool in Hull, owned and run by one person. I took the business from no website at all to a complete digital presence: brand and site, a custom booking journey, a self-service customer portal, the serverless API underneath, and the analytics on top. Research, design, build, and ongoing maintenance, end to end.

ClientDunkin' Doggies · Hull, UK
RoleResearch · Design · Build · Maintain · Solo studio
ScopeBrand · Site · Booking · Portal · API · Analytics
StatusLive · Actively iterated
The Dunkin' Doggies website shown in device mockups, across desktop and mobile.

Dunkin' Doggies · brand, site, custom booking & customer portal · live

The Brief

A business that needed to actually exist online

Dunkin' Doggies is a dog swimming pool in Hull, owned and run by one person. Customers book private swim sessions for their dogs. When I came on board, the business had no website at all. Bookings ran directly through their payment provider's generic, off-the-shelf online booking channel: a single hosted page with no branding, no marketing, no analytics, no retention.

It worked, just about. But it left the business invisible online and entirely shaped by someone else's template. Nothing to find on Google, nothing to point an ad at, no way to tell its own story, no reason for a customer to come back beyond remembering the URL.

The brief grew from there. It started as "we need a proper website" and became something larger: build the whole digital presence from scratch. From the brand and the pages a customer first lands on, through the moment they book and pay, to the account they come back to as a regular.

I owned all of it.


The Starting Point

No website, a generic checkout, and a market full of bad examples

Before any building, I looked hard at where the business actually was, and at the wider market it sat in. The honest picture had two parts: the business itself had no real online presence, and the comparable businesses that did have sites mostly weren't doing themselves any favours. Three gaps shaped what I built.

01 / THE BUSINESS

No website, no story

Nothing on Google beyond a business listing. No about page, no service pages, nowhere to send an ad. Customers had to already know the business existed to find their way to the booking page.

02 / THE BOOKING

A generic hosted booking page

Bookings ran through their payment provider's off-the-shelf online channel: a single page that worked but was unbranded, impersonal, and gave the business no control over the journey or the data around it.

03 / THE MARKET

Competitors with half-built sites

Comparable businesses elsewhere in the UK mostly had dated DIY sites, basic booking widgets, no online payment, no loyalty, no analytics. A low bar, and a clear opportunity.

The job wasn't to fix a bad website. It was to build a coherent journey from first click to loyal regular, where none of that existed yet, with no legacy to preserve, but also no foundation to build on.


What I Built

One digital presence, built in deliberate layers

Rather than a single deliverable, the project is a stack of layers, each solving a stage of the customer's journey. Each was scoped, built and shipped in turn, so the business got value early rather than waiting for a big-bang launch.

01
Foundation

A branded website, built from the ground up

A full research, design, and build process produced a production-ready site in Webflow with a cohesive brand: a confident dark palette with teal water accents and a clean, characterful type system. Not a template. A considered identity for the business, fast and good-looking on mobile and desktop.

02
Journey

A custom booking experience that feels native to the site

I replaced the third-party widget with my own multi-step booking journey: service selection, date and time, dog details, payment, confirmation. Built to match the brand exactly and load instantly. Returning customers get a fast-track flow and can pick which of their dogs are swimming that day.

03
Retention

A personalised customer portal

A self-service account area where customers manage their details and dogs, view bookings, and track loyalty rewards. Per-dog profiles, achievement badges (first solo swim, 5 swims, 10 swims), and a points-based loyalty scheme make the portal feel like it belongs to the dog as much as the owner.

04
Engine

A serverless API layer I own end to end

Behind the scenes, a set of serverless functions handle payments, bookings, customer records, loyalty, and authentication, talking to Square so the frontend stays fast and fully under my control. This is what lets the business add bespoke features a packaged plugin would block.

05
Visibility

Analytics and conversion tracking

Server-side tracking feeds GA4 and the Meta Conversions API. The business can finally see where customers and ad spend are working: the difference between guessing and knowing, and the foundation for growing bookings deliberately.

The custom Dunkin' Doggies booking flow shown across mobile screens: service selection, date and time, dog details, payment, and confirmation.

The custom booking journey · service, date, dog details, payment, confirmation


The Pivotal Decision

Choosing the right foundation, even when it meant reversing myself

Once the first version of the site was live, bookings ran through an embedded scheduling widget, the most common option for small service businesses. It worked. But customers started telling us it felt slow, especially on mobile. One nearly gave up partway through booking. A baseline Lighthouse audit confirmed it: the widget was loading an entire separate web app inside the page and dragging everything down.

This became the highest-stakes technical call in the whole project.

The business had moved between booking platforms more than once chasing the right fit, including a move I'd previously recommended. When that platform's own tools turned out to be just as unfit for purpose, I had to re-evaluate honestly, including overturning my own earlier advice. The clean answer was to consolidate everything (payments, bookings, customers, loyalty, gift cards) behind a single well-built API, with the customer's history already living there. One backend. No stranded data. No separate payment processor to maintain.

I also talked the business out of a full platform rebuild that would have thrown away well-suited work for marginal gain.

Reversing your own recommendation is uncomfortable, but defending advice the evidence no longer supports would have cost the business. Equally, knowing when not to rebuild is part of the judgement. I advised against migrating the whole site to a heavier platform because the current setup was fast, low-maintenance, and well-suited to a business this size.

Good judgement includes recommending against new work.


The Process · How I Work

Research first. Deliberate scope. Verify, then release.

The thing this project really demonstrates is a way of working. Every layer followed the same disciplined arc: evidence in, tight scope, careful verification, then a controlled release, so the business kept getting better without ever being put at risk.

01 · Research & Diagnose

Understand the landscape, measure the baseline

Competitor and market analysis to understand the landscape, plus hard performance measurement (baseline Lighthouse audits), so every decision was driven by evidence rather than a hunch, including being willing to reverse my own earlier platform advice when the data demanded it.

02 · Design

A booking journey built around real behaviour

A cohesive visual identity and a booking journey designed around how customers actually behave. The custom UI styled to feel like a native part of the site, not a bolted-on tool.

03 · Scope

Tight first versions, shipped in sequence

Each capability shipped as a tight, deliberate first version. Core booking flow first, then accounts, then loyalty and gift cards, rather than over-promising one enormous launch. A conscious corrective to the natural pull toward over-ambitious scope.

04 · Ship · Live in production

Replaced the old stack, measured the impact

The platform replaced the previous stack and went live to real paying customers. Before/after audits were captured the same morning so the impact was measured, not assumed. Booking journey, portal, payments, and tracking all running together.

05 · Iterate & Maintain

Staging, verification, version control

New work now ships through a staging environment and is checked against a structured verification matrix (payment declines, automatic rollbacks, edge cases) before a deliberate one-step release. The project is under version control, and recurring mistakes are logged so they're not repeated.


The Impact

Numbers, not vibes

Because the work was measured at every step, the impact isn't a matter of opinion. The booking page went from a failing-grade experience to a fast, stable one. The business gained a retention layer it never had, and customers adopted it almost immediately. And where 2025's bookings spiked on press attention and then fell away when it faded, 2026 holds a steady baseline the business generates itself rather than borrows.

0 → ~90%
Share of customer visits on the loyalty scheme one month after launch. It didn't exist before.
+25%
Bookings per week since the owned site launched (~21 → ~26 avg)
~78%
Of started bookings completed on the custom flow, measurable for the first time
0.471 → 0.006
Layout shift on the booking page, near-eliminated
Loyalty and booking figures from the business's Square customer data and GA4 event tracking on the live booking flow, across roughly 1,210 bookings analysed. Performance figures from Lighthouse audits. The previous third-party widget could not be tracked reliably, so funnel measurement begins at the custom build, which is part of the point: the build made the business measurable for the first time.

The retention layer is the clearest portal-attributable result. Before launch the business had no loyalty programme at all; within the first month, around 90% of customer visits were enrolled. The business already had a healthy base of returning customers, roughly half of monthly visits, but nothing capturing or rewarding them. The portal turned informal loyalty into something the business can see, measure, and build on.

Booking page comparison

The clearest single comparison is the booking page against the original third-party widget that started the project.

MetricOriginal widgetCustom buildChange
Performance score5669+13
Cumulative Layout Shift0.4710.006~99% better
Largest Contentful Paint3.0s2.9sImproved
Total Blocking Time580ms960msRegressed, then addressed

Full-site performance

Measuring the full site against the previous version showed steady gains across form factors, with the biggest mobile win on blocking time (the metric closest to "how frozen does this feel").

MetricBefore (mob.)After (mob.)Δ desktop
Performance687083 → 85
First Contentful Paint2.5s2.5s0.9s → 0.7s
Total Blocking Time1,470ms1,120ms0ms → 90ms
Speed Index2.7s2.5s0.9s → 0.7s
SEO100100100 → 100

In the Client's Words

A real positive impact on the business

Working with Josh has been a fantastic experience from start to finish. He designed and built a professional, user friendly website for my business and seamlessly integrated our booking system into the website too. This has transformed how we manage appointments and interact with our customers.

His attention to detail, technical expertise, and ability to understand exactly what my business needed based off the information given to him has made the entire process straight forward and stress free. The finished website not only looks great but also functions flawlessly, helping us present a professional image and making it easier than ever for customers to book our services.

I would highly recommend Josh to any business looking for a reliable, knowledgeable, and talented web developer. His work has had a real positive impact on my business, and I couldn't be happier with the results.

James HusseyOwner, Dunkin' Doggies

Inside the Portal

The retention layer the business never had

The customer portal is where the project goes beyond "a nice website". It turns one-off bookers into recognised regulars.

Per-dog profiles

Each dog gets its own profile, so the portal feels personal and the business knows exactly who's swimming, even for multi-dog households.

Badges & loyalty

Visual achievement badges sit alongside a real points-based loyalty scheme. Every fifth qualifying swim is free. One motivates, one rewards.

Self-service

Bookings, dogs, addresses, saved cards, passwords, all managed by the customer, secured with authentication I built specifically for the portal.

Bespoke booking

"Add more dogs at checkout", promo-code validation, the kind of specific feature owning the journey makes possible and a plugin would block.


Where It's Going

A platform with room to grow

Because the foundation is owned rather than rented, the business isn't capped by anyone else's roadmap. Planned next phases turn the portal into a companion product.

Phase 1

App foundation

Move the portal to a standalone progressive web app, installable on a phone.

Phase 2

Engagement

Push notifications, offline polish, and swim tracking framed around dog health.

Phase 3

Native

A native wrapper for the App Store and Play Store from the same codebase.

Phase 4

Productise

Package the approach as a repeatable offer for similar small businesses.


Under the Hood

The toolkit behind the work

A pragmatic stack chosen to keep the frontend fast, the backend maintainable, and the business free of lock-in.

Research & competitor analysisUX & visual designWebflowCustom JavaScriptServerless API (Vercel)Square API · Payments · Bookings · LoyaltyCustom authenticationGA4 + Meta CAPI trackingGit version controlStaging & verification workflow

What I Took Away

The lessons that outlast the project

01

A digital presence is a journey, not a page

The real value came from treating first impression, booking, and retention as one connected experience, rather than fixing the booking page in isolation. The layers reinforce each other.

02

Owning the foundation beats renting it

Building against an API took more effort up front than embedding a widget, but it meant the business was never blocked on a feature again, and the experience finally performed.

03

Good judgement includes saying "don't build this"

Reversing my own platform advice when evidence changed, and advising against an unnecessary rebuild, both served the business better than defending a position would have.

04

Ship in deliberate layers

Tight, well-scoped v1s shipped in sequence got value in front of customers sooner and kept a one-person business's project from ever stalling under its own ambition.

In Short

I took a one-person business from no website at all to a bespoke platform it owns end to end.

Research, brand and visual design, a fast custom booking journey, a personalised customer portal, a serverless API layer, and real analytics: designed, built, and shipped end to end, then maintained and improved in production with proper staging and verification.

It's the project I point to when I want to show research, design, engineering, judgement, and measurable business impact in one place.

Dunkin' Doggies · Dog swimming pool · Hull, UK · From no website to an owned platform