Many businesses struggle to properly track appointment bookings from Acuity Scheduling. If you're running ads but can't see which campaigns generate actual bookings, you're wasting money.
In this tutorial, I'll walk you through a clear, step-by-step setup so you can measure real conversions and optimize your ad performance with confidence.
Why Acuity Scheduling Tracking Is Difficult
Acuity presents unique tracking challenges:
- Embedded iframe - Bookings happen inside an iframe on your site
- Cross-domain tracking - User journey spans multiple domains
- Thank you page - Limited access to confirmation page
- No native GTM integration - Requires custom implementation
- Form complexity - Multi-step booking process
Without proper tracking, you're:
- Unable to measure which ads generate bookings
- Guessing about campaign performance
- Missing valuable conversion data
- Making wrong budget decisions
What You'll Learn
1. How Acuity Scheduling Booking Tracking Works
Understanding the flow:
Your Website → Acuity Iframe → Booking Form → Confirmation
The challenge: The confirmation happens inside Acuity's domain, not yours.
The solution: Listen for booking completion events and send them to GTM.
2. Tracking Successful Appointments Using GTM
Set up proper event tracking:
- Detect when bookings complete
- Capture booking details
- Push events to data layer
- Fire conversion tags
3. Sending Booking Events to GA4
Configure GA4 tracking:
- Create booking event
- Add event parameters
- Track booking value
- Set up conversions
4. Setting Up Google Ads Conversion Tracking
Track ads performance:
- Create conversion action
- Configure GTM tag
- Pass conversion value
- Enable enhanced conversions
5. Common Tracking Mistakes and How to Avoid Them
Don't make these errors:
- Tracking page views instead of bookings
- Missing cross-domain setup
- Not passing booking value
- Duplicate conversion counting
Step-by-Step Setup Guide
Step 1: Understanding Your Acuity Embed
Acuity offers different embed methods:
Inline Embed (iframe)
- Most common method
- Requires postMessage listener
Popup/Modal
- Opens in new window
- Easier to track thank you page
Link to Acuity
- Redirects to Acuity site
- Requires cross-domain tracking
Step 2: Set Up PostMessage Listener
Add this code to capture booking events:
window.addEventListener('message', function(event) {
if (event.origin.indexOf('acuityscheduling.com') > -1) {
if (event.data.includes('scheduling_complete')) {
dataLayer.push({
event: 'acuity_booking',
booking_status: 'complete'
});
}
}
});
Step 3: Configure GTM Variables
Create data layer variables:
dlv - booking_statusdlv - booking_value(if available)dlv - appointment_type
Step 4: Create GTM Triggers
Set up custom event trigger:
- Trigger Type: Custom Event
- Event Name: acuity_booking
- Condition: booking_status equals complete
Step 5: Create GA4 Event Tag
Configure GA4 booking event:
- Tag Type: GA4 Event
- Event Name: generate_lead (or custom)
- Parameters: value, currency
- Trigger: Acuity Booking
Step 6: Create Google Ads Conversion Tag
Set up conversion tracking:
- Tag Type: Google Ads Conversion Tracking
- Conversion ID: [from Google Ads]
- Conversion Label: [from Google Ads]
- Value: booking value
- Trigger: Acuity Booking
Step 7: Test Your Setup
Verify everything works:
- Enable GTM Preview Mode
- Visit your booking page
- Complete a test booking
- Verify event fires
- Check GA4 DebugView
- Verify in Google Ads
Code Repository
Access the code used in this tutorial:
GitHub: Acuity Form Tracking Code
Common Acuity Tracking Issues
Issue 1: Events Not Firing
Symptoms:
- No data in GA4
- Conversions not recording
Causes:
- PostMessage listener not added
- Wrong event origin check
- Code placement issue
Solution:
- Verify listener is on booking page
- Check browser console for errors
- Test with console.log first
Issue 2: Cross-Domain Tracking Problems
Symptoms:
- Sessions breaking at Acuity
- Users appearing as new
Causes:
- Cross-domain not configured
- Linker not working with iframe
Solution:
- Configure referral exclusions
- Set up cross-domain tracking
- Add linker parameters
Issue 3: Missing Booking Value
Symptoms:
- Bookings tracked but no value
- Can't calculate ROAS
Causes:
- Value not passed from Acuity
- Variable not configured
Solution:
- Use static value based on service
- Or implement custom value passing
Issue 4: Duplicate Bookings
Symptoms:
- Same booking tracked twice
- Inflated conversion count
Causes:
- Event firing multiple times
- No deduplication
Solution:
- Add booking ID as transaction ID
- Use one-time trigger
Businesses Using Acuity Scheduling
This tracking setup helps:
Service Professionals
- Consultants
- Coaches
- Therapists
- Photographers
- Personal trainers
Healthcare Providers
- Medical practices
- Dental clinics
- Chiropractors
- Mental health professionals
- Wellness practitioners
Beauty & Wellness
- Hair salons
- Spas
- Nail studios
- Massage therapists
- Estheticians
Professional Services
- Law firms
- Accountants
- Financial advisors
- Real estate agents
- Insurance agents
Education
- Tutors
- Music teachers
- Language instructors
- Training providers
Acuity vs Other Scheduling Tools
I also help with tracking for:
| Platform | Tracking Difficulty | |----------|-------------------| | Acuity Scheduling | Medium | | Calendly | Medium | | Cliniko | Hard | | Jane App | Hard | | Square Appointments | Medium | | SimplyBook.me | Medium | | Setmore | Easy |
Integration with Ad Platforms
After setting up tracking, connect to:
Google Ads
- Conversion tracking
- Smart bidding optimization
- Audience building
Meta (Facebook) Ads
- Lead event tracking
- Conversion API
- Custom audiences
LinkedIn Ads
- Conversion tracking
- Lead gen forms comparison
Results After Proper Setup
Clients typically see:
- Actual booking data in analytics
- Clear ROI on advertising spend
- Better ad optimization from real conversions
- Confident scaling of successful campaigns
- Reduced wasted spend on non-converting ads
Advanced Acuity Tracking
Track Booking Value
Pass appointment value for ROAS:
dataLayer.push({
event: 'acuity_booking',
booking_status: 'complete',
booking_value: 150,
currency: 'USD',
appointment_type: 'Consultation'
});
Track Appointment Types
Segment by service:
- Initial consultations
- Follow-up appointments
- Premium services
- Package bookings
Enhanced Conversions
Improve match rates:
- Email address (hashed)
- Phone number (hashed)
- Customer name
Need Help With Acuity Tracking?
If you're struggling with:
- Bookings not tracking
- Missing conversion data
- Cross-domain issues
- Ad platforms not optimizing
I can fix it for you.
My services:
- Acuity tracking setup
- GA4 configuration
- Google Ads conversion tracking
- Meta Pixel implementation
- GTM configuration
- Testing and verification
Contact me or message me on WhatsApp for help with your Acuity tracking.
Free Debugging Tool
Debug your tracking with my Chrome extension:
Insighter Debugger - See what's firing on your booking pages:
Stop guessing about your ad performance. Track Acuity bookings properly and optimize with confidence.
Keywords: Acuity Scheduling tracking, Acuity GTM, Acuity GA4, Acuity conversion tracking, Acuity Google Ads, track Acuity bookings, Acuity Scheduling GTM setup, appointment tracking, booking conversion tracking, Acuity analytics