NORTHBOUND Get in touch
Systems we've built · Flagship

Modern Man Clinic: the systems behind the coaching.

Modern Man Clinic is a UK men's health coaching business offering TRT support, bloodwork reviews and coaching. Enquiries used to arrive as emails and get followed up by hand on WhatsApp. We replaced that with a CRM we built for them, automatic enquiry capture into it and into GoHighLevel, and a full bloodwork booking app on Randox's APIs, with n8n as the automation layer joining it all up.

Client
Modern Man Clinic
Northbound's role
CRM build, enquiry automation, Randox API booking app, integrations
Stack
Status
In production
Conversion rate
~10%Before the sales system
50%Reached in a single month after we built the sales system

Before and after

How an enquiry used to be handled
BeforeA Squarespace form sent an email. Someone saw it when they could, saved the contact in WhatsApp and messaged back and forth by hand. The enquiry signed up or was forgotten.
AfterEnquiries land in the CRM and GoHighLevel on their own, bloodwork is booked and paid online, and the team spends its time on conversations, not admin.
The CRM

A CRM built around how the team actually sells.

We built their CRM in Notion from scratch, on the stages the team really works in: New Enquiry, Contacted, Thinking, Agreed, Converted and Dead.

  • Every enquiry arrives filled in. Details, bloodwork status, how they heard about the clinic and their notes, the moment the form is sent.
  • Into the email marketing automatically. Each new lead is added to GoHighLevel, so follow-up doesn't rely on anyone remembering.
  • Actions from the row. Open WhatsApp with the message already written, send a blood report or create a booking code, each with one click.
LeadsNotion CRMIllustrative
The architecture

How it fits together, one layer at a time.

Scroll through the system. Each stage lights up the part of the architecture it describes.

01 · Enquiry capture

Every enquiry lands in the CRM and the email marketing the moment it's sent.

The website enquiry form posts straight to an n8n webhook. n8n creates the lead in the Notion CRM with the person's details, whether they've had bloodwork done, how they heard about the clinic and their notes, sets the status to New Enquiry, and adds them to GoHighLevel for email marketing.

Before this, each enquiry was an email from Squarespace that someone had to notice, then copy into WhatsApp by hand. Now nobody retypes a form, and no enquiry depends on someone checking an inbox.

WebhookCreate Notion row
Squarespacen8n webhookNotion CRMGoHighLevel
02 · Payments and bookings

A full booking app on Randox's APIs, so clients book and pay for blood tests themselves.

We built the clinic's bloodwork booking app from the ground up, working directly with Randox's APIs. A client picks a test, chooses a Randox clinic, sees live appointment slots and pays by card through Stripe. Their chosen slot is held with Randox while they pay.

Only once the payment is verified on the server does the system create the lab order through Randox's ordering system and book the appointment through their clinic booking API. Every booking is logged to a Notion Bloodworks board with its order reference.

StripeVercel functionsRandox APIsNotion
03 · The automation layer

Stripe and Notion events drive everything downstream.

The coaching platform the clinic runs on has no webhooks, so it can't tell any other system when something happens. We designed around it: payment events from Stripe and actions in Notion became the triggers, and n8n listens for both.

That decision is what lets the rest of the business be automated without replacing the platform.

n8nStripe eventsNotion actions
04 · Onboarding, comms and internal jobs

One event, three kinds of follow-through.

Client communication runs through GoHighLevel: email sequences and a WhatsApp bot. A button on a client's Notion row sends their blood report by Gmail, then finds them in GoHighLevel and tags the contact, so everyone can see it went out.

Internal jobs work the same way. One click generates a single-use booking code for a client who has already paid elsewhere, writes it back to their row, and the booking app accepts it exactly once.

Webhook (Notion button)Build emailGmail: sendGoHighLevel: find contactIf foundGoHighLevel: tag
GoHighLevelWhatsAppGmailNotion buttons
05 · Ongoing client management

The relationship keeps moving after the first payment.

Client tagging, subscription and failed-payment handling and reactivation run off the same automation layer, so records stay current and lapsed clients don't quietly disappear.

And the small things add up: from any lead in Notion, the team can open WhatsApp with the message already written.

TagsSubscriptionsReactivation
The booking app

A full API build on Randox, from test to appointment.

Clients book and pay for their own blood tests on the clinic's website. Behind the page, our backend talks to Randox's clinic booking and ordering APIs and to Stripe, then logs every booking to Notion. Here's what happens on each side.

Bloodwork bookingRandox APIsIllustrative
TestClinicTimePayBooked

Choose your blood test

Hormone panelCore markers Advanced hormone panelExtended markers Fertility panelSpecialist
TestClinicTimePayBooked

Choose a Randox clinic

Clinic ANext available: tomorrow Clinic BNext available: today Clinic CNext available: Thursday
TestClinicTimePayBooked

Pick a time

MonTueWedThu
08:3009:1510:0011:4513:3015:00
10:00 held for you while you pay
TestClinicTimePayBooked

Pay securely

Card number•••• •••• •••• 4242
12 / 28•••
Pay and bookConfirming payment…
Card payments by Stripe
TestClinicTimePayBooked

You're booked

Advanced hormone panel
Clinic B · Tuesday 10:00

Order ref HLC000000
Engineering details

The parts that make it safe to rely on.

Taking money and placing medical lab orders means the edge cases matter. These are the decisions that don't show up in a diagram.

Payments

Payment first, order second

The lab order is only created after the payment is verified on the server. A client can't end up with an order they haven't paid for.

Payments

One payment, one booking

Each payment is marked as used the moment it creates a booking, so a refresh or a retry can never book twice.

Pricing

Prices enforced on the server

Panel prices live in the backend, so the price a client pays can't be changed from the browser.

Integration

Two lab APIs, one checkout

Randox's ordering and clinic booking APIs are separate systems with separate authentication. One checkout coordinates both, with access tokens cached between requests.

Bookings

Slots held during checkout

The chosen appointment is held with Randox while the client pays, so nobody loses their slot halfway through paying.

Time zones

UK time shown, UTC booked

Randox returns slots in UTC. Clients see UK time; the booking goes back in UTC. Tested across both BST and GMT.

Codes

Single-use booking codes

Codes are generated from Notion, validated before use and claimed once. If a booking fails after a code is claimed, the code is released so the client can try again.

Resilience

Logging never blocks a booking

Every booking is written to Notion, but if Notion is slow or down the client's booking still goes through.

Security

Locked to the clinic's site

The booking API only accepts requests from the clinic's own website, and the booking page sits inside their existing site.

What changed

What the team doesn't have to do any more.

  • No more inbox-to-WhatsAppEvery form submission becomes a lead in the CRM and GoHighLevel, with its source and bloodwork status attached. Nothing waits for someone to notice an email.
  • Bloodwork without the adminClients book, pay and get a lab appointment online at any hour. The team gets the log.
  • One-click actionsSending a blood report, generating a booking code or opening WhatsApp happens from the lead board.
  • The platform staysNo migration needed. Stripe and Notion events fill the gap the coaching platform's missing webhooks left.
Start here

Running on a platform that doesn't talk to anything? We've been there.

Tell us how your process works today, and which tools are involved. We'll reply in writing within one working day with how we'd connect it.

  1. You send a messageA few details and what you need. Plain English is fine.
  2. We reply in writingWhether it's worth automating, how we'd approach it and what we'd need to know.
  3. A 30-minute call, if it makes senseWe map the process with you and agree what a first build would include.
  4. A fixed quoteScope and price agreed before any work starts.
Get in touchReply within one working day
Your details and project

We reply in writing within one working day. No sales sequence, no obligation. Privacy

Get in touch