(function () { var COOKIE = 'rsm_attr'; // first-party, this domain only var DAYS = 90; // matches the usual Google Ads attribution window var MAX = 300; // per-value cap; cookies ride on every request, keep it small try { var qs = new URLSearchParams(location.search); var clip = function (v) { return v == null ? '' : String(v).slice(0, MAX); }; // A "campaign touch" = any paid/tagged arrival. Plain organic navigation must not overwrite. var CLICK = ['gclid', 'gbraid', 'wbraid', 'fbclid', 'msclkid', 'ttclid']; var UTM = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']; // Google Ads ValueTrack, delivered via a Final URL suffix on standard Search campaigns. // `keyword` + `matchtype` are the useful pair: which search actually produced a booking. var VT = ['keyword', 'matchtype', 'device', 'network', 'campaignid', 'adgroupid', 'placement']; var touch = {}; CLICK.concat(UTM, VT).forEach(function (k) { if (qs.get(k)) touch[k] = clip(qs.get(k)); }); // ValueTrack alone doesn't mark a campaign touch — a stray ?device= shouldn't overwrite a real // ad click's first-touch record. Only a click id or a utm_* counts. var isCampaignTouch = CLICK.concat(UTM).some(function (k) { return !!touch[k]; }); // Referrer is only meaningful when it's off-site. var ref = ''; try { if (document.referrer && new URL(document.referrer).hostname !== location.hostname) { ref = clip(document.referrer); } } catch (e) {} var existing = null; try { var m = document.cookie.match(new RegExp('(?:^|; )' + COOKIE + '=([^;]*)')); if (m) existing = JSON.parse(decodeURIComponent(m[1])); } catch (e) { existing = null; } // Nothing new to record and we already have a record ? leave it alone. if (!isCampaignTouch && !ref && existing) return; var now = new Date().toISOString(); var landing = clip(location.pathname + location.search); var data = existing || {}; if (!data.ft) { // FIRST touch — write once, never overwrite data.ft = { t: now, ref: ref, landing: landing }; CLICK.concat(UTM, VT).forEach(function (k) { if (touch[k]) data.ft[k] = touch[k]; }); } if (isCampaignTouch || !data.lt) { // LAST touch — refresh on each new campaign hit data.lt = { t: now, ref: ref, landing: landing }; CLICK.concat(UTM, VT).forEach(function (k) { if (touch[k]) data.lt[k] = touch[k]; }); } var val = encodeURIComponent(JSON.stringify(data)); if (val.length > 3500) return; // never risk blowing the 4KB cookie limit document.cookie = COOKIE + '=' + val + ';path=/;max-age=' + (DAYS * 86400) + ';SameSite=Lax' + (location.protocol === 'https:' ? ';Secure' : ''); } catch (e) { /* attribution is never worth breaking a page for */ } })();

DRIVING LESSONS ENOGGERA RESIDENTS LOVE

SAVE MONEY AND PASS YOUR TEST FAST IN ENOGGERA WITH RAC SCHOOL OF MOTORING

Do you get embarrassed every time you have to get dropped off and picked up by Mum or Dad? Do you want to be able to skip the bus or train and save heaps of time by driving to Albany Creek college or to work? Well all of this goes away when you hold a full drivers licence.

I bet your so excited you could burst but in all seriousness, learning to drive can not be taken lightly. We see it day in and day out. Young, inexperienced drivers dying on our Queensland and Enoggera roads in accidents that are avoidable. And we don't want you to be another statistic.

Choosing a driving school should not be taken lightly. Type 'Driving Lessons Enoggera' or 'Driving School North Brisbane' into Google. Lots of wonderful websites show up so how do you choose?

Let us help you with the decision process.

Book Now in Enoggera
Monday
10:00am to 4:00pm
Tuesday
10:00am to 4:00pm
Wednesday
10:00am to 4:00pm
Thursday
10:00am to 4:00pm
Friday
10:00am to 4:00pm
Saturday
Closed
Sunday
Closed
Loading...



Back to Top