Cours de Trompette case study
Taking back control • June - July 2026
Augustin Guefif teaches trumpet near Lyon, online and at his students' homes. His online presence was not his own: the website lived on Brizy, while the students, the appointments and the entire message history lived on GoHighLevel. Two subscriptions, two interfaces, no way out. We moved all of it onto a single WordPress site hosted on our own infrastructure, in four weeks: Divi 5 for the front end, FluentBooking for the bookings, FluentCRM for the email.
2 → 0
Rented platforms
19,669
4
Weeks of work
what the platform was holding
The repatriation inventory
What we did
Emptying the CRM before closing the door
A subscription you cancel takes its data with it. Before shutting GoHighLevel down, everything had to come out, and not a simple contact export: all of it.
We wrote a dedicated API client, incremental and replayable, which pulled 434 contacts, 424 conversations, 7,801 messages, 317 appointments, 10,445 calendar events, plus notes, tasks, forms, automation workflows, products and transactions. That is 19,669 records with no duplicates, because every item is keyed by its own identifier.
Two traps are worth knowing. The platform firewall bans the default user agent of HTTP libraries and returns an error that looks exactly like an authentication refusal. And across thirteen hundred chained calls, a network hiccup is statistically certain: without automatic retry, a multi-hour export dies minutes before the finish line.
Rebuilding the site, not tracing it
A hosted page builder does not move house. Brizy pages only export as dead HTML, with no reusable structure. So we rebuilt the entire front end in Divi 5, with fresh art direction: home, method, pricing, booking, contact.
The 114 blog posts were recovered and reworked one by one. Of the 226 images sitting inside those posts, the ones missing alt text or dimensions were completed. Never at file size: at the size actually rendered, measured in the browser. The ratio is locked, layout shift disappears, and the rendering does not move by a single pixel.
A booking that actually produces a Teams link
Four options are live: a free thirty minute trial, then thirty, forty five and sixty minute lessons. FluentBooking runs them, with a Microsoft Teams meeting generated for every booking and the event dropped into the teacher's own calendar.
The detail sounds trivial. It is not. The organiser written into the invitation is not the account connected to Outlook: it is the email of the WordPress user set as calendar host. As long as that host stayed a technical account, every student received an invitation signed by an agency address, and no Teams link was produced at all, because the destination calendar pointed at Google.
Host corrected, Outlook connector restored: a real meeting link and a real organiser, verified end to end on a test booking created and then cancelled.
Email now leaves from the site
The welcome sequence ran at the vendor and shipped from a technical subdomain. Students read an « on behalf of » line in their inbox, and the teacher was not in control of his own sending.
It was rebuilt natively in FluentCRM: the PDF guide as the first send, then four follow up emails. The sender is now the teacher, on his own domain, authenticated. The 487 contacts, the 180 archived campaigns and the full message history live in the site database, on our dedicated server, with full page cache, isolated object cache and automatic certificates.
That is the whole point of this project. The day a platform changes its price, its terms or its mind, there is nothing left to rescue in a hurry.