You can also (optionally) use UTM Parameters to your Online Bookings URL for additional conversion tracking and attribution.
Before you start...
- UTM Parameters only work with the New Online Bookings system, and not the Legacy Online Bookings system.
- Some browsers, such as Brave, strip UTM Parameters by default, which can prevent conversion tracking and attribution. Be sure to keep this in mind when reviewing your statistics and reporting.
UTM Parameters received during the first step of an Online Booking will be visible in the Online Bookings Report.
Simply append your UTM Parameters to the Online Bookings URL generated in your Online Bookings settings.
For example:
https://book.nookal.com/bookings/book/123-abc-456-def?utm_source=google
&utm_medium=cpc&utm_campaign=new_year_sale&utm_id=abc.123
&utm_term=the+best+clinic&utm_content=best_clinic_v2
Hot Tips
If you want to use UTM Parameters, don't forget:
1. To make sure your final URL contains valid characters before publishing.
2. To check out Google's Campaign URL Builder for more information.
3. UTM Parameters passed through your Online Bookings URL are not stored or recorded beyond the visitor's current session. Each session must begin with UTM Parameters (and result in a booking being made) for them to be recorded.
The following parameters are collected (all are optional):
| Parameter | Example | Description |
| utm_source | Identifies the source of a referral. | |
| utm_medium | cpc | Identifies the medium of a referral. |
| utm_id | abc.123 | Identifies a specific campaign. |
| utm_campaign | new_year_sale | Identifies a specific segment of a campaign. |
| utm_term | the+best+clinic | Identifies the terms/keywords of a referral. |
| utm_content | best_clinic_v2 | Identifies a content variation of a referral. |
🤝 Passing UTM Parameters
If your visitor's journey starts on an advertising platform, and goes via your website or a landing page before starting an Online Bookings process, then you may need to collect the UTM Parameters on that website or page (via JavaScript or a server-side language), and append them to each Online Bookings link on your website.
Below is some JavaScript code that you could include on your website to collect UTM parameters from the current URL and append them to any Nookal Online bookings link.
Please note: We're sharing this JavaScript snippet as a example to help get you started. We're unable to offer technical support for this code. While it should work in most cases, every setup is different, and we can't promise it'll be perfect in all situations. Please test it thoroughly and adjust it as needed for your environment. Use it at your own discretion.
<script>
/* Disclaimer: This code is provided "as is", without warranty of any kind, either express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. Nookal shall not be held liable for any damages arising from the use of, or inability to use, this code. You are solely responsible for reviewing, testing, and implementing the code in your environment. Please note that Nookal are unable to provide technical support for this code. */
//When the page is ready...
document.addEventListener("DOMContentLoaded", function(){
//Define a segment of the URL to match (Note: "book.nookal.com" will match the domain from any region)...
const urlMatch = "book.nookal.com";
//Get all the existing URL parameters...
const urlParams = new URLSearchParams(window.location.search);
//Define a new set of UTM parameters...
const utmParams = {};
//For each UTM parameter...
["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content"].forEach(key => {
//If that parameter exists in the current URL...
if (urlParams.has(key)) {
//Add it to the list of UTM parameters...
utmParams[key] = urlParams.get(key);
}
});
//If there were no UTM parameters found...
if (Object.keys(utmParams).length === 0) {
//Stop this process here...
return;
}
//For each anchor tag with a href attribute on the page...
document.querySelectorAll("a[href]").forEach(link => {
//If the href contains the URL segment we've defined...
if (link.href.includes(urlMatch)) {
//Define a new URL starting with the href ...
const linkUrl = new URL(link.href);
//For each UTM parameter...
for (const [key, value] of Object.entries(utmParams)) {
//If that UTM parameter isn't already in the href URL...
if (!linkUrl.searchParams.has(key)) {
//Add the UTM parameter to the href URL...
linkUrl.searchParams.set(key, value);
}
}
//Update the anchor tag's href attribute with the new URL containing UTM parameters...
link.href = linkUrl.toString();
}
});
});
</script>