Reservation Widget Setup for Sabatini Domenii
Configure your reservation widget and generate custom booking links
Generate Custom Booking Links
Create trackable booking links for different marketing channels and campaigns.
- From your Facebook page, click "Edit Action Button"
Detailed instructions here - Select "Contact Us" from the options list
- Copy the URL below into the URL field
content_copy https://sabatini-domenii.ialoc.ro?experience=focus&source=facebook
- Add the link below to your Instagram page
Detailed instructions here - Custom link
content_copy https://sabatini-domenii.ialoc.ro?experience=focus&source=instagram
TikTok
- Add the link below to your TikTok page
Detailed instructions here - Custom link
content_copy https://sabatini-domenii.ialoc.ro?experience=focus&source=tiktok
Google Maps
Use the Link Generator tab to create a Google Maps booking link with source=google-card
WordPress Plugin Setup
- Search for "ialoc Widget Embed" in WordPress plugins or download here
- Activate the plugin (Settings → ialoc Widget)
- Configure the booking link using the Link Generator tab above (use custom URL option)
JavaScript Embed
<script type="text/javascript">
!function(e,t,i,n,s,o,c,a,d,r){if(!e[n]){for(;a<c.length;)s(o,c[a++]);(d=t.createElement(i)).async=1,d.src="https://ialoc.ro/assets/widget-v2/embed.min.js",(r=t.getElementsByTagName(i)[0]).parentNode.insertBefore(d,r),e[n]=o}}(window,document,"script","ialocEmbedWidget",function(e,t){e[t]=function(){e._q.push([t,arguments])}},{_q:[]},"init show hide".split(" "),0);
var widgetOptions = {
source: 'ialoc-widget-embed',
locale: 'ro',
embedMode: 'popup'
};
ialocEmbedWidget.init(widgetOptions);
</script>
<div id="ialocWidgetContainer"></div>
<script type="text/javascript">
!function(e,t,i,n,s,o,c,a,d,r){if(!e[n]){for(;a<c.length;)s(o,c[a++]);(d=t.createElement(i)).async=1,d.src="https://ialoc.ro/assets/widget-v2/embed.min.js",(r=t.getElementsByTagName(i)[0]).parentNode.insertBefore(d,r),e[n]=o}}(window,document,"script","ialocEmbedWidget",function(e,t){e[t]=function(){e._q.push([t,arguments])}},{_q:[]},"init show hide".split(" "),0);
var widgetOptions = {
source: 'ialoc-widget-embed',
locale: 'ro',
embedMode: 'inline',
venueId: '2838',
onWidgetReady: function () {
ialocEmbedWidget.show();
}
};
ialocEmbedWidget.init(widgetOptions);
</script>
Conversion Tracking Pixel
Basic Code (without tracking):
<script type="text/javascript">
!function(e,t,i,n,s,o,c,a,d,r){if(!e[n]){for(;a<c.length;)s(o,c[a++]);(d=t.createElement(i)).async=1,d.src="https://ialoc.ro/assets/widget-v2/embed.min.js",(r=t.getElementsByTagName(i)[0]).parentNode.insertBefore(d,r),e[n]=o}}(window,document,"script","ialocEmbedWidget",function(e,t){e[t]=function(){e._q.push([t,arguments])}},{_q:[]},"init show hide".split(" "),0);
var widgetOptions = {
source: 'ialoc-widget-embed',
locale: 'ro',
embedMode: 'popup'
};
ialocEmbedWidget.init(widgetOptions);
</script>
Enable Tracking via Callback:
Add a callback function to widgetOptions. This is called after reservation completion and allows you to run conversion code on your site (not in iframe).
{
"reservation_hash": "...",
"reservation_url": "...",
"reservation_thanks_url": "...",
"message": "..."
}
reservation_thanks_url does NOT redirect automatically. To redirect: window.location.href = data.reservation_thanks_url;
Complete Example with Tracking:
<script type="text/javascript">
!function(e,t,i,n,s,o,c,a,d,r){if(!e[n]){for(;a<c.length;)s(o,c[a++]);(d=t.createElement(i)).async=1,d.src="https://ialoc.ro/assets/widget-v2/embed.min.js",(r=t.getElementsByTagName(i)[0]).parentNode.insertBefore(d,r),e[n]=o}}(window,document,"script","ialocEmbedWidget",function(e,t){e[t]=function(){e._q.push([t,arguments])}},{_q:[]},"init show hide".split(" "),0);
var widgetOptions = {
source: 'ialoc-widget-embed',
locale: 'ro',
embedMode: 'popup',
callback: function(data) {
// Conversion code
fbq('track', 'Lead');
// Or: gtag('event', 'conversion', { 'send_to': 'AW-XXXX/abc123' });
// Optional: log for verification
console.log('Reservation completed:', data.reservation_hash);
console.log('Thank you URL:', data.reservation_thanks_url);
}
};
ialocEmbedWidget.init(widgetOptions);
</script>
Notes:
callbackruns only after a valid reservation is submitted- You can do tracking, redirect, or other actions from the function
- External libraries (Meta, Google Ads, etc.) must already be loaded on the page
Automatic conversion tracking (no code)
Instead of writing your own callback, you can set your
Google Ads, Facebook (Meta) Pixel and
TikTok Pixel IDs in your ialoc manager account
(Settings → Marketing & conversion tracking). When set, the widget fires the
conversion events for you on every completed reservation — you don't need the callback above.
Consent is handled automatically
These events are blocked by default and only fire after the visitor agrees to marketing cookies. The widget shows its own cookie-consent bar (with granular options and a link to the cookie policy) and collects that choice for you — no extra setup required.
Only if your site already runs its own cookie-consent tool and you want to avoid a second banner, connect it via
ialocEmbedWidget.setConsent(...) (below) — then the widget's bar is never shown.
Example — wire your consent banner:
<script type="text/javascript">
!function(e,t,i,n,s,o,c,a,d,r){if(!e[n]){for(;a<c.length;)s(o,c[a++]);(d=t.createElement(i)).async=1,d.src="https://ialoc.ro/assets/widget-v2/embed.min.js",(r=t.getElementsByTagName(i)[0]).parentNode.insertBefore(d,r),e[n]=o}}(window,document,"script","ialocEmbedWidget",function(e,t){e[t]=function(){e._q.push([t,arguments])}},{_q:[]},"init show hide setConsent".split(" "),0);
ialocEmbedWidget.init({
source: 'ialoc-widget-embed',
locale: 'ro',
embedMode: 'popup'
});
// Call this whenever the visitor accepts/declines marketing cookies in your
// consent banner (Cookiebot, OneTrust, Complianz, Usercentrics, custom, ...).
// true = visitor accepted marketing/advertising cookies -> pixels may fire
// false = declined or withdrew -> pixels stay off
function ialocUpdateConsent(marketingAccepted) {
ialocEmbedWidget.setConsent({ marketing: marketingAccepted });
}
// --- examples ---
// Cookiebot:
// window.addEventListener('CookiebotOnConsentReady', function () {
// ialocUpdateConsent(Cookiebot.consent.marketing);
// });
//
// OneTrust (group C0004 = Targeting/Advertising):
// OneTrust.OnConsentChanged(function () {
// ialocUpdateConsent(OnetrustActiveGroups.indexOf('C0004') !== -1);
// });
</script>
Note: the setConsent method name is added to the loader list
("init show hide setConsent") so it can be called even before the script finishes loading.
The automatic pixels and your own callback can both be used, but avoid double-counting the same conversion.
Already tracking conversions yourself? Turn the widget off:
If your website already fires its own conversion events (via the callback above or your own pixels),
disable the widget's automatic firing to avoid double-counting — pass conversionTracking: false in the init options:
ialocEmbedWidget.init({
source: 'ialoc-widget-embed',
embedMode: 'popup',
conversionTracking: false // widget will not fire the venue's ad pixels
});
If you don't wire consent
When ad IDs are set but the embedding site never calls setConsent, the widget shows its own
small cookie-consent bar (covering analytics & advertising) and only fires after the visitor accepts.
The moment your site calls setConsent, that bar never appears — your choice wins.