Skip to main content

Understand UTM Codes, Google Analytics & Ad Tracking

How UTM codes, click IDs, GA4, and the Google Ads & Meta Ads integrations work together to show where your leads come from

Written by Molly Farber

Want to know which ads, emails, and social posts actually bring families through your door? Playground gives you three tools for this: UTM codes, the ads integration, and events you can send to Google Analytics. Each one answers a different question. This article explains what every term means, how each tool works, and how to set each one up so your attribution data is accurate from day one.


How It All Fits Together

These three tools are easy to mix up because they all involve "tracking." Here's the simplest way to think about them:

What question it answers

Where you set it up

Where you see the results

UTM codes

"Which link, campaign, or channel did this lead come from?"

Lead properties in CRM Settings, Facebook/Google ad settings, plus any other links you manage

On each lead, and in CRM filters & reports

Ads integration (Google Ads & Meta Ads)

"How much am I spending on ads, and which campaigns are turning into leads and enrollments?"

CRM Settings > Connections > Ad manager

The Ads tab in your CRM, and inside Google Ads / Meta Ads Manager

Google Analytics 4 (GA4)

"How are families using my website, and how many of them submit a form?"

Your own website and GA4 account (with help from your web developer)

Your GA4 account

💡 You don't need all three. Most schools start with UTM codes because they're free and quick to set up. If you run paid ads on Google or Meta, add the ads integration next.


Key Terms

Use this table as a quick reference whenever you run into an unfamiliar term.

UTM code

A short tag added to the end of a link that labels where the click came from. Example:

?utm_source=facebook&utm_campaign=fall_enrollment

utm_source

The site or platform that sent the visitor. Examples: facebook, google, newsletter

utm_medium

The type of marketing. Examples: paid_social, email, qr_code, flyer

utm_campaign

The name of the specific promotion. Examples: summer_camp_2026, open_house

utm_content / utm_term

Optional extra detail, like which ad version or keyword a family clicked

Click ID

An ID that Google (gclid) or Meta (fbclid) adds to a link automatically when someone clicks an ad. Playground saves it behind the scenes so the ads integration can match your leads back to the ad. You won't see click IDs on the lead.

Tracking script

A one-line code snippet you add to your website. It passes UTM codes and click IDs from your web page into an embedded Playground form.

Conversion

An action you count as a success, like a family scheduling a tour or enrolling.

Conversion action (Google) / Conversion event (Meta)

The name the ad platform uses for a conversion. You create these in Google Ads or Meta Events Manager.

Stage conversion mapping

A rule in Playground that says "when a lead moves to this stage, report a conversion to the ad platform."

Pixel

Meta's tracking tool. Playground sends conversions to your Meta pixel.

GA4

Google Analytics 4, Google's free website analytics tool. It's separate from Google Ads.


Track Leads with UTM Codes

UTM codes tell you which link a family clicked before they submitted your form. Playground captures UTM codes on two types of pages:

  • CRM forms, whether families open the Playground link or fill out a form embedded on your website

  • Meeting booking pages, like tour scheduling pages

  • Pages on your website that included embedded forms or meeting schedulers

🚨 UTM codes are only saved when a family arrives through a link that contains them. Leads you add manually, import, create from calls or texts, or receive through other integrations won't have UTM data.

Step 1: Create UTM Lead Properties

Playground only saves a UTM code if you have a lead property with the same name. Set these up once before you share any links.

  1. From your CRM dashboard, navigate to CRM Settings and click the Properties tab.

  2. Click Add property in the Lead properties section.

  3. Create a text property for each UTM code you want to track, named exactly: a. utm_source b. utm_medium c. utm_campaign d. utm_content (optional) e. utm_term (optional)

  4. Click Save.

🚨 Property names must match the UTM code exactly and must be all lowercase. utm_source works. UTM_Source, Utm_source, and utm source don't. If the names don't match, the UTM code won't appear on the lead.

💡 You can create your own custom UTM codes too, as long as they start with utm_. For example, a utm_location property captures ?utm_location=downtown from your links.

