Your ads fill CourseStorm classes. Your ad reports can't see it.
Students click your ad, land on your site, then register on your yourname.coursestorm.com catalog, and Google Ads and Meta lose them at the hop. CourseStorm's only built-in tracking setting is a GA4 Measurement ID, with no documented place for a Meta Pixel or a Google Ads purchase tag. We send paid registrations, with the real class fee, from your CourseStorm records back to each ad platform.
Free30 minutesNo obligation
CourseStorm · what breaks
What goes wrong when CourseStorm takes registrations
- 01
"Meta says zero signups, but the pottery class sold out"
Registration finishes on your CourseStorm catalog, where we found no documented Pixel field, so Meta optimizes toward clicks and page views instead of paid seats.
- 02
Google Ads credits the wrong campaign, or none
If your Google Ads conversions come from GA4 and cross-domain measurement isn't set, the jump from your site to the coursestorm.com catalog starts a fresh session, and the ad that paid for the click loses the credit to your own website.
- 03
Waitlist joins counted like enrollments
A full CPR class swaps Register for Add to Waitlist. Those students fill out the form but pay nothing, and if they're counted as conversions, bidding learns from demand you couldn't serve.
- 04
No idea what a student is worth
A one-night workshop and a semester-long ESL course look the same to your ad accounts, so you can't tell which campaigns earn back their spend.
CourseStorm · the fix
What changes after we fix it — CourseStorm
Every paid registration reaches your ad accounts
Sent from CourseStorm's registration record through a first-party server container, so a blocked script or domain hop can't drop it.
Budget follows the courses that fill
Each conversion carries the class name and the amount charged, so you can see whether the coding bootcamp ads or the weekend art ads pay for themselves.
One clean story in GA4
Your site and your catalog share one Measurement ID and cross-domain measurement, so a student's path from ad to checkout stays one session.
CourseStorm · architecture
What CourseStorm actually lets you hook into
Taken from CourseStorm's help center and integration docs. Anything we couldn't find documented is listed as a check, not a promise.
- 1
GA4 Measurement ID field
Under Account > Settings > General. CourseStorm says it places the Google tag on your catalog and checkout pages, and documents cross-domain measurement with your main site.
- 2
Zapier triggers
Four documented: New Registration, Updated Registration, New Student and Updated Student. These are the cleanest route to server-side conversions.
- 3
REST API
Access to classes, students, registrations, categories, locations and instructors through an API user. CourseStorm support sets up the first one; after that the account owner can add more.
- 4
Embeds on your own site
A simple list widget, JavaScript course widgets, and a WordPress plugin that syncs your catalog hourly. Where each finishes checkout gets tested on your site.
- 5
Meta Pixel, Google Ads tag, GTM
We found no documented setting for any of them in CourseStorm's help center. We confirm with your account before planning around one.
CourseStorm · diagnose
Where CourseStorm tracking breaks, in the order we check
Most broken CourseStorm setups lose the student at the catalog domain, so that's where we start.
- 01
Does the catalog URL carry a _gl= parameter?
CourseStorm's own test for cross-domain measurement. No parameter means GA4 splits every student into two visits.
- 02
Is the same Measurement ID on both sites?
A different ID in the CourseStorm settings sends checkout data to a property nobody reports on.
- 03
Does the ad click survive to the registration?
We book a test seat from a tagged URL and check what CourseStorm stored with it.
- 04
Are waitlist and paid registrations separated?
Waitlist entries aren't registrations until converted, so they need their own event.
- 05
Do refunds and payment plans change the value?
Partial refunds and installment charges, checked against what each platform was told.
CourseStorm · prove
The QA evidence — CourseStorm
Run on a real class in your live catalog, through the same link or widget your ads send people to.
Source of truth
CourseStorm registrations and transactions export — paid registrations by date, class and amount charged, with refunds and waitlist entries listed separately
- One test registration from an ad-tagged URL, confirmed in CourseStorm and in each ad platform.
- Exactly one Google Ads and one Meta conversion per CourseStorm registration, even with the checkout's GA4 tag and the Zapier feed both running.
- The value on the conversion matches the amount charged after any promo code.
- A waitlist join confirmed absent from every conversion goal.
- A refund checked against what each platform still shows.
- Paid registrations matched one by one across a fully closed window.
- Repeated 30 days later and after any widget or plugin change.
CourseStorm · free audit
What we check in the free audit
- Does the catalog URL carry a _gl= parameter?
- Is the same Measurement ID on both sites?
- Does the ad click survive to the registration?
- Are waitlist and paid registrations separated?
- Do refunds and payment plans change the value?
Checked against
CourseStorm registrations and transactions export — paid registrations by date, class and amount charged, with refunds and waitlist entries listed separately
Free30 minutesNo obligation
CourseStorm · when not to buy
When you don't need this on CourseStorm
Some class programs don't need a rebuild, and we'll say so on the call.
- If you don't run paid ads and most students come from your email list, GA4 with cross-domain measurement is enough.
- If your classes sell out from repeat students before any ad runs, ad attribution won't change a decision.
- If you only want to know which pages drive registrations, entering your GA4 ID and turning on cross-domain measurement is a short job you can do yourself.
- If most registrations are taken by staff over the phone and paid by check, fix that intake first, because nothing online sees it.
CourseStorm · what we deliver
The event map on CourseStorm
Class page viewed
On your site, the WordPress plugin page or the catalog, with the class and category attached.
Registration started
A remarketing signal only, never a conversion. CourseStorm already emails a reminder when a registration sits unfinished for 24 hours (unless the Cart feature is on), so your ads don't have to chase every one.
Waitlist joined
Logged as demand per class and kept out of every conversion goal.
Registration paid
The main conversion, valued at the class fee after any promo code rather than just a payment-plan deposit, and sent once with a shared event ID.
Payment plan installments
CourseStorm charges installments automatically on Fridays. We tie those charges to the original registration so they never look like new students, after confirming whether they surface through Updated Registration or the API.
Refund or cancellation
Watched separately, since CourseStorm lets you refund without canceling, then corrected wherever each platform allows it.
Written guarantee
95%+ tracking accuracy
Measured against CourseStorm registrations and transactions export — paid registrations by date, class and amount charged, with refunds and waitlist entries listed separately. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
CourseStorm questions, answered
CourseStorm's help center documents a GA4 field but no Pixel field. The reliable route is sending paid registrations to Meta's Conversions API from CourseStorm's registration data, through Zapier or the API.
Not directly; there's no documented Google Ads tag setting. You can import GA4 conversions into Google Ads, or send paid registrations server-side, which also carries the real class fee.
Your catalog lives on a different domain, so without cross-domain measurement GA4 starts a new session at checkout. Use the same Measurement ID on both sites and add both domains in GA4's tag settings.
No. CourseStorm doesn't treat a waitlist entry as a registration and takes no payment, so counting it teaches your ads to find people you can't seat.
It keeps students on your site longer, and CourseStorm describes an integrated checkout option. Where payment actually runs on your setup decides what your tags see, so we test it on a live class.
Usually, yes. CourseStorm lets you refund without canceling, so we watch registration updates and correct values wherever each platform allows it.
More on CourseStorm
- Enhanced ConversionsEnhanced Conversions enrich the conversions that already fire. First we make sur…
- Meta CAPIA one-click CAPI integration sends thin events. That's why your Event Match Qual…
- Cross-Domain TrackingYour checkout provider is the best performing traffic source in your GA4 account…
RELATED GUIDES
Booking tools beside CourseStorm, and what their bookings feed
- CleanCloudCleanCloud pickup orders not showing in Google Ads? Here's the fix.
- Experity (Clockwise.MD)Your Clockwise.MD queue is full. Google Ads says almost nobody checked in.
- DocASAPPatients book through DocASAP every day. Google Ads still can't tell which campaigns filled the schedule.
- RelatientRelatient conversion tracking: find out which ads actually fill your Dash schedule
- ISNPaying for clicks but can't tell which ones book ISN inspections?
- MoovsRiders book limo and charter trips in Moovs. Your ads can't see which ones.
Free · 30 min
Find out which ads actually fill your classes
Free30 minutesNo obligation
