Acuity Scheduling Conversion Tracking for GA4, Google Ads & More
The built-in integration for Acuity Scheduling conversions does not work. What a bummer! But your marketing is like throwing darts blindfolded if you’re not measuring Acuity Scheduling conversions. Sending Acuity Scheduling conversion to Google Ads, Google Analytics 4, Facebook Pixel – let’s dig in.
TL;DR
Summary of important parts
👉 Built-in integrations in Acuity do not work. In Acuity the Google Analytics / GA4, Custom Conversions and Meta&Instagram Pixel are useless. The Google Analytics screenshots below are for a client of ours, a major US healthcare provider using Acuity Scheduling
Built-in Acuity Google Analytics integration is usually terrible at tracking traffic sources – where did your customers come from
Compare the same data, but using our custom Acuity conversion tracking setup
Large US clients (the ones in the screenshots) who handle thousands of Acuity bookings monthly only trust our setup because of this.
👉 Acuity conversion tracking is very complex. You probably can’t DIY. Most developers can’t get it right.
👉 Always use iFrame or Squarespace Scheduling block and embed the Acuity widget on your website. Never send visitors to book at acuityscheduling.com.
👉 A complex custom setup is always needed, using Google Tag Manager or custom javascript.
👉 We can track conversions using two methods: listen for a message from Acuity embed, or redirect to a custom thank you page. The message method is better. Redirects for conversion purposes aren’t ideal.
👉 Avoid PayPal. PayPal makes Acuity conversion tracking 1000x harder, and will often mistake PayPal as the traffic source, even though it was just a detour.
👉 Avoid the “booking button” because it will redirect away from your website for mobile users. Also, avoid other links to Acuity Scheduling and take all bookings within your website, with Acuity iFrame embedded there.
👉 Ideally, clean up existing conversion tracking tags before implementing Acuity conversions. Around 90% of my clients have a messy starting point in their conversion tracking, with several outdated scripts and tags causing problems, often even duplicate conversion events. Remove Universal Analytics, and move all tracking tags to Google Tag Manager. Check and test your conversion tracking setup with the help of Google Tag Assistant and Google Tag Assistant Legacy first.
Conversion Tracking?
So, what does Acuity Scheduling conversion tracking mean?
Here’s a simple video explaining Acuity conversion tracking to kick things off.
Tip! 🏃 The fastest & easiest solutions to Acuity conversion tracking problem
1. 💌 Get in touch and let me handle Acuity conversion tracking for you
I know Acuity conversion tracking inside-out. I’d love to implement conversion tracking for you. If that sounds good, fill out the form below 👇
There should be a form here...🤔 Something's bugging! You can get in touch old-school via email info@codeandtonic.com.
PS. If you wanna be a superhero 🦸♂️, screenshot your javascript console. Windows/Linux: Press Control + Shift + J Mac: Press Command + Option + J
2. Buy the Acuity Scheduling conversion tracker
I’ve made the perfect conversion tracking setup for Acuity. This took several years of iterating, learning more from each client project and perfecting it all into a simple product you can buy and install with a couple of clicks.
"Once you got tracking set-up, Google learned and relaunched: Spends lowered by 35% per-month and the appointments grew by 30%."
How would your business look if your ads could get 30% more bookings with lower ad costs AND you knew exactly which ads work and which are a waste of money?
If you’re running a business and want Acuity conversions handled reliably and quickly, I definitely recommend one of the options above 👆
Ok, let’s proceed.
Naming
Squarespace Scheduling VS Acuity Scheduling?
In this article, we talk about Acuity Scheduling and Squarespace Scheduling interchangeably. They’re the same product. Acuity has changed branding from ”Acuity Scheduling” to ”Squarespace Scheduling”, and apparently again back to ”Acuity Scheduling”
Acuity Conversion Tracker Plugin: The easiest way to track Acuity conversions
This will solve your problem. No question about it, this is the easiest, quickest, most reliable way to track Acuity conversions. If you need to track Acuity conversions, currently there’s nothing that gets even close. I’ve had clients say they’ve hired 2-3 freelancers to do Acuity conversion tracking. Everyone has failed. That’s because it’s such a complex setup. So skip the DIY methods, messy code, and confusing tutorials and just get a solution that works. I’ve implemented Acuity conversion tracking for dozens of companies around the world, and have poured everything I know to this product.
"Once you got tracking set-up, Google learned and relaunched: Spends lowered by 35% per-month and the appointments grew by 30%."
How would your business look if your ads could get 30% more bookings with lower ad costs AND you knew exactly which ads work and which are a waste of money?
Acuity Google Tag Manage Container: The Pro Solution when you want the best
If you're already using Google Tag Manager and want to enhance your Acuity (Squarespace) conversion tracking, my Professional Google Tag Manager container is the perfect choice. I've spent two years perfecting this solution to give you accurate and actionable data for your conversion tracking
Here's what my Professional GTM Container offers:
Prebuilt tags for Google Analytics 4 / GA4, Google Ads, Facebook Pixel
Listener tags
Data layer populated and variables for appointment type, calendar, price, currency, company name
More accurate Google Ads enhanced conversion tracking enabled automaticalle
Easy integration with your existing GTM setup in a few clicks
Choose my Professional Google Tag Manager Container for a direct, simple, but professional way to optimize your Acuity conversion tracking within your current Google Tag Manager environment.
3. One-on-One Acuity Conversion Consultation
[🎞️Video coming soon]
If you'd rather kick back and let me handle your entire Acuity conversion tracking, my one-on-one consultation service is just the ticket. I’ll personally set up Acuity (Squarespace) conversion tracking for you, ensuring tested, tailored and seamless integration with your website and analytics.
Regardless of which option you choose, my Acuity Conversion Tracker plugin will solve all the Acuity conversion tracking headaches, making the entire process simple, efficient, and hassle-free. Say goodbye to conversion tracking woes and take your digital marketing to the level it deserves with the Acuity Conversion Tracker plugin.
There’s also a redirection version, however, there are pretty major setbacks with the redirect method so I’m only advising that as a last resort. Expect to pay 3-5x the price for a conversion tracking setup that’s not quite as good. More about this later.
Built-in conversion
Acuity’s built-in conversion tracking does not work.
Why is that?
The built-in method for Acuity (Squarespace) Scheduling conversion for Google Analytics / GA4 tracking falls short primarily because of the iframe implementation. Iframes present a unique set of challenges when it comes to tracking conversions accurately.
1. Different URL Source
Since Acuity (Squarespace) Scheduling uses an iframe, the conversions are recorded as coming from a different URL. This mix-up leads to inaccurate data attribution in Google Analytics / GA4, making it difficult to understand the true performance of your marketing campaigns.
2. Inaccessible Cookies, e.g. for Google Ads
Most analytics tools, like Google Ads rely on cookies to track conversions and user interactions. However, with the iframe implementation, these cookies are not shared across the parent and the iframe. This lack of cookie-sharing renders the built-in method unable to accurately track Acuity (Squarespace) conversions from your Google Ads campaigns.
3. Missing Referral Data and UTM Codes
Iframes do not inherit the referral data or UTM parameters from the parent page. As a result, you lose crucial information about the source of your conversions for Google Analytics / GA4 especially. This lack of visibility hampers your ability to optimize campaigns effectively, as you cannot accurately attribute conversions to specific marketing channels or campaigns.
4. It’s disconnected, useless data
Visitors land on your website. We must send the conversion from your website. If we send it from Acuity (Squarespace Scheduling), for Google Analytics 4 / GA4 it’s useless. For Google Ads conversions, it doesn’t work at all.
How to do Acuity (Squarespace) Conversion Tracking Correctly: A Better Solution
[🎞️Video coming soon]
There are two main approaches to accurately track Acuity (Squarespace) conversions while overcoming the limitations of the built-in method. Both options offer a reliable way to monitor your marketing campaigns' effectiveness. The best thing about them is that they actually work.
1. Send a Message from Acuity to Your Website
This method involves communicating conversion data from the Acuity (Squarespace) iframe to your main website using JavaScript. By sending a message containing conversion information from the Acuity iframe to the parent website, you can bypass the limitations associated with iframes and accurately track conversions in your analytics.
To implement this solution, you'll need to:
Add a custom script to the Acuity iframe that sends a message containing conversion data to the parent page.
Create a listener on your main website to receive the message and extract conversion information.
Set up your analytics or tracking tools to capture the conversion data and attribute it correctly.
Example code for custom script to the Acuity (Squarespace) iframe after a successful conversion
// Custom conversion data
var conversionData = {
event: 'acuityConversion',
bookingID: '12345', // Replace with the actual booking ID
product: 'Example Product', // Replace with the actual product name
amount: 50.00 // Replace with the actual transaction amount
};
// Send the message to the parent page
window.parent.postMessage(conversionData, '*');
Add the following script to your main website to listen for the message from the Acuity iframe and process the conversion data:
// Create an event listener for 'message' events
window.addEventListener('message', function(event) {
// Check if the message is an Acuity conversion event
if (event.data.event && event.data.event === 'acuityConversion') {
// Extract conversion data from the message
var bookingID = event.data.bookingID;
var product = event.data.product;
var amount = event.data.amount;
// Process the conversion data (e.g., send to analytics, update UI, etc.)
console.log('Acuity conversion received:', bookingID, product, amount);
}
});
This example demonstrates how to send a message containing custom conversion data from the Acuity iframe to the parent website, and how to listen for and process that message on your main website.
2. Redirect to a Custom Thank You Page
[🎞️Video coming soon]
Update 23 March 2023 - Don’t use PayPal or redirects for Acuity Conversion tracking.
After years of experience in Acuity conversions. I do not recommend this method. Some people ask for it, and if you absolutely must use PayPal and cannot switch to Stripe or Square, then there is no other way but to redirect to a custom thank you page after booking, and track conversions there. However, the amount of hassle and headaches this causes is huge. The biggest drawback is that the REFERRER (website from where the customer came from) will be overwritten. An example
Ideal path (we want this)
A client clicks on a link in google to yourwebsite.com/book-a-meeting.
Now the referring website is google.com. Client came from Google.
They make a booking. Conversion is sent. Referrer is google.com
The redirection path (we don’t want this)
A client clicks on a link in Google to yourwebsite.com/book-a-meeting.
Now the referring website is google.com. The client came from Google.
They make a booking. We redirect them to acuityscheduling.com (or squarespacescheduling.com or example.as.me - another website where the booking is made)
After booking we redirect them back to yourwebsite.com/thank-you-for-booking
Now the referrer is squarespacescheduling.com because we had to make a detour there. Some clients have mentioned seeing paypal.com as a referrer as well.
In Google Analytics, a client that came from google.com now has a referrer of squarespacescheduling.com, Google Analytics / GA4 thinks they came from squarespacescheduling.com because it “referred” them to your website. But it was just a pointless side quest, overwriting the original traffic source.
The redirection method has much more moving parts, and thus it simply doesn’t behave as reliably and consistently as the simpler Acuity iframe messaging method.
Another problem is that PayPal may have its own redirects, which behave very inconsistently and might overwrite the conversion tracking setup for Acuity Redirector. An even bigger problem is that sometimes PayPal has this extra step “please wait 10 seconds to be redirected or click here” where a visitor might just close the window after payment, leading to missing conversions.
Another problem is that it requires a more expensive Acuity Powerhouse plan.
Another problem is that for redirects to work on your website, each iFrame must be updated manually and Squarespace Scheduling Block cannot be used for example.
Also, each appointment type will require an extra manual step of adding an HTML element for loading the spinner for the redirect.
Not as reliable, hard to maintain, does not gett the traffic source correctly, possible to skip the last step without conversions tracked. I don’t like it so overall, I recommend staying away from PayPal and the redirection conversion setup.
If you absolutely must use PayPal and want to only track Google Ads, It’s possible to do it. But expect to pay a hefty price for a setup that’s not nearly as good, or as reliable.
In some cases, such as when using PayPal for payments, utilizing the Booking Button, or linking directly to the Acuity (Squarespace) website instead of an iframe, a custom thank you page is needed for Acuity conversion tracking. The reason behind this is that these integrations don't redirect users back to your website after a successful conversion, making it difficult to track them.
A custom thank you page helps bridge this gap by bringing users back to your website, allowing you to send conversion data to your analytics and tracking tools. Here's how it works:
PayPal: After users complete payment through PayPal, they're redirected to Acuity (Squarespace). We then redirect again to your custom thank you page, where the conversion data is captured and sent to your tracking tools.
Booking Button: When customers use the Acuity (Squarespace) Booking Button on mobile devices, it doesn’t have the same popup modal as on desktop, and instead links to Acuity scheduling - away from your website. Again we need them redirected to your custom thank you page to record the conversion.
Acuity Website: If you're linking directly to the Acuity (Squarespace), example.as.me or acuityscheduling.com or https://squarespacescheduling.com/ instead of embedding the Acuity Scheduling widget via an iframe, users will complete their bookings on the Acuity site. A custom thank you page helps bring them back to your website to track the conversion accurately.
To set up custom thank you page redirection for Acuity conversions, you'll need to:
Get my Acuity Scheduling Redirector
Create a custom thank you page on your website that includes the necessary tracking codes or scripts. My acuity conversion tracker has a version for custom thank you page conversion tracking as well.
It’s also possible to make Paypal only redirect at https://www.paypal.com/businessmanage/preferences/website without redirection plugin. works only if you use PayPal ONLY. It requires a special Google Tag Manager tag.
PayPal listener for https://www.paypal.com/businessmanage/preferences/website
var queryString = window.location.search; console.log("queryString: " + queryString); var urlParams = new URLSearchParams(queryString); console.log("urlParams: " + urlParams); // CASE B - PAYPAL THANK YOU PAGE (no redirector plugin) // PAYPAL HAS THIS URL FORMAT END RESULT: <http://snugglesalon.com/thank-you/?paypalReturn=success&PayerID=7FAVBEWPC4QQ2&st=Completed&tx=2AA81689CP750531Y&cc=USD&amt=1.00&payer_email=barkers_halberd.0e%40icloud.com&payer_id=7FAVBEWPC4QQ2&payer_status=VERIFIED&first_name=Petri&last_name=Pottonen&txn_id=2AA81689CP750531Y&mc_currency=USD&mc_fee=0.54&mc_gross=1.00&protection_eligibility=ELIGIBLE&payment_fee=0.54&payment_gross=1.00&payment_status=Completed&payment_type=instant&handling_amount=0.00&shipping=0.00&item_name=Test%20Appointment%20%28%201%20hour%20%29&item_number=1006288425&quantity=1&txn_type=web_accept&payment_date=2023-03-19T22%3A06%3A15Z&receiver_id=UL3WY647YAH5W¬ify_version=UNVERSIONED&invoice=606cf7e7d700defbb133b890f5230d0f&verify_sign=AxY4PZnLwHn-wCsVYatnHp9kp4-PAnlMTp6prWVihFIFdzHChfKi7OIQ> // lets do the same stuff as above, but with the paypal parameters var paypalReturn = urlParams.get('paypalReturn'); // var PayerID = urlParams.get('PayerID'); //e.g. 7FAVBEWPC4QQ2 var st = urlParams.get('st'); //e.g. Completed var tx = urlParams.get('tx'); //e.g. 2AA81689CP750531Y var cc = urlParams.get('cc'); //e.g. USD var amt = urlParams.get('amt'); //e.g. 1.00 var payer_email = urlParams.get('payer_email'); //e.g. barkers_halberd.0e%40icloud.com var payer_id = urlParams.get('payer_id'); //e.g. 7FAVBEWPC4QQ2 var payer_status = urlParams.get('payer_status'); //e.g. VERIFIED var first_name = urlParams.get('first_name'); //e.g. Petri var last_name = urlParams.get('last_name'); //e.g. Pottonen var txn_id = urlParams.get('txn_id'); //e.g. 2AA81689CP750531Y var mc_currency = urlParams.get('mc_currency'); //e.g. USD var mc_fee = urlParams.get('mc_fee'); //e.g. 0.54 var mc_gross = urlParams.get('mc_gross'); //e.g. 1.00 var protection_eligibility = urlParams.get('protection_eligibility'); //e.g. ELIGIBLE var payment_fee = urlParams.get('payment_fee'); //e.g. 0.54 var payment_gross = urlParams.get('payment_gross'); //e.g. 1.00 var payment_status = urlParams.get('payment_status'); //e.g. Completed var payment_type = urlParams.get('payment_type'); //e.g. instant var handling_amount = urlParams.get('handling_amount'); //e.g. 0.00 var shipping = urlParams.get('shipping'); //e.g. 0.00 var item_name = urlParams.get('item_name'); //e.g. Test%20Appointment%20%28%201%20hour%20%29 var item_number = urlParams.get('item_number'); //e.g. 1006288425 var quantity = urlParams.get('quantity'); //e.g. 1 var txn_type = urlParams.get('txn_type'); //e.g. web_accept var payment_date = urlParams.get('payment_date'); //e.g. 2023-03-19T22%3A06%3A15Z var receiver_id = urlParams.get('receiver_id'); //e.g. UL3WY647YAH5W var notify_version = urlParams.get('notify_version'); //e.g. UNVERSIONED var invoice = urlParams.get('invoice'); //e.g. 606cf7e7d700defbb133b890f5230d0f //console log each variable console.log('paypalReturn: ' + paypalReturn); console.log('PayerID: ' + PayerID); console.log('st: ' + st); console.log('tx: ' + tx); console.log('cc: ' + cc); console.log('amt: ' + amt); console.log('payer_email: ' + payer_email); console.log('payer_id: ' + payer_id); console.log('payer_status: ' + payer_status); console.log('first_name: ' + first_name); console.log('last_name: ' + last_name); console.log('txn_id: ' + txn_id); console.log('mc_currency: ' + mc_currency); console.log('mc_fee: ' + mc_fee); console.log('mc_gross: ' + mc_gross); console.log('protection_eligibility: ' + protection_eligibility); console.log('payment_fee: ' + payment_fee); console.log('payment_gross: ' + payment_gross); console.log('payment_status: ' + payment_status); console.log('payment_type: ' + payment_type); console.log('handling_amount: ' + handling_amount); console.log('shipping: ' + shipping); console.log('item_name: ' + item_name); console.log('item_number: ' + item_number); console.log('quantity: ' + quantity); // if st equals 'Completed' then push the dataLayer if (st == 'Completed') { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ event: "purchase", 'purchaseType': 'acuityPaypal', //'conversionPrice': AcuityPrice, //'acuityCalendar': AcuityCalendar, //url decode item_name for item name 'acuityAppointmentTypeName': decodeURIComponent(item_name), //'acuityType': AcuityType, 'acuityEmail': decodeURIComponent(payer_email), ecommerce: { acuityThankYouType: "paypal-mystery-redirect", //transaction_id: AcuityId, // affiliation: AcuityCalendar, value: payment_gross, tax: 0, shipping: 0, currency: cc, coupon: "", items: [ { item_id: decodeURIComponent(item_name).replace(/\\s+/g, '-').toLowerCase(), item_name: decodeURIComponent(item_name), //affiliation: AcuityCalendar, //dont have with paypal item_brand: "", item_category: "Acuity Bookings", //location_id: "", price: payment_gross, quantity: 1 }] } }); } //end if st == 'Completed'
Acuity & Google Ads Conversion Tracking
Google Ads Conversions: Direct Method vs. Importing from Google Analytics / GA4
When it comes to tracking Acuity conversions through Google Ads, you have two options: setting up conversions directly within Google Ads or importing conversions from Google Analytics. Let's weigh the pros and cons of each method.
Direct to Google Ads Acuity Conversion Tracking
Pros:
Immediate installation and testing: You can set up the conversion tracking tag directly in Google Ads and start testing it right away.
Better synchronization: Changes made to conversions in Google Ads are immediately reflected in the platform, ensuring accurate data.
Higher accuracy: The direct method captures all conversions, even if the client came through a different channel before converting, resulting in more comprehensive data.
Easier debugging: Any issues with the conversion tracking can be identified and resolved more easily when working directly in Google Ads.
Cons:
I personally do not see any cons in this method.
Importing Acuity Conversions from Google Analytics
Pros:
Integration with Google Analytics / GA4 data: This method allows you to leverage the data already captured in Google Analytics / GA4, potentially reducing the need for additional setup work.
Cons:
Delayed data import: Importing conversions from Google Analytics / GA4 to Google Ads might take longer, resulting in a lag in data availability.
Less synchronization: Deleting or renaming a conversion in one platform does not automatically update it in the other, leading to potential discrepancies.
Limited support and knowledge: Even Google Ads support representatives may not be fully aware of how the import process works, making troubleshooting more challenging.
Considering the advantages and disadvantages of both methods, the direct Google Ads conversion tracking method is generally the superior choice. It offers faster setup and testing, better synchronization, increased accuracy, and easier debugging. While importing conversions from Google Analytics / GA4 can be a viable option, the direct method provides a more efficient and reliable solution for tracking Acuity conversions in Google Ads.
Edit: Jun 17 2023
The new method I’d prefer would actually be to use both methods. So we’d make a Google Ads conversion tag in Google Tag Manager, sending the conversion directly to Google Ads. And also, importing the Google Analytics 4 / GA4 conversion. The trick here is to make sure that the Google Tag Manager conversion would be our primary conversion, and the Google Analytics 4 / GA4 imported conversion would be a secondary conversion. That would allow us to see both, see that they’re matching and thus have a more reliable conversion tracking setup. Making the Google Analytics 4 imported conversion for Acuity bookings a secondary conversion, we will not see it in the conversion column in Google Ads, we will only see it in the All Conversions column. So it would not be used for bidding, but we can still see them. Having the numbers match, maybe not perfectly, but pretty close, is ideal.
Google Ads conversion steps
To effectively track Acuity conversions in Google Ads, it's essential to set up the process accurately. This ensures you can monitor campaign performance and optimize your marketing efforts. Here's how to configure Acuity conversion tracking in Google Ads using the user ID, labels, data layer variables, and booking email for enhanced conversion tracking.
Obtain User ID and Conversion Label from Google Ads: To track conversions, you'll first need to create a new conversion action in Google Ads. After setting it up, you'll receive a unique user ID and conversion label that you'll use for tracking.
Use Data Layer Variables: Data layer variables are used to capture relevant conversion data from your website, such as booking details, transaction amounts, or product names. By incorporating these variables in your tracking setup, you can send this information to Google Ads for more accurate conversion tracking.
Leverage Booking Email for Enhanced Conversion Tracking: Google Ads offers enhanced conversion tracking, which uses email addresses to match conversions with Google Ads users. By capturing the booking email from Acuity and sending it to Google Ads as a part of the conversion data, you can benefit from this feature and gain a more comprehensive understanding of your campaign performance.
Setting up Acuity conversion tracking in Google Ads allows you to effectively monitor and analyze the results of your marketing efforts. By using the user ID, labels, data layer variables, and booking email, you'll have access to accurate conversion data that can help you make informed decisions and optimize your campaigns.
Google Analytics 4
When tracking Acuity (Squarespace) Scheduling events & conversions in Google Analytics 4 (GA4), you can choose between sending an E-Commerce 'purchase' event or a custom event like "Acuity Appointment Booked." It's worth mentioning that, unlike Meta Pixel for example, which has a built-in default "schedule" event for tracking appointments like Acuity, Google Analytics 4 (GA4) does not offer a similar pre-defined event. This absence makes the choice between using an E-Commerce event or a custom event a little tricky in GA4, for accurately tracking Acuity Scheduling conversion events.
Here's a list of pros and cons for both options to help you decide which method is better for your specific use case.
Acuity as GA4 E-Commerce ‘purchase’ Event
Pros:
Relevance for paid bookings: If you charge money for appointments, using an E-Commerce event makes sense, as it is essentially a purchase.
Compatibility with GA4 tools: E-Commerce events work seamlessly with GA4's built-in tools for tracking e-commerce data, such as product, category, currency code, and value.
Default conversion event: The 'purchase' event is a conversion event by default in GA4, which simplifies tracking and reporting.
No custom dimensions needed: You don't need to set up custom dimensions for tracking appointment type or calendar details, as they can be mapped to existing e-commerce dimensions.
Attribution: You can add attribution to differentiate Acuity Scheduling bookings from regular e-commerce purchases, ensuring clarity in your data.
Cons:
Not suitable for free bookings: If you don't charge money for appointments, using an E-Commerce event may not be the most appropriate choice. If some are free and most cost money, I think e-commerce events make sense, and all Acuity scheduling bookings should be the same type of event.
❗ watch out for a glitch with a weird huge purchase value in the Google Analytics 4 debugger. According to this source in Stackoverflow, it’s just a glitch and the real value (check tag assistant) will be shown in the actual GA4 reports.
Also, debug view has bad days where the latency may be huge. sometimes switching to a new Chrome profile helps, although logging into all accounts again is annoying.
Acuity booking as GA4 Custom Event
Pros:
Suitable for free bookings: If you don't charge money for appointments, using a custom event is a better option.
Flexible tracking: You can create custom dimensions for calendar name, appointment type name, and other relevant data, allowing you to tailor tracking to your needs. You could for example add a custom dimension for Acuity booking date or booking time, or both
Manual conversion event setup: You can configure custom events as conversion events in GA4, giving you control over which events are considered conversions.
Cons:
Less streamlined reporting with GA4 tools: While custom events are fully compatible with GA4, using E-Commerce events can provide more advanced and accessible reporting features. E-Commerce events allow you to view purchases for a list of appointments in a similar way to traditional product sales, taking advantage of built-in, ready-to-use dashboards.
Requires manual explorations setup: You'll need to set up manual explorations in GA4 to analyze and report on custom event data.
Additional configuration needed: Sending custom events requires more configuration compared to E-Commerce events, which are automatically recognized as conversions in GA4.
By considering these pros and cons, you can determine whether to use an E-Commerce event or a custom event for Acuity conversion tracking in Google Analytics 4. The choice ultimately depends on your specific needs, whether you charge for appointments, and how much customization and flexibility you require in your tracking setup.
When considering whether to include appointment date and time in your Acuity Scheduling conversion tracking for GA4, it's essential to balance the potential benefits with data privacy concerns. On one hand, having this information can be valuable for identifying booking trends and fluctuations in Acuity conversions. On the other hand, Google does not allow personal data, such as emails, to be included in analytics. Appointment date and time may be on the borderline of personal information, as it could potentially be used to identify a person. Therefore, it's crucial to carefully consider the implications before deciding to include this data in your Squarespace scheduling conversion tracking setup.
When setting up Acuity conversion tracking for Google Analytics / GA4, it's crucial to ensure proper configuration to gain valuable insights into your campaigns. Here's how to use the data layer, Google Tag Manager (GTM) container, and event tracking to capture Acuity conversions effectively in Google Analytics.
Send the Entire Data Layer: Instead of manually using individual variables, you can send the entire data layer from your website to Google Analytics. This approach captures all relevant conversion data in one go, streamlining the process and ensuring accuracy.
Utilize Google Tag Manager Container: My custom GTM container is designed to format and send Acuity conversion data to Google Analytics / GA4 in the most efficient manner. It automatically configures the data layer and event tracking, saving you time and effort.
E-commerce Events and Custom Events: The GTM container sends Acuity conversion data as e-commerce events, which are considered conversion events by default in Google Analytics. However, if you're not charging for bookings, you can opt for custom events instead. This flexibility allows you to adapt the tracking to your specific business model.
Smart Separation of Acuity and Regular E-commerce Purchases: My setup intelligently distinguishes between Acuity conversions and regular e-commerce purchases. This separation provides a clear understanding of your conversion sources and helps you make data-driven decisions.
By implementing Acuity conversion tracking in Google Analytics using the data layer, GTM container, and event tracking, you'll gain comprehensive insights into your marketing campaigns. This approach allows you to optimize your efforts and make the most of your Acuity scheduling system.
Universal Analytics: A Dying Platform
While some clients still request Acuity conversion tracking using Universal Analytics, it's important to recognize that this platform is on its way out. Google has announced that it will sunset Universal Analytics, which means it will soon stop receiving any data and updates.
Investing time and resources into setting up conversion tracking on a platform that is nearing its end is a waste of time and money. Instead, you should focus on Google Analytics 4 (GA4), the latest version of Google Analytics.
For Acuity conversions, or anything else, don't let the sun set on your tracking efforts – make the switch to GA4 and leave Universal Analytics behind.
Acuity (Squarespace Scheduling) to Meta Pixel Conversion Tracking
Meta Pixel is likely the simplest and easiest option for Acuity (Squarespace Scheduling) conversion tracking. It only requires the event name, value, and currency, without the need for complex data layers or enhanced conversion variables. There's also no need to obtain a conversion ID or label from the Facebook Business Manager. So for example for the Acuity Conversion Tracker product, both the simple script version and the professional GTM setup work without copy-pasting anything from facebook business manager.
In the Acuity (Squarespace Scheduling) to Meta Pixel Conversion Tracking section, it's worth mentioning that Meta Pixel has a built-in 'schedule' event specifically designed for tracking appointments. This convenient feature makes it easier to set up and track conversions for your scheduling system. The 'schedule' event can also accept a value parameter, allowing you to track the total conversion value of your appointments. This information can be particularly useful when analyzing the performance of your advertising campaigns in Meta's Ad Manager.
Google Tag Manager (GTM) does feature a Facebook Pixel tag in the Community Template Gallery, which can be a convenient option for implementation. However, I’ve found this method to be less reliable compared to adding a simple script tag as a Custom HTML tag.
Setting up Acuity (Squarespace Scheduling) conversion tracking for Meta Pixel (previously known as Facebook Pixel) is crucial for understanding and optimizing your social media advertising efforts. The process shares similarities with the Google Ads and Google Analytics setups, leveraging the same triggers and data layer variables to send conversion data to Meta Pixel.
Message Method or Thank You Page Method: Whether you're using the message method (sending a message from Acuity to your website) or the thank you page method (redirecting users to a custom thank you page), both approaches work effectively for Meta Pixel conversion tracking.
Utilize Triggers and Data Layer Variables: Similar to the other platforms, you'll use triggers and data layer variables to capture relevant conversion data from your website, such as booking details and transaction amounts. This information is sent to Meta Pixel to provide accurate conversion tracking.
Integrate with Google Tag Manager (GTM): You can integrate Meta Pixel with your existing GTM setup to streamline the conversion tracking process. The custom GTM container ensures the data layer and event tracking are configured correctly, making it easy to capture Acuity conversions and send them to Meta Pixel.
By setting up Acuity conversion tracking for Meta Pixel using the message method or thank you page method, along with triggers, data layer variables, and GTM integration, you'll gain valuable insights into your social media advertising campaigns. This information helps you optimize your marketing efforts and make data-driven decisions to boost the effectiveness of your Acuity scheduling system.
Platforms
Squarespace: The Easiest Option
Squarespace makes Acuity conversion tracking incredibly straightforward, as most users utilize the built-in scheduling block, which is perfect for conversion tracking. The platform's built-in GA4 and Meta Pixel integrations simplify the process even more – you don't need a GA4 configuration or PageView tag, nor a Facebook Pixel base in Google Tag Manager.
Furthermore, Squarespace's code injection feature is user-friendly and easy to navigate for a consultant like me - there's just one place to check for GTM or other tags, and the built-in Meta Pixel and GA4 integrations, making it a breeze to set up and manage your tracking codes.
WordPress: A Middle Ground
In contrast to Squarespace, WordPress often presents a messy starting point. It's common to find old tags, inline code, or even multiple instances of Google Tag Manager installed through different plugins. Often there are faulty inline Google Ads tags tracking page views as conversions. This clutter not only makes it more difficult to clean up but can also lead to issues such as duplicate conversions even for properly installed Acuity Scheduling conversions. Squarespace's streamlined approach offers a significant advantage over more complex platforms like WordPress. However, with a careful approach and a little cleanup, WordPress can still be a viable option for Acuity conversion tracking, albeit not as seamless as Squarespace. The good old Tag Assistant Legacy (by Google) Chrome extension is an important first step to checking the status before implementing Acuity (Squarespace Scheduling) conversion tracking.
For WordPress, you can add Google Tag Manager with a plugin like GTM4WP.
Simple Acuity Conversion Tracker script can be added to a plugin like WPCode
Other “Ok” Platforms: Webflow, ClickFunnels, Shopify, etc.
For platforms like Webflow, ClickFunnels, Shopify, and other popular platforms, Acuity conversion tracking is also relatively straightforward.
For Shopify, you can just add Google Tag Manager to <head> tag in theme.liquid. In Webflow it’s also quite easy.
To add custom code to the Head tag in Webflow:
Visit Site settings > Custom code tab
Add your custom code in the Head code section
Click Save changes
Most platforms follow similar simple logic.
Wix: The Odd One Out
However, Wix presents two unique challenges for implementing Acuity conversion tracking:
Extra iframe issue: Wix wraps any custom code you add in an extra iframe. Due to the changing height of the Acuity widget based on the booking step, unsightly scrollbars often appear.
Message layering: The message sent from Acuity must travel through an additional layer in Wix, complicating the process. The messaging code added to Acuity custom conversion tracking (in integrations) needs and extra “parent”. So 3 parents instead of 2 for WIX.
(Apparently) an annoying character limit for conversion tracking scripts: When adding custom code to the
<head>
tag of every page, Wix seems to have an annoying character limit issue
[❗screenshot coming soon ].
It doesn’t say it, but after testing a shorter script works but a longer one does not. Google Tag Manager solves the issue, as it’s a relatively short code snippet for WIX, with unlimited tagging options.
Despite these obstacles, it's still possible to implement Acuity conversion tracking on Wix with some workarounds and adjustments to your setup. I’m working on a shorter hosted version for Acuity Conversion Tracker Simple Script. All my conversion tracker versions include the WIX version for the Acuity messaging javascript code.
Advanced Methods
Advanced Tracking Method: Conversion Data Directly in Acuity Bookings
Instead of just sending Acuity conversion tracking data to tools like GA4, Meta, and Google Ads, it’s possible to implement an advanced method that adds conversion information directly to the Acuity booking itself. This way, you can see the source of each client booking without needing to cross-reference with external analytics tools.
Benefits of Direct Acuity Conversion Tracking
Client Source Tracking: Easily identify the referring website, ad campaign, and landing page for each Acuity client, providing a more comprehensive understanding of your marketing efforts.
No More "Where did you hear about us?": Eliminate the need for an annoying form question in Acuity's booking process, as conversion data is captured automatically.
Lifetime Value Calculations: By combining this method with an Acuity lifetime value calculator, you can understand not just the ROI for initial bookings, but the entire lifetime value of clients brought in by various campaigns.
Avoid Ad-blocking Extensions: Since conversion data is added directly to Acuity bookings, this method bypasses ad-blocking extensions that may otherwise prevent conversion tracking. This ensures you receive accurate data for every booking without interference from browser extensions.
Automated Acuity Bookings Export to Google Sheets
To streamline the process, you can automate the export of Acuity bookings to a Google Sheet, where you'll see the source of each client without any manual steps. This setup makes it even easier to analyze the performance of your marketing efforts and make data-driven decisions.
Advanced Tracking Method #1: Tracking Acuity Booking Steps
Clients often ask if it’s possible to track the three steps in Acuity Scheduling. Up until now, I’ve said it’s not possible. However, an update in Acuity Scheduling now seems to make this possible – at least in theory.
Here’s a little video of the method. Once a client hires me to implement this, I’ll make a new one that’ll show how it actually works. This is a technical proof-of-concept demo.
Advanced Tracking Method #2: Conversion Data Directly in Acuity Bookings
Instead of just sending Acuity conversion tracking data to tools like GA4, Meta, and Google Ads, it’s possible to implement an advanced method that adds conversion information directly to the Acuity booking itself. This way, you can see the source of each client booking without needing to cross-reference with external analytics tools.
How it Works
Create hidden fields in Acuity: Add extra fields to your Acuity scheduling form and set them to be hidden from visitors. These fields will store the conversion data, such as UTM codes, referrer, and Google Ads click information.
Store UTM codes and referrer in cookies: When a visitor lands on your website, save UTM codes and the referrer URL as cookies. You can also check for Google Ads click cookies and store that information too.
Populate the hidden fields in the Acuity URL: Modify the Acuity scheduling URL to include the values from the cookies, prepopulating the hidden fields with the conversion data.
According to Acuity's documentation, you can pass parameters in the scheduling URL to pre-fill fields on the scheduling page. Here's a short code example for passing UTM parameters, referrer, etc., to the hidden fields:
// Assume you have stored UTM parameters and referrer in cookies
const utmSource = getCookie('utm_source');
const utmMedium = getCookie('utm_medium');
const utmCampaign = getCookie('utm_campaign');
const referrer = getCookie('referrer');
// Get the field IDs for your hidden fields in Acuity
const utmSourceFieldId = '123';
const utmMediumFieldId = '124';
const utmCampaignFieldId = '125';
const referrerFieldId = '126';
// Construct the Acuity URL with the pre-filled hidden fields
const acuityURL = `https://example.acuityscheduling.com/schedule.php?field:${utmSourceFieldId}=${utmSource}&field:${utmMediumFieldId}=${utmMedium}&field:${utmCampaignFieldId}=${utmCampaign}&field:${referrerFieldId}=${referrer}`;
// Use the constructed URL for your Acuity scheduling link or ideally, iframe
By using this advanced method, you can store detailed information about how each client was acquired, such as the specific campaign, source, ad, and referring website, directly within the Acuity booking. This enables a more comprehensive understanding of your marketing efforts and allows you to make data-driven decisions to improve your campaigns.
Benefits of Direct-to-Acuity Conversion Tracking
Client Source Tracking: Easily identify the referring website, ad campaign, and landing page for each Acuity client, providing a more comprehensive understanding of your marketing efforts.
No More "Where did you hear about us?": Eliminate the need for an annoying form question in Acuity's booking process, as conversion data is captured automatically.
Lifetime Value Calculations: By combining this method with an Acuity lifetime value calculator, you can understand not just the ROI for initial bookings, but the entire lifetime value of clients brought in by various campaigns.
Avoid Ad-blocking Extensions: Since conversion data is added directly to Acuity bookings, this method bypasses ad-blocking extensions that may otherwise prevent conversion tracking. This ensures you receive accurate data for every booking without interference from browser extensions.
By implementing this advanced tracking method, you gain a more granular view of your Acuity conversion data, enabling you to optimize your marketing strategies and better understand the lifetime value of your clients.
Taking It to the Highest Level: Combining with Acuity Lifetime Value Calculator
By integrating this advanced method with an Acuity lifetime value calculator, you can calculate the long-term impact of your marketing campaigns. You'll gain insights into not just the initial booking value but also the total lifetime value of clients brought in by different campaigns, enabling you to optimize your marketing budget and strategy for maximum ROI.
My recommendations for Acuity Conversion tracking
Ideally, use Squarespace Scheduling block or Embed Other (Acuity as iFrame in your website). Avoid using “Direct link”, “Booking Button” or “Booking Bar” because they require a custom thank you page – a more complex conversion tracking setup.
For Acuity payments, use Use Stripe or Square. Don’t use PayPal unless you have to.
Before setting Acuity conversion tracking, use the tag assistant legacy chrome extension to check your tags.
You should recognise each, know where they’re added, what they do
Add all your tags via google tag manager and label clearly
Document your tags in e.g. Notion or Google Sheets
Always test your tag setup using Google Tag Assistant and other debugging tools like GA4 debugview, Test Events tool in Meta Events Manager / Facebook Business Manager
Update 14. May 2024 - The most advanced Acuity conversion tracking setup
We can now take the Acuity Google Ads enhanced conversions from 90% to 100%.
Instead of doing Google Ads enhanced conversions with the Acuity email address (which we get from Acuity's custom conversion tracking), we can upload a conversion enhancement with the phone number (or even full address if you ask for it in Acuity) immediately after converting, using make.com.
This one is for serious businesses.
If you want the absolute best of the best. And then go even further. No one has an Acuity tracking setup as accurate as this one. If you want it, I’d love to let you wipe the floor with your competition. Hit me up on my contact page.
Tracking Acuity conversions, when you book for clients over the phone?
For some time I told clients this is not possible. However, I’ve found a way to do it. If a client clicks on your Google Ad, and they call you and you do the booking for them in Acuity, we of course cannot read any Google Ads cookies on their browse. But we can use back automation to send an enhanced conversion to Google Ads using the email and phone number of the client.
Google Ads can then see if someone who was logged into Google/Gmail/Youtube/Google Drive with that email, or with that phone number as their 2FA number (no full details what method Google uses for matching phone numbers).
Packages, gift certificates, and subscriptions
According to Acuity Scheduling documentation, the conversion tracking should also work for Packages, gift certificates, and subscriptions, and not just Acuity appointments. However, there’s a bug in Acuity where the custom conversion tracking integration/code snippet does not fire for packages, gift certificates, or subscriptions.
Acuity custom conversion tracking documentation clearly indicates that custom conversion tracking should work for packages, gift certificates, and subscriptions. the %type% variable should show ‘order’ for non-appointment bookings. 18 Mar 2024 — it’s still not firing unfortunately
Acuity support comment
Acuity stated this regarding conversion tracking packages, gift certificates, and subscriptions:
“We’re currently investigating an issue with tracking orders from the Acuity store pages—thanks for reporting this to us. Our Engineering teams are prioritizing a fix for this as we speak.
There are many variables that we test against before we release a fix, so we can’t provide an exact timeframe for a resolution. We can’t always follow up personally when a fix is released due to the volume of reports we receive for this issue.”
Looking forward to a fix, but as much as I love Acuity Scheduling, I’m not holding my breath to get it any time soon 🫤
This means that the same conversion tracking method will eventually work for packages, gift certificates, and subscriptions. However, we do not know when Acuity will fix it.
Workarounds for tracking packages, gift certificates, and subscriptions
At the moment the only workaround is a difficult one and would only work for Google Ads using offline conversions. It’s super complex and would go something like this
Use Google Tag Manager Conversion Linker tag to store the GCLID (Google Glick ID) from URL to a cookie.
Make a custom intake form and add a field for Google Ads GCLID
Insted of an iFrame use javascript to generate Acuity widget and fill the hidden GCLID field based on the cookie value, if it exist
Use make.com to add Acuity orders into a Google Sheet
Use Google Ads offline conversion imports to send your conversions.
Quite a hassle because Acuity is not delivering what its documentation promises! But as far as I know, it’s the only way at the moment.
Acuity vs. Calendly: Which is Better for Conversion Tracking?
When choosing a booking platform, many people find themselves deciding between Acuity and Calendly. One aspect that's often overlooked is conversion tracking—both the ease of implementation and the accuracy of the data collected. Let’s compare Acuity and Calendly to determine which is better for conversion tracking.
Comparing Acuity and Calendly for Conversion Tracking
Automatic conversion message: Calendly has the advantage of sending the conversion message from the iframe to the parent automatically, while in Acuity, this code snippet must be added manually.
Detailed conversion message: Acuity allows for a more detailed conversion message, including price paid, client email for enhanced Google Ads conversions, appointment name, and calendar name for Google Analytics. With Calendly, we only get a notification that a conversion has occurred. No details about price or what specifically was booked.
Built-in redirect: Calendly features a built-in redirect after booking, intelligently adding the conversion info to the URL. This can be used for more accurate conversion tracking. Acuity, on the other hand, requires the Acuity redirector plugin to make redirects. It’s great if using Acuity, but it’s again bit more custom coding for something that Calendly has a built-in solution for. However, the redirection method usually overrides the referrer, leading to inaccurate source attribution in Google Analytics. Big problem. For example, if a client's journey begins on google.com and they visit yourwebsite.com, the referrer is google.com. Great! However, if the journey continues to calendly.com for booking, and then redirects back to yourwebsite.com, the referrer is overwritten as calendly.com instead of the more useful original referrer, google.com. The message method doesn’t have this problem.
Information availability: Acuity provides the same information for both message and redirect methods, while Calendly offers pretty much nothing for the message method, but much more information, such as phone number and name, but only on the thank-you page, which again has the referrer problem.
Winner: Acuity (Sort of)
It's challenging to declare a clear winner, but Acuity seems to have a slight edge due to its ability to provide appointment name and calendar information, as well as decent Google Ads enhanced conversion tracking without redirects (!) that are a hassle with PII, referrer issues and potential duplicate events.
Some may argue that Calendly is superior because of its built-in redirect containing all the necessary information for highly accurate tracking.
IMO Acuity is a better choice especially if you charge money for your bookings. Although it requires the extra step of sending the conversion info manually, it provides the conversion value, and price paid, and maintains the correct referrer or Google Analytics "traffic source". Each platform has its strengths and weaknesses, but Acuity's advantages may better serve those looking to optimise their conversion tracking.
With both platforms, conversion tracking is a pain in the ass, and requires custom code so we might as well custom code the whole thing and get the best possible result, with Acuity.
Conclusion
Acuity conversion tracking can be a pretty daunting task. Many who attempt to DIY end up with incomplete or inaccurate results. In some cases, these setups may track some conversions, but usually not all, leading to a false sense of success. Most commonly the GA4 is just a glorified “booking counter” and will show all users coming direct or from acuityscheduling.com when you’d like to see traffic sources like Instagram, google, and YouTube – the actual traffic source for bookings.
So, don't leave Acuity conversion tracking to chance and luck – trust a pro to get the job done right and enjoy the peace of mind that comes with it.
Get the Acuity Conversion Tracker, or set up a 1-on-1 with me.