Step 2: Build Your UTM Link

Playground has a built-in UTM link builder, so you don't have to write links by hand.

  1. From your CRM dashboard, navigate to the Forms tab (or your meeting types), click the three dots next to the form, and click Share form (or Share booking page).

  2. Click Add UTM tracking. You'll see a box for each utm_ property you created in Step 1.

  3. Fill in a value for each box. Example: utm_source = facebook, utm_medium = paid_social, utm_campaign = fall_enrollment

  4. Copy the link or download the QR code. The UTM codes are already added.

  5. Use that link in your ad, email, social post, flyer, or website button.

💡 The values you type in Add UTM tracking aren't saved to the form. They only apply to the link or QR code you copy at that moment. We recommend keeping a simple spreadsheet of your campaign links so your team reuses the same values every time.

Step 3: Add the Tracking Script to Pages with an Embedded Form

Skip this step if you only share the Playground form link directly.

If your form or booking page is embedded on your website, your UTM link should point to your website page (example: https://yourschool.com/enroll?utm_source=facebook). The tracking script then passes those UTM codes from your web page into the embedded form. Without the script, the embedded form can't see the UTM codes.

  1. From your CRM dashboard, navigate to the Forms tab, click the three dots next to the form, and click Embed form.

  2. Click Copy tracking script. The script looks like this: <script src="https://app.tryplayground.com/embed/utm.js" defer></script>

  3. Paste the script on every page of your website that has an embedded Playground form or booking page:

    1. Squarespace: open the page, go to Settings > Advanced > Code Injection, paste the script in the Footer field, and click Save.

    2. Wix: go to Settings > Custom Code, click + Add Custom Code, paste the script, set placement to Body - end, and choose the page with your embed.

    3. WordPress: use a plugin like Insert Headers and Footers and paste the script in that page's footer.

    4. Custom HTML: paste the script just before the closing </body> tag.

💡 The Tracking script section only appears in the Embed form window after you've created at least one utm_ lead property (Step 1).x

🚨 If you embedded your form on your website before May 2026, copy the embed code again from the Embed form window and replace the old one on your website. Older embed codes don't support UTM tracking.

Step 4: View UTM Data on Your Leads

When a family submits the form, the UTM codes are saved to the matching lead properties automatically. You can:

  • See them on the individual lead's profile

  • Filter and sort your CRM lead lists by utm_source, utm_medium, or utm_campaign

  • Build reports in Insights to compare which sources and campaigns bring in the most leads and enrollments

  • Use them as conditions in automations. For example, send a follow-up email that mentions your summer camp offer when utm_campaign = summer_camp.

💡 UTM data isn't added to leads retroactively. Leads that came in before you created the UTM properties won't have UTM values.


Integrate Ad Accounts in Playground [beta]

The ads integration connects your Google Ads and Meta Ads (Facebook & Instagram) accounts to Playground. It does two things:

  1. Reports conversions back to Google and Meta. When a lead reaches a stage you choose (like Tour Scheduled or Enrolled), Playground tells the ad platform. Google and Meta use this to show which campaigns drive real results and to find more families like the ones who enroll.

  2. Shows your ad performance in Playground. You can see ad spend, impressions, and clicks next to your leads in the Ads tab.

💡 The ads integration is in beta and isn't turned on by default. Reach out to your account manager or [email protected] to enable it for your CRM.

Before You Begin

Make sure you have:

  1. Admin access to your Google Ads account and/or your Meta Business account and ad account

  2. For Google Ads: at least one enabled conversion action with the type Import from clicks (sometimes called an offline conversion). Create it in Google Ads under Goals > Conversions before connecting.

  3. For Meta Ads: a Meta pixel connected to your ad account

Connect Google Ads or Meta Ads

  1. From your CRM dashboard, navigate to CRM Settings and click the Connections tab.

  2. In the Ad manager section, click Add.

  3. In the Connect ad platform window, choose Google Ads or Meta Ads and click Connect.

  4. Sign in with the Google or Facebook account that manages your ads and approve the permissions.

  5. On the Select accounts step, choose the ad accounts you want to connect.

  6. On the Configure tracking step, set up your stage conversion mappings (see below), then click Finish.

Map Your Lead Stages to Conversions

Stage conversion mappings tell Playground which moments in your admissions pipeline count as a win.

  1. On the Configure tracking step (or by clicking the three dots on a connected account and clicking Edit), click Add mapping.

  2. Choose a Stage from your CRM pipeline.

  3. Choose what to send: a. Google Ads: choose a Conversion action. The Conversion label field is optional. Add it only if you also want Google to count a conversion the moment a family submits your form. b. Meta Ads: choose your Pixel and a Conversion event, like Lead, Schedule, or Purchase.

  4. Repeat for each stage you want to track, then click Save.

🚨 Conversions are reported when a lead moves into a mapped stage. A lead that's created directly in a mapped stage isn't reported. For example, if your form puts new leads in New Lead, map later stages like Tour Scheduled and Enrolled instead of New Lead.

💡 Each lead is reported only once per stage, so moving a lead back and forth won't double-count your conversions.

💡 For Meta, Playground includes each lead's expected annual tuition as the conversion value, so Meta can prioritize families most likely to enroll.

💡 If you choose a Custom Meta event, create a matching Custom Conversion in Meta Events Manager. Otherwise it won't appear there.

View Ad Performance in the Ads Tab

From your CRM dashboard, click Ads in the menu to see three views:

Overview

Impressions, clicks, leads, closed-won leads, and amount spent, plus a campaign table. Filter by date range and ad network.

Analyze

Total ad spend, ad spend over time, and which campaigns have high or low cost per click.

Events

Every stage conversion mapping you've set up, which ad account it sends to, and whether it's Active.

🚨 The Leads and Closed won numbers on the Overview page include all CRM leads created in that date range, not just leads from ads. To see which specific campaigns drove conversions, check the conversion columns in Google Ads or Meta Ads Manager.

💡 Ad metrics can be delayed up to 48 hours. This is normal and comes from Google and Meta, not Playground.


Track Form Submissions in Google Analytics 4

GA4 measures what visitors do on your website. Playground doesn't have a GA4 setting where you enter a measurement ID. Instead, when a form or booking page is embedded on your website, it sends a signal to your web page every time a family submits. Your web developer or marketing agency can use that signal to record a GA4 event.

Share the following with the person who manages your website or Google Tag Manager:

playground:lead_form_submitted

Sent when a family submits an embedded form. Includes the form ID and the stage the lead was created in.

playground:event_booked

Sent when a family books a meeting on an embedded booking page. Includes the meeting name, time, and time zone.

Your developer can listen for these messages on the page and send them to GA4 as an event, like generate_lead, then mark that event as a Key event in GA4.

In order for events to be tracked on your webpages, the analytics tracking script must be added to the webpages where embedded forms and meeting schedulers are hosted.

  1. From your CRM dashboard, navigate to the Forms tab, click the three dots next to the form, and click Embed form.

  2. Click the Advanced dropdown and then click Copy analytics script. The script looks like this:

  3. Paste the script on every page of your website that has an embedded Playground form or booking page:

💡 This only works for forms embedded on your own website. When families open the Playground form link directly, the form isn't on your website, so your GA4 won't see the submission. Use UTM codes to track those leads.

💡 If you only want to know how many people view, start, and submit your form, you don't need GA4. Playground tracks form views, starts, and submissions for every form automatically.


FAQ

Here are the most common questions from schools setting up attribution.

Where does my UTM link go? On the form or on my website?

  1. If families fill out your form on your website (embedded), add the UTM codes to your website page's link, and add the tracking script to that page. Example: https://yourschool.com/enroll?utm_source=google&utm_medium=paid_search

  2. If families use the Playground form link directly, add the UTM codes to the Playground link. The Add UTM tracking button in the Share form window does this for you.

  3. Put the full link, UTM codes included, anywhere families will click it: your ad, email, social post, or QR code.

I set everything up, but UTM values aren't showing on my leads. What should I check?

  1. Confirm your lead property names match the UTM codes exactly and are all lowercase (utm_source, not UTM Source).

  2. Confirm the family clicked a link that actually contains UTM codes. Leads created manually, through imports, or from families who typed your web address directly won't have UTM data.

  3. If your form is embedded, confirm the tracking script is on that exact page and that you're using an embed code copied after May 2026.

  4. Check whether the family opened the link in one browser tab and submitted in a different tab or on a different day. UTM codes are remembered for the browser tab where the family arrived.

  5. If a family clicks your UTM link, lands on your homepage, and then clicks a regular link to your enrollment page, the UTM codes don't carry over. Point your UTM links straight to the page with your form.

What happens if a family who's already a lead submits a form again?

  1. Playground matches the submission to the existing lead by email or phone and merges them.

  2. The UTM values from the newest submission replace the old ones. This means your UTM properties show the most recent campaign that brought the family back.

  3. The lead's stage doesn't change.

Do I have to retype my UTM values every time I make a QR code?

  1. Yes. The values in Add UTM tracking only apply to the link or QR code you're creating right now. They aren't saved to the form.

  2. Once you've downloaded a QR code or copied a link, it keeps its UTM codes permanently, so you can reuse it as often as you like.

  3. We recommend keeping a shared list of your campaign links so everyone uses the same values.

Does Playground send form submissions to Google Analytics or Google Tag Manager automatically?

  1. No. Playground doesn't have a built-in GA4 connection.

  2. Forms embedded on your website send a playground:lead_form_submitted message to your page when a family submits. Your web developer can pass this to GA4 or Google Tag Manager. See Track Form Submissions in Google Analytics 4 above.

What's the difference between UTM codes and the ads integration? Do I need both?

  1. UTM codes label your links so you can see the source of each lead inside Playground. They work for any channel: ads, email, flyers, social posts.

  2. The ads integration sends conversions back to Google and Meta and pulls your ad spend into Playground. It only works for Google Ads and Meta Ads.

  3. If you run paid ads, we recommend both. Put UTM codes on your ad links so you can see the campaign on each lead, and connect your ad accounts so Google and Meta can optimize toward families who actually enroll.

Why don't the lead counts in the Ads tab match Google Ads or Meta Ads Manager?

  1. The Leads and Closed won numbers in the Ads tab count every CRM lead in the date range, including leads from other sources.

  2. Google and Meta only count conversions they can match to someone who clicked or saw an ad.

  3. Ad platforms can take up to 48 hours to report, and they may credit a conversion to the date of the ad click instead of the date the lead changed stages.

  4. Leads created directly in a mapped stage aren't reported as conversions. Only leads that move into a mapped stage are reported.

My Google conversion action doesn't show up in the list. What's wrong?

  1. In Google Ads, go to Goals > Conversions and confirm the conversion action is Enabled.

  2. Confirm its type is Import from clicks (an offline conversion). Website and app conversion actions won't appear in Playground.

  3. Return to Playground, click the three dots on your Google Ads connection, and click Edit to reload the list.

My Meta Ads data stopped loading. How do I fix it?

  1. Meta requires you to sign in again periodically, about every 60 days. When this happens, you'll see a message that some ad data couldn't be loaded.

  2. From your CRM dashboard, navigate to CRM Settings > Connections.

  3. Find your Meta Ads connection and reconnect it by signing in with Facebook again.

  4. Navigate to Ads > Events and confirm your mappings show as Active.

Can I track leads that come from Facebook Lead Ads (Instant Forms)?

  1. Yes. Facebook Lead Ads don't use your Playground form, so they don't carry UTM codes automatically.

  2. Use the Zapier integration to send those leads into Playground. You can set your UTM properties directly in the Zap. For example, set "utm_source": "facebook" in the lead data. See CRM Integrations for setup steps.

Did this answer your question?