Always tag marketing links with a consistent set of UTMs: source, medium, and campaign, so every click can be traced back to the exact ad, e-mail, or QR code that sent it. This gives you accurate attribution for ad spend and new member decisions instead of guesswork. Use the templates below, apply them to your next campaign, and check the results in Analytics within a few days.
TL;DR:
- Using consistent lowercase naming and a fixed set of source and medium values helps prevent fragmentation and improves data accuracy in GA4 reports.
- Properly tagging links with all three required UTMs ensures that traffic is accurately attributed, reducing "(not set)" entries in analytics.
- Manual UTM tagging for non-Google ad channels, combined with auto-tagging for Google Ads, prevents conflicting data and preserves campaign integrity.
- Regularly testing and auditing your tagged links before campaigns go live helps catch issues like shortened URLs stripping query parameters or incomplete tagging.
- Tracking key metrics such as trial bookings, conversion rates, and cost per trial can lead to better campaign decisions and more effective allocation of marketing budget.
Table of Contents
- UTM basics: which parameters actually matter
- Naming conventions and reusable UTM templates
- Channel-specific tagging examples for gyms
- Where to find UTM data in GA4 Traffic acquisition
- Turning UTM data into better gym campaigns
- Common mistakes and a quick troubleshooting checklist
- Practical Enoch Marketing implementation checklist for gyms
- Why measurement discipline wins for gyms
- Enoch Marketing services: tracking audits and managed reporting
- Sources
- FAQ
UTM basics: which parameters actually matter
A UTM parameter is a small tag added to the end of a URL that tells Analytics where a visitor came from. Three parameters form the required baseline, according to Google's own Campaign URL Builder guidance:
- utm_source: the platform or publisher sending the traffic, such as facebook, google, or newsletter.
- utm_medium: the general category of the channel, such as paid_social, email, or sms.
- utm_campaign: the specific promotion or push, such as a summer trial offer or a class launch.
- utm_content (optional): distinguishes between two links pointing to the same place, useful for A/B testing an ad creative or a button placement.
- utm_term (optional): mainly used for paid search keywords.
- utm_id (optional): a campaign ID that can tie into other reporting systems.
Skipping source, medium, or campaign is the single biggest cause of the dreaded "(not set)" rows in your reports. When any UTM parameter is present, Analytics builds its traffic source dimensions from those UTM values, according to Google's documentation on manual tagging and auto-tagging. That is different from auto-tagging, where Google Ads automatically appends a GCLID to the URL and Analytics reads campaign data straight from your ad account.
Mixing the two approaches on the same link causes problems. If you manually tag a Google Ads URL and Google Ads also auto-tags it, Analytics may prioritize different dimensions depending on the report, which fragments your data. The fix is simple: let auto-tagging handle Google and Microsoft ads, and use manual UTMs everywhere else, including e-mail, SMS, organic social, and printed materials.
Naming conventions and reusable UTM templates
Fragmented data is almost always a naming problem, not a tracking problem. "Facebook," "FB," and "facebook_ads" all show up as separate rows in Analytics even though they mean the same thing. The fix is a locked set of rules everyone on your team follows, no exceptions.
- Use lowercase only, always. GA4 treats "Facebook" and "facebook" as different values.
- Pick one separator (underscore or dash) and use it everywhere, never both.
- Assign one fixed utm_source per platform: fb, insta, tiktok, google, newsletter1.
- Assign one fixed utm_medium per channel type: paid_social, organic_social, email, sms, referral, poster_qr.
- Build campaign names with a template: offer_audience_month, so a reader can identify the promotion without opening the link.
A few campaign name examples make the pattern concrete: freetrial_localmoms_march, newmember_dropinathletes_june, bogo_summerchallenge_july, and referral_currentmembers_september. Each one tells you the offer, who it targeted, and when it ran, just by reading the campaign field in a report.
Use utm_content when two links share the same source, medium, and campaign but point to different creative or placements, such as a video ad versus a carousel ad running the same offer. Use utm_id only if you also track campaigns in a CRM or ad platform by numeric ID and want that ID to carry through to Analytics.
Pro Tip: Keep your naming rules in a shared spreadsheet everyone on staff can see before they build a link, not after.

