Why UTM Parameters Matter More for Medspas Than for Most Businesses
The average medspa patient spends est. $2,400 per year once they become a loyal client. That number changes everything about how you should think about your marketing budget.
If you spend $800 acquiring a new patient through Google Ads and that patient goes on to purchase three memberships and two filler treatments over two years, your return on that acquisition looks very different from the raw cost-per-click data in your Google Ads dashboard.
But here is the problem I see constantly when I audit medspa marketing accounts: owners and managers have no idea which campaign, channel, or even which ad actually brought in their best patients. They are making budget decisions — moving thousands of dollars between Google, Facebook, and Instagram — based on gut feel or vanity metrics like impressions and clicks.
UTM parameters solve this. They are small pieces of tracking code appended to your URLs that tell Google Analytics 4 exactly where each visitor came from, which campaign they clicked, and what specific ad or variation sent them. When you combine UTM data with GA4's conversion tracking, you can trace a booked appointment back to the exact source that generated it.
For a business with a high patient lifetime value, that kind of attribution is not optional. It is the foundation of every smart marketing decision you make.
The bottom line: medspas compete on local trust and premium positioning. Knowing which channels attract the patients who actually spend — and which attract one-time discount seekers — lets you invest in what works and cut what does not.
The 5 UTM Parameters and What Each One Tracks
Google Analytics 4 recognizes five UTM parameters. Three are considered core, two are supplementary. Here is what each one does in practical terms.
utm_source (required)
This identifies where your traffic originates. Think of it as the platform or property that sent the visitor. Common values: google, facebook, instagram, tiktok, email, sms. Keep these lowercase and consistent — GA4 is case-sensitive, so Google and google appear as two separate sources.
utm_medium (required)
This identifies the marketing channel type. While source tells you where, medium tells you how. A visitor from Google can come through paid search (cpc) or organic search (no UTM needed — GA4 detects this automatically). Recommended values: cpc, paid-social, email, sms, display, organic-social.
utm_campaign (required)
This names the specific marketing campaign that generated the click. For medspas, this maps directly to your current promotion or offer: botox-promo, new-patient-offer, membership-launch. This is the parameter you will filter on most often when analyzing ROI by campaign.
utm_content (optional)
This differentiates between multiple links within the same campaign. Most commonly used for A/B testing — for example, testing two Facebook ad creatives for the same Botox promotion. Values like variant-a vs variant-b, or banner-teal vs banner-photo make it easy to see which version drove more bookings.
utm_term (optional)
Originally designed for paid keyword tracking in Google Ads. When you are running manual keyword campaigns, populate this with the keyword that triggered the ad — for example, botox+near+me or medspa+new+patient+special. In most cases, Google Ads auto-tagging handles this automatically through the gclid parameter, so utm_term is mainly useful for custom paid campaigns where auto-tagging is not available.
Medspa-Specific UTM Naming Conventions: a Framework You Can Use Directly
The biggest UTM mistake I see in medspa analytics accounts is inconsistent naming. One month a campaign is called Botox Promo, the next it is botox_promo, the next it is BOTOX-PROMOTION. GA4 treats each of these as a completely separate campaign, fragmenting your data and making it impossible to see performance trends over time.
Here is the naming convention framework I recommend for medspas:
Core rules
- Always lowercase — no exceptions
- Hyphens as separators, never underscores or spaces
- No special characters except hyphens
- Keep values short and descriptive — aim for under 30 characters
- Spell out the offer type, not internal codes
- Add a season or quarter suffix for time-limited campaigns:
botox-promo-q4-2025
Source naming
Use the platform name, lowercase, no spaces: google, facebook, instagram, tiktok, email, sms, referral. For referral partners, you can extend the source: referral-drsmith to track individual referral partners.
Medium naming
Stick to these values and resist the urge to invent new ones: cpc, paid-social, email, sms, display, organic-social, affiliate.
Campaign naming structure
I recommend this pattern: [offer-type]-[modifier]-[period]
Examples: botox-promo-aug2025, membership-launch-q1, new-patient-50off-jan2026, hydrafacial-series-summer.
Document your naming conventions in a shared Google Sheet so every team member and any agency you work with uses identical values. This single habit keeps your GA4 data clean for the entire lifespan of your practice.
How to Set Up UTM Tracking Properly in Google Analytics 4 for Medspas
UTM parameters only deliver value if GA4 is properly configured to receive and report on them. Here is the setup checklist I walk through with every new medspa client.
Step 1: Verify your GA4 property is receiving data
In GA4, go to Admin → Data Streams → your web data stream. Confirm the stream is active and that the Measurement ID (format: G-XXXXXXXXXX) matches what is installed on your website. Use the GA4 DebugView (Admin → DebugView) to confirm events are firing in real time when you visit your site.
Step 2: Enable Google Signals
Admin → Data Settings → Data Collection → Enable Google Signals. This allows GA4 to associate sessions across devices for signed-in Google users, which improves attribution accuracy for cross-device campaigns.
Step 3: Mark your booking/inquiry completions as conversions
In GA4, go to Admin → Events. Find the event that fires when a patient books an appointment or submits an inquiry form. Click the toggle to mark it as a conversion. If you are using a booking platform like Jane App, Mindbody, or Boulevard, confirm that a thank-you page fires a pageview event that GA4 can capture.
Step 4: Create a campaign performance Exploration
In GA4, open Explore → Blank exploration. Add these dimensions: Session source/medium, Session campaign. Add these metrics: Sessions, Conversions, Conversion rate, Revenue (if applicable). Apply a date range of at least 90 days. This becomes your primary UTM performance report.
Step 5: Exclude internal traffic
Admin → Data Filters → Create Filter → Developer Traffic or Internal Traffic. Add your clinic's IP address. This prevents staff browsing from inflating your session and conversion counts.
The 12 Most Common Medspa Campaigns and Their UTM Structures
Below is the complete UTM reference table I use when onboarding medspa clients. These cover est. 90% of the campaigns a typical medspa runs in a given year.
| Campaign | utm_source | utm_medium | utm_campaign | Notes |
|---|---|---|---|---|
| Botox Promotion | facebook |
paid-social |
botox-promo-q4 |
Add year suffix for archived data |
| Filler Special | instagram |
paid-social |
filler-special-fall |
Use utm_content for A/B creatives |
| Membership Launch | email |
email |
membership-launch |
Segment by list in utm_content |
| New Patient Offer | google |
cpc |
new-patient-offer |
Pair with utm_term for keyword data |
| Laser Treatment | google |
cpc |
laser-treatment |
Specify treatment in campaign name if needed |
| HydraFacial Promotion | instagram |
paid-social |
hydrafacial-promo |
High visual format — test Reels vs. Stories |
| Holiday Special (Q4) | facebook |
paid-social |
holiday-special-q4 |
Add year — this campaign recurs annually |
| Summer Skin Prep (Q2) | email |
email |
summer-skin-prep |
Works well with SMS follow-up sequence |
| Loyalty Reward Campaign | sms |
sms |
loyalty-reward |
SMS source + medium keeps attribution clean |
| Referral Drive | referral |
affiliate |
referral-drive |
Extend source with partner name if tracking multiple referrers |
| Remarketing / Retargeting | google |
display |
remarketing-website |
Segment by audience in utm_content |
| TikTok Awareness | tiktok |
paid-social |
brand-awareness-tiktok |
Track content variant in utm_content |
UTM Mistakes That Break Your Analytics (and How to Avoid Them)
I have audited more than 40 medspa marketing accounts at this point. The same UTM errors appear over and over. Here are the six most damaging ones.
1. Inconsistent capitalization
GA4 treats Facebook, facebook, and FACEBOOK as three distinct sources. Always lowercase. Always. Set this rule in writing for your team and any agency that touches your campaigns.
2. Spaces in parameter values
A space in a UTM value gets URL-encoded as %20 or +, which creates messy, inconsistent data in GA4. Use hyphens instead: new-patient-offer, not new patient offer.
3. Missing UTM parameters on paid campaigns
If you are spending money on any paid channel and not appending UTM parameters to every destination URL, that traffic lands in GA4 as direct or unattributed. You have no idea what your spend actually produced. This is the most expensive UTM mistake a medspa can make.
4. UTM parameters on internal links
Adding UTMs to links within your own website resets the session source in GA4 to whatever UTM value you put on the internal link. A patient who arrived from a Google Ad and then clicked an internal link tagged with utm_source=email now looks like an email visitor. Never tag internal links.
5. Not excluding brand traffic from UTM campaigns
If your Google Ads campaigns target your own brand name and those clicks are UTM-tagged, they will attribute conversions that would have happened organically anyway. Keep brand and non-brand campaigns separate and monitor them independently.
6. Changing campaign names mid-flight
Renaming a campaign halfway through a run splits your data across two entries in GA4. Decide on your naming convention before you launch a campaign and stick with it until the campaign ends. If you need to make changes, start a new campaign entry.
How to Read UTM Data in GA4 to Improve Your Medspa Marketing ROI
Having clean UTM data is only useful if you know how to read it. Here is how I actually use GA4 UTM reports to make budget decisions for medspa clients.
The primary report: Traffic Acquisition
In GA4, go to Reports → Acquisition → Traffic Acquisition. Change the primary dimension from "Session default channel group" to "Session source/medium." This view shows exactly which UTM source/medium combinations are driving sessions, conversions, and revenue. Sort by conversions descending to see your highest-performing channels immediately.
Add a secondary dimension: Session campaign
With the Traffic Acquisition report open, click the + icon next to the primary dimension and add "Session campaign." Now you can see which specific campaign within each channel is driving results. A row showing facebook / paid-social | membership-launch tells you that Facebook paid ads running the membership launch campaign generated X sessions and Y conversions.
Filter by date ranges that match your campaign windows
Do not analyze UTM performance over arbitrary rolling 30-day windows. Match your date range to the actual campaign run dates. A Botox promotion that ran October 1–31 should be analyzed with that exact date range, compared to the same promotion from the previous year if available.
Build a campaign comparison view
In GA4 Explore, create a Free Form exploration with Session campaign as the row dimension and these metrics side by side: Sessions, Conversions, Conversion rate, and Engaged sessions. This gives you a clean campaign performance scorecard you can review monthly.
Connect cost data for full ROI visibility
For Google Ads, link your account to GA4 via Admin → Google Ads Linking. For Facebook and Instagram, you will need to import cost data manually or use a tool like Supermetrics. With cost data in GA4, you can calculate cost per conversion by campaign — the number that actually determines whether a campaign is worth running again.
From UTM Data to Bookings: What Good Attribution Looks Like
Clean UTM tracking is not the end goal. The goal is knowing which marketing activity fills your treatment rooms with high-value patients. Here is what that looks like in practice.
Say you run three campaigns in the same month: a Google Ads new patient offer, a Facebook Botox promotion, and an email campaign for your loyalty program. At month end, you pull the Traffic Acquisition report in GA4 and see this pattern:
- Google Ads / new-patient-offer: 48 sessions, 6 conversions, 12.5% conversion rate
- Facebook / botox-promo: 210 sessions, 4 conversions, 1.9% conversion rate
- Email / loyalty-reward: 90 sessions, 11 conversions, 12.2% conversion rate
The Facebook campaign generated the most clicks by far, but the email campaign and Google Ads campaign each converted at more than six times the rate. If your booking platform tells you those Google and email converters went on to purchase additional services, the case for reallocating budget away from top-of-funnel Facebook toward email and Google becomes obvious — and it is backed by data, not instinct.
This is what I mean when I say UTM tracking changes everything for medspas. It shifts the conversation from "which channel gets the most traffic" to "which channel brings in patients who actually stay and spend." That is the question worth answering.
If you want me to review your current UTM setup and attribution model, I offer a free Google Ads audit for medspas, and you can also run your numbers through the medspa revenue calculator to see how attribution improvements translate to revenue impact. For a broader look at your marketing system, the medspa marketing audit tool covers UTM tracking as one of twelve key areas.
Frequently Asked Questions
-
No. The three required parameters are
utm_source,utm_medium, andutm_campaign. Without all three, GA4 cannot properly attribute the session to the correct campaign. The optional parameters —utm_contentandutm_term— add detail for A/B testing and keyword tracking respectively, but they are only worth adding if you have a specific reason to track at that level of granularity. -
Partially. When Google Ads auto-tagging is enabled, GA4 receives a
gclidparameter that automatically populates source, medium, campaign, and keyword data in your GA4 reports — without you manually adding UTM parameters. However, if you also add manual UTM parameters to your Google Ads URLs, they will override the auto-tag data. For Google Ads specifically, I recommend relying on auto-tagging and reserving manual UTMs for all other channels (Facebook, Instagram, email, SMS, etc.). -
UTM parameters should not affect your SEO if your website handles them correctly. The main risk is that URLs with UTM parameters get indexed by Google as duplicate pages. To prevent this, make sure your site either uses a canonical tag pointing to the clean URL (without UTM parameters) or that your CMS strips UTM parameters before rendering. WordPress does this automatically in most configurations. You can also add UTM parameter patterns to your Google Search Console settings to prevent them from being treated as separate pages.
-
This depends on how your booking flow works. If the booking happens on your own domain (embedded widget), GA4 can track the entire funnel including the confirmation step. If the booking redirects to an external platform domain (e.g., jane.app), you will lose the session attribution once the visitor leaves your site. To preserve attribution in that scenario, check whether your booking platform supports GA4 cross-domain tracking or a direct GA4 integration. Jane App, for example, allows custom conversion tracking codes on confirmation pages. Alternatively, use your platform's built-in reporting alongside GA4 and reconcile the two datasets manually.
-
Yes — organic social bio links are one of the best places to use UTMs. Without a UTM on your Instagram or TikTok bio link, that traffic often appears as "direct" in GA4 because mobile apps do not always pass referrer information. A simple
?utm_source=instagram&utm_medium=organic-social&utm_campaign=bio-linkappended to your bio URL gives you accurate attribution for all traffic driven by your organic social content. Update this UTM when you run a specific campaign from your bio link. -
Use
utm_source=smsandutm_medium=smsfor all SMS campaign links. Since SMS messages have character limits, I recommend using a URL shortener (like Bitly) that preserves the UTM parameters in the destination URL. Most SMS marketing platforms (Klaviyo, Attentive, Postscript) have built-in UTM appending — check your platform settings before manually adding them to avoid duplication. Test by clicking the link on a mobile device and verifying in GA4 DebugView that the session shows the correct source and medium. -
Yes. For multi-location medspas, I recommend adding a location identifier to your campaign name:
botox-promo-miamivsbotox-promo-dallas. Alternatively, if each location has its own GA4 property, you do not need to differentiate in the UTM — the property itself segments by location. For a single GA4 property covering multiple locations, the campaign name suffix approach keeps your data clean and makes filtering by location straightforward. -
Source is the specific origin — the platform or property that sent the visitor. Medium is the channel type — the category of marketing that describes how they arrived. An analogy: if a patient was referred by a local spa, the source is that spa's name, and the medium is "referral." In practice: source =
facebook, medium =paid-social. Source =google, medium =cpc. Source =newsletter-june, medium =email. GA4 groups medium values into default channel groups (Paid Social, Organic Search, Email, etc.), so using standard medium values ensures your traffic lands in the correct channel bucket automatically. -
Use the same campaign value for the entire duration of a single campaign run. When the campaign ends and you launch a new version (even if it is the same type of offer), create a new campaign name — typically by appending the period:
botox-promo-q3-2025followed bybotox-promo-q4-2025. This lets you compare campaign performance across periods and see whether you improved results over time. The exception is evergreen campaigns like a permanent "new patient offer" — for these, it is fine to keep the same campaign name continuously so long as the offer itself does not change. -
UTM parameters themselves are not PHI (Protected Health Information) — they describe where a visitor came from, not their health status. However, the broader question of GA4 and HIPAA compliance is more nuanced. GA4 collects IP addresses and device identifiers, which can potentially be combined with health-related page visits (e.g., a patient visiting your Botox treatment page) to infer health information. For medspa marketers, the conservative approach is to sign a Business Associate Agreement (BAA) with your analytics provider, configure GA4 to anonymize IP addresses, and avoid tracking pages that contain explicit health condition information. Consult your legal counsel for specific compliance guidance for your practice.
I Help Medspas Turn Marketing Data Into Booked Appointments
I am Mandeep Singh, founder of Sprout Sage Solutions. I specialize in performance marketing for medspas — from UTM setup and GA4 configuration to Google Ads and paid social campaigns that drive actual bookings, not just clicks.