(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 */ } })();

James (Manual)

Queensland Accredited Driver Trainer

Teaching Area: Northside Brisbane

Teaching Experience: 3 years +

Transmission: Manual

Usual Lesson Vehicle: Toyota Yaris

"As your driving instructor I will help you gain the experience, confidence and knowledge to help you have a great driving experience. Coming from a sports background and coaching position I’m confident with working all types of skill levels.

I hold my heavy vehicle licence and have driven in other countries and all types of conditions. With over 30 years of driving I can help you improve and gain confidence with your driving skills and abilities." All of my lessons are conducted in safe,calm and friendly environment to get the best possible outcomes for each and every student.


Testimonials 5 Star Rating


Quotes

Had Noel for my lesson before driving test and was extremely helpful and passed first try.

Hamish


Back to Top