Channel-specific tagging examples for gyms
Different channels break UTMs in different ways, so the tagging approach needs to match the channel.
- Email: Tag your regular newsletter separately from a promotional blast or an onboarding sequence, since they behave differently in reports. A newsletter link might use
utm_source=newsletter1&utm_medium=email&utm_campaign=weeklytips_march, while a promo email pushing a trial offer usesutm_campaign=freetrial_localmoms_march. When one e-mail has multiple buttons, such as "Book a Trial" and "See Class Schedule," add a distinct utm_content to each so you can see which button actually gets clicked. - Paid social (Meta): Meta's own dynamic parameters can auto-populate some tracking fields, but they are not a substitute for a consistent UTM structure across your whole campaign. Use manual UTMs in the ad's website URL field so a Meta lead ad and a Meta traffic ad tagged for the same offer land in the same campaign row in Analytics, regardless of ad set.
- SMS: Text messages usually need a short link, and many URL shorteners strip query strings by default. Test any shortener before a campaign goes out. A link like
bit.ly/gymtrialneeds to resolve to the full tagged URL, not a stripped version, or your SMS clicks will show up as direct traffic instead ofutm_medium=sms. - Organic social and link-in-bio: Tag links you place in a bio tool or a single feed post promoting a specific offer, since platform-level analytics won't tell you which post drove a booking. Routine profile links that just point to your homepage generally don't need tagging, since there's no specific campaign to attribute.
- Offline and QR codes: A poster in your lobby or a flyer at a local event needs a tagged link behind its QR code, such as
utm_source=poster&utm_medium=poster_qr&utm_campaign=dropinweek_august, or the scan will never show up as anything but direct traffic in your Traffic acquisition report. Referral cards handed out by current members should carry their own medium, such asreferral, so member-driven growth is visible separately from paid growth.
Where to find UTM data in GA4 Traffic acquisition
Once your links are tagged and clicked, the data lands in a specific report. In GA4, open Reports > Acquisition > Traffic acquisition, then change the primary dimension to Session source / medium or Session campaign to see individual campaigns broken out.
- Filter or search by campaign name to isolate one promotion, such as everything tagged
freetrial_localmoms_march. - Compare Session source / medium rows to catch naming inconsistencies, since "fb / paid_social" and "facebook / paidsocial" will appear as two separate lines instead of one.
- Build a segment or comparison for a single campaign to see downstream behavior, including form submissions or booked visit events tied to that traffic.
- Remember that GA4 groups sources into default channels (Paid Social, Organic Social, Email, Direct, and so on) based partly on your medium values, so a misnamed medium can push real paid traffic into an "Unassigned" or "Direct" bucket.
The Traffic acquisition report shows cross-channel source dimensions like Session source, Session medium, and Session campaign, which is why clean UTMs matter more than any other single setup step. When a Google Ads click carries a GCLID, Analytics typically favors the auto-tagged campaign data over any manual UTM on the same link, so there's rarely a reason to manually tag Google Ads URLs once auto-tagging is switched on, per Google's tagging documentation.
Missing UTMs on any one of the three required fields is the most common reason a campaign shows up as "(not set)" in Traffic acquisition, which makes it impossible to separate that traffic from unrelated visits later.
Turning UTM data into better gym campaigns
Tracking only matters if it changes a decision. For gym marketing, a handful of KPIs deserve most of your attention: leads captured, booked trial visits, trial-to-member conversion rate, cost per trial, and return on ad spend by campaign. Related metrics worth tracking alongside these are covered in more depth in a guide to must-track gym marketing metrics.
- Map the full funnel. Follow each campaign from the tagged click, to the landing page it hits, to the booking or sign-up event, so you know exactly where visitors drop off.
- Triage underperforming campaigns. Check tracking first (are UTMs even present), then the landing page (is the offer clear), then the creative (is the ad itself weak), then the audience (is it reaching the right people).
- Compare creative variants. Use utm_content differences to see which ad image, headline, or e-mail subject line actually drives more booked visits, then put more budget behind the version that wins.
Pro Tip: Review campaign-level data weekly during an active promotion, not just at the end, so you can shift budget toward the version that's already working.
Common mistakes and a quick troubleshooting checklist
Most broken UTM tracking comes down to a small number of repeat offenses.
- Inconsistent capitalization or naming. "Email" and "email" split your data in two. Lock in lowercase and never deviate.
- URL shorteners stripping query strings. Some shorteners drop everything after the question mark. Test every shortener with a real tagged link before using it in a live campaign.
- Partial tagging. A link with utm_source but no utm_medium or utm_campaign still creates gaps and "(not set)" rows, since GA4 needs the full trio to categorize traffic properly.
- Mixing manual tags with auto-tagging on the same platform. Pick one method per channel and stay consistent.
- Skipping the click test. Before a campaign goes live, click your own tagged link and confirm it shows up correctly in GA4's Realtime report within a few minutes.
Practical Enoch Marketing implementation checklist for gyms
Gyms that get clean data usually follow the same four-step process, whether they run it themselves or hand it to an agency.
- Audit: Pull every live marketing link, from bio pages to old flyers, and check which ones already carry UTMs and which don't.
- Build: Create one naming table with locked source, medium, and campaign values, then build a set of ready-to-use templates for the next quarter's promotions.
- Launch: Replace or append tags to every active link, run a short-link test on anything going through SMS or a QR code, and confirm each one lands correctly in Realtime before the campaign goes wide.
- Scale: Once tracking is clean, build a simple dashboard by campaign and review it on a set schedule instead of checking numbers only when something feels off.
Why measurement discipline wins for gyms
The gyms that struggle with marketing rarely have a creative problem. They have a measurement problem: three ads running with the same vague "facebook" tag, no way to tell which promo actually filled the 6 a.m. class. Fixing that takes an afternoon, not a rebuild. Pick one campaign running this week and give it a clean, locked-in UTM structure before it launches. That single habit tends to expose more waste, and more wins, than another round of new ad creative ever will.
— Collin
Enoch Marketing services: tracking audits and managed reporting
Clean UTMs are a good start, but connecting that data to booked visits and new members takes ongoing attention most gym owners don't have time for. Enoch Marketing runs tracking audits, GA4 setup, and paid-ad tagging as part of its paid advertising service for CrossFit gyms and fitness studios, then builds a campaign dashboard so you see cost per trial and ROI by channel without digging through reports yourself.

If your gym's tracking is a mess of untagged links and guesswork, check pricing and packages and book a session to get it fixed.
FAQ
What is the 3-3-3 rule in the gym?
The 3-3-3 rule is a workout pacing concept, not a marketing or tracking framework, and it varies by source and program. It has no defined connection to UTM tracking or campaign attribution, so gym owners researching marketing analytics can set it aside.
What CRM do most gyms use?
There's no single dominant CRM across the fitness industry, since gyms range from independent studios to large franchise chains with very different needs. What matters more than the specific CRM name is whether it can log the campaign source of each lead, so a UTM-tagged click can be traced through to a booked visit and, eventually, a new membership.
What is the 70/30 rule in gym?
Definitions of certain numeric "rules" vary depending on the context, whether they refer to a nutrition-to-exercise ratio, a training split, or a business rule of thumb, and none of these have an established, singular meaning tied to gym marketing or tracking. It's not a standard reporting or attribution concept worth applying to campaign analytics.
Is $40 a month a lot for a gym?
Membership pricing varies widely by gym type, location, and included amenities, so there's no universal answer to whether a given price is high or low. For marketing purposes, the more useful question is what it costs to acquire a trial visit or new member through a specific campaign, which is exactly what consistent UTM tracking is built to measure.