Published June 2, 2026 · Neel Shah
When Natalie Gamble opened her own practice in Washington, DC, she wanted to increase her web presence. I rebuilt her website from scratch, extending the brand I had previously crafted for her, and created a growth engine from her new Google Business Profile using Jane booking and Google Ads wired together to optimize an ad campaign for real appointments. The goal was simple: make a brand-new practice in a new city easy to find, easy to trust, and easy to book.
I have worked with Natalie's massage therapy business before, crafted her brand: the colors, the logo, the wordmark, even printed business cards. Alongside it I had put up a one-page site, which has minimal information about her business and how to contact her. The brand was solid, and the site was simply a landing page for her potential clients.
Then her situation changed. Natalie relocated her private practice to Washington, DC, started working on it full-time, and wanted her web presence to match the leap. She had spent years building a specialized skill set that most massage therapists never touch: manual lymphatic drainage, oncology massage for people in and out of cancer treatment, and craniosacral therapy. She is an LMT, CMLDT, MMP, and CST. This is clinical, careful work, much closer to recovery and medical support than to a spa day. As such, she wanted her clients to feel welcomed and supported, making her website easy to find and rich with beneficial information.
Starting solo in a city where nobody knows your name is a difficult journey, and Natalie was clear about what she needed:
In other words, she did not just need a nicer page. She needed her services to be easily found, understood, and booked. That framing shaped everything: the technical focus would be on discovery, information, and conversion. The brand was already in place, so my work came down to two acts: rebuild the site so it carries that brand and earns trust, then build an engine that fills the calendar. First, though, let me show you the branding foundation from which Ebb and Flow began.
I had crafted Natalie's brand a few years ago, and it became the foundation for the relocation work. A brand for a body-recovery practice has to do two things at once. It has to feel calm and human, because the people booking are often dealing with surgery, cancer, pregnancy, or chronic swelling. And it has to read as clinical and credible, because Natalie is not offering relaxation, she is offering skilled care. Most of that design work was about holding space for those two ideas together.
Ebb and Flow is about tides: the body's fluids moving, settling, and moving again, which is almost literally what lymphatic work does. So the whole identity is built on the tension between stillness and motion, between the structured and the fluid.
The logo carries this idea through the imagery. The overall shape resembles the famous Yin and Yang icon, showing that the practice supports the natural order of the body. The left half is filled with a stack of calm horizontal bars: this is the Ebb, the still and structured side. The right half is a set of flowing waves: this is the Flow, fluid in motion. One can also arguably see an E and/or F taking form through the negative space. With this logo design, I attempted to convey all aspects of the brand.
The color palette of the brand initially ran across three main notes: a calm clinical blue #5D739C, a restorative purple #9277AB, and a grounding neutral gray #808080. Later, from these three swatches, I built a full graded theme with scales from 50 to 950 so the site could use them for backgrounds, text, and states while staying legible and accessible.
The wordmark pairs a flowing handwritten script called “Saturday” for “Ebb & flow” against clean, widely letterspaced capitals with Inter for “MASSAGE STUDIO.” Fluid and functional, these two typefaces were used to expand the typography themes used in the full site.
Note: we use a lowercase f only in the wordmark since the script character fits the brand more aesthetically.
A practice that runs on referrals and local trust lives partly in the physical world, so the brand had to work in print too. I designed business cards and later a post-surgical treatment flyer that Natalie could hand to clients, leave at partner clinics, and bring to in-person networking. The logo and wordmark had to survive as a one-inch favicon on the website and hold up at arm's length on cardstock.
The old one-page site wasn't enough for Natalie's reborn practice. It described one person in general terms, on a single screen, with no room for the seven distinct services Natalie actually offers or the trust signals each one needs. With the launch of her new location, this was the right time to rebuild properly, so I migrated the site to Next.js 16 and React 19 on the App Router and expanded it using the brand guidelines and Natalie's feedback.
The visual I am proudest of is the signature waterdrop page transition. Natalie's whole brand is fluid and functional, so I did not want navigation to feel like a hard cut from one page to the next. Instead, every link click plays out like a single drop of water.
When you click, a drop forms up at the header and falls to the center of the screen, accelerating naturally. The instant it lands, a ripple of the destination page's color blooms outward from that point and washes the new page into view through an expanding radial reveal.
The effect is simple to describe but surprisingly fussy to make reliable, due to Next.js server side rendering and also because a person can click a second link while the first drop is still falling. I built a small state machine so the animation can never leave the interface stranded in a half-finished state.
idle ──(click)──→ dropping ──(drop lands)──→ navigating
↑ │
└──(reveal finishes)── revealing ←──(route swapped)Due to its simplicity, the entire animation itself is plain CSS, which keeps it on the compositor for optimal smoothness, and driven from a React context that owns the phase state. No heavy animation library, just keyframes and a custom property for the expanding radius. How refreshing!
/* Teardrop falls from the header to the center of the screen */
@keyframes teardrop-fall {
from { top: 30px; }
to { top: calc(50% - 21px); }
}
/* A circle of the destination color expands from where the drop lands */
@keyframes circle-expand {
0% { --reveal-r: 0px; opacity: 0; }
1% { opacity: 1; }
100% { --reveal-r: 2000px; opacity: 1; }
}
/* The incoming page is visible only inside the growing circle */
.reveal-mask {
mask-image: radial-gradient(
circle var(--reveal-r) at 50vw 50vh,
#000 calc(100% - 64px),
transparent 100%
);
}It is a small visual detail, but it could very well be the thing people remember, and it is the brand made tangible. You do not just read that the practice is fluid and functional, you feel it every time you move through the site.
The structure of the website would be truly brand new. A single screen had to transform into a site a real practice could stand on, with a place for every service and a clear path to booking. I created an information architecture tree to facilitate this:
Each service page contains in-depth information on Natalie's approach to that modality. Individual services were assigned different background colors if it felt like a better fit.
Navigation for services is made simple through a services dropdown on desktop. On mobile, the services tree collapses into a drill-down menu so the depth never overwhelms a small screen.
Several of these services are for people in fragile situations: recovering from surgery, going through chemotherapy, pregnant, or managing a chronic condition. The content is written to match this sensitivity. With Natalie's credentials up front, the pages set honest expectations about what each modality does and does not do, whether a service might need a doctor's sign-off, and any contraindications, stating each plainly with a clear caution rather than burying it. For a health-adjacent business, making this type of content highly visible builds trust for visitors as well as sending authority signals for SEO.
I engineered the site for discovery from the ground up. Every page sets its own metadata, uses semantic HTML, and has a place in the sitemap. I even added category level pages for all Lymphatic services and all offered Services, in addition to each individual service page, which boosts visibility for crawlers looking for shortcuts to information.
The richer layer is structured data. The site publishes a full JSON-LD graph: an Organization, a LocalBusiness typed as a health business with address, geocoordinates, and opening hours, a Person entry carrying Natalie's four credentials, and an OfferCatalog listing every service with its price. This is exactly the information Google needs to show the practice as a credible local result.
{
'@type': ['LocalBusiness', 'HealthAndBeautyBusiness'],
'@id': `${BASE}/#location-georgetown`,
address: {
'@type': 'PostalAddress',
streetAddress: '2300 Wisconsin Ave NW, #400b',
addressLocality: 'Washington', addressRegion: 'DC', postalCode: '20007',
},
geo: { '@type': 'GeoCoordinates', latitude: 38.92013, longitude: -77.0719 },
openingHoursSpecification: [
{ '@type': 'OpeningHoursSpecification',
dayOfWeek: ['Monday', 'Tuesday', 'Wednesday', 'Thursday'],
opens: '09:00', closes: '17:00' },
{ '@type': 'OpeningHoursSpecification',
dayOfWeek: ['Friday', 'Saturday'], opens: '09:00', closes: '16:00' },
],
hasOfferCatalog: { '@type': 'OfferCatalog', name: 'Massage Services', /* ... */ },
}I also added an llms.txt index and explicit crawler rules so the assistants behind ChatGPT and Perplexity can read the practice cleanly and recommend it when someone asks where to get lymphatic work done in DC. Traditional search and AI search are both real referral channels now, and the site is legible to both.
A beautiful, searchable site is still just a brochure until it reliably turns a curious visitor into a customer with a booked appointment. The last act was wiring up that loop and then pouring traffic into it.
For local health searches, the decision often happens in the Google map pack (the three featured physical locations based on your search), not on a website at all. So I created and built out Natalie's Google Business Profile: her service categories, full service list, hours, her Glover Park location, and photography that matches her brand. Having a complete, accurate profile is what lets the practice surface for “lymphatic drainage near me” and gives a first-time searcher somewhere to call, get directions, or click through.
Natalie wanted to run scheduling on Jane, so the site treats Jane as the finish line for booking and reduces friction between intent and appointment. For example, rather than dropping everyone onto a generic booking home page, each individual service deep-links straight into its own Jane flow. Someone reading the Oncology service page can click Schedule, land directly on the Oncology massage booking page, and continue to select the time they would like to come in.
On the site, every route to Jane goes through a single tracked link, so the moment someone heads to booking, the site fires a book_online_click event into Google Analytics with the exact booking URL attached.
import { sendGAEvent } from '@next/third-parties/google';
export default function TrackedLink({ event, eventParams, children, ...props }) {
return (
<a {...props} onClick={() => sendGAEvent('event', event, eventParams)}>
{children}
</a>
);
}However, what I really wanted to track is when someone has confirmed a booking. Of course, Natalie will see this for herself in her Jane calendar, but tying it into a user journey is invaluable information to determine what events actually led to the appointment being booked (searches, ads, etc.).
This is made possible by Jane through a thin but functional Google Analytics integration. All I had to do was give Jane a measurement ID from Google Analytics and voila! Jane fires an event from the booking confirmed page on the third-party Jane scheduling site that is linked to the user's journey to and through the Ebb and Flow website.
Those booking events were then imported into Google Ads as the conversion metric that Natalie's campaign optimized toward. This custom conversion metric change affects everything about how the ads behave. Instead of buying clicks and hoping for the right outcome, the campaign learns which searches, audiences, and times of day actually produce people who try to book, and it spends more there. The site is no longer just a brochure the ads point at, it is a measurement instrument that the campaign can learn from.
With the measurement loop closed, I launched a Google Ads search campaign for Natalie to prime the practice while her word of mouth efforts took root. The campaign targets high-intent local searches for the services Natalie specializes in, and uses all of the features and mechanisms described above to track and optimize the user's journey to booking an appointment. The result is a clean, legible funnel:
The campaign is recent, and spending is of course based on Natalie's budget for advertising. Below are the results of the campaign so far, and the numbers will keep moving as the Google Ads campaign matures.
Over roughly ten weeks, from late March to early June, the campaign served 7.15K impressions and drew 295 clicks to the service pages at a 4.13% click-through rate. Those clicks produced 26 booking conversions, a click-to-booking rate close to 9%. Because the conversion is the Jane appointment-booked event rather than a raw click, each of those 26 is a real scheduled appointment, traced from a Google search all the way through to Natalie's calendar.
Most importantly, those are real appointments rather than raw clicks. Each conversion is a booking traced from a Google search through to Natalie's Jane calendar, which is exactly the start a practice running its first campaign wants to see.
In plain terms, here is what changed for the business:
Natalie's practice is just getting started, and the foundation is now in place for iterative, compounding work. The notes I left Natalie focused on a few high-leverage moves:
None of that requires any major changes to the website. Since I suggested Natalie front-load the branding, the website, and the measurement metrics: the expensive work is now done, and everything from here just gives more return on her investment!
For me, there were a few takeaways from this project:
Brand and growth are the same story. It is tempting to treat the logo, the website, and the ad account as separate line items. They are not. A coherent identity is what makes a cold click visitor trust the practice in the 2-3 seconds they decide whether to stay or bounce, and that trust is what makes every ad dollar go further. For example, the water-drop transition is not just decoration, it is the brand made tangible, and could be the thing people remember and share about the site.
For a health practice, the job is trust and a frictionless path to booking. When the people booking are dealing with surgery or cancer or pregnancy, clever copy matters less than visible credentials, careful and honest content, and a single tap from intent to appointment. Most of the real design work was removing doubt and friction.
Measure the real success metric. The most important piece of the growth engine is the appointment booked event being fired by Jane. Tracking appointments instead of clicks is what let the campaign actually learn, and it is the difference between advertising that compounds and advertising that just spends. A pretty site that cannot tell you whether it books anyone is just a more expensive brochure.
Natalie's situation is one a lot of people share: having real skill, a new practice, and trying to get the right clients to find it. The encouraging part is that it is a solvable problem, and the solution is not mysterious. It starts with a clear brand, a site built to be found and trusted, and an honest means of measurement. If you are starting something of your own and staring at that same blank page, I would love to help you fill it.
Working with Neel to launch my business was a game-changer. He handled my logo, marketing materials, and a complex website build with an integrated booking system flawlessly. He added in things that I hadn’t thought of that were so creative to the site, ex. the drop that comes down when switching pages was a wonderful idea so relevant to my work. His strategic approach to SEO means my niche services are actually getting found by the right people. He listens, he executes, and he delivers a top-tier product. If you want someone who genuinely cares about your business goals and has the skills to back it up, he’s your guy!
