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.
Before and after
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.
How it fits together, one layer at a time.
Scroll through the system. Each stage lights up the part of the architecture it describes.
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.
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.
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.
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.
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.
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.
Choose your blood test
Choose a Randox clinic
Pick a time
Pay securely
You're booked
Advanced hormone panel
Clinic B · Tuesday 10:00
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.
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.
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.
Prices enforced on the server
Panel prices live in the backend, so the price a client pays can't be changed from the browser.
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.
Slots held during checkout
The chosen appointment is held with Randox while the client pays, so nobody loses their slot halfway through paying.
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.
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.
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.
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 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.
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.
- You send a messageA few details and what you need. Plain English is fine.
- We reply in writingWhether it's worth automating, how we'd approach it and what we'd need to know.
- A 30-minute call, if it makes senseWe map the process with you and agree what a first build would include.
- A fixed quoteScope and price agreed before any work starts.