Jacob Carswell-Doherty

A couple sitting on a sofa during a therapy session, portraying tension and worry.

Property Settlement After Separation: 2026 Family Law Changes

When a relationship ends, one of the most important issues is how property, liabilities, superannuation and financial resources will be divided. In Australia, property settlement is not based on an automatic 50/50 split. The Court does not apply a fixed formula. Instead, it considers what outcome is just and equitable in the circumstances of each …

Property Settlement After Separation: 2026 Family Law Changes Read More »

Colorful Indian rupee banknotes pinned and hanging on a clothesline against a green leafy backdrop.

AML Conveyancing Rules: What NSW Buyers Need to Know

You have signed the contract, chosen your conveyancer and are waiting for the next step. Instead of a costs disclosure, you receive a questionnaire asking where your deposit is coming from, whether you hold or have ever held a prominent public office in any country, and whether you are acting on behalf of someone else. …

AML Conveyancing Rules: What NSW Buyers Need to Know Read More »

A close-up view of a person's hand writing with a black pen on textured paper.

Visa Cancellation & the Character Test: How Children’s Evidence Can Change the Outcome

A recent Federal Court decision has set aside a visa cancellation character test ruling because the Tribunal failed to engage with handwritten letters from three children. A reminder that decision-makers cannot treat children’s voices as mere character references. The Case at a Glance In Sumeo v Minister for Immigration, Citizenship and Multicultural Affairs [2026] FCA …

Visa Cancellation & the Character Test: How Children’s Evidence Can Change the Outcome Read More »

Appearing before Justice Michael Meek in the Equity Division: what solicitors should know

Michael Meek J was appointed to the Supreme Court of New South Wales in late 2022 after more than two decades at the equity bar. 138 published judgments since. No decision overturned on appeal. Several already cited as authority by the Court of Appeal. “When you’d buy vinyl, you’d have this lovely-sized object with a …

Appearing before Justice Michael Meek in the Equity Division: what solicitors should know Read More »

Wooden blocks spelling 'UNIQUE' stamped on textured white canvas

Trademark Infringement and Honest Concurrent Use: What Zip Co’s High Court Defeat Means for Your Business

A $3 billion company is being forced to rebrand in its home market after years of trademark infringement, and the honest concurrent use defence it relied upon has been decisively rejected by the High Court. This decision isn’t just a corporate cautionary tale; it’s a warning to any business that has ever assumed a name …

Trademark Infringement and Honest Concurrent Use: What Zip Co’s High Court Defeat Means for Your Business Read More »

Heartwarming moment of a brother and sister showing affection indoors, embodying sibling love.

How Children and Divorce Conflict Shapes Outcomes More Than Separation Itself

When relationships break down, many parents understandably worry about the impact of separation on their children. Research on children and divorce conflict consistently shows that the focus should not be on whether separation occurs, but on how its consequences are managed. Under Australian family law, the guiding principle in s 60CC of the Family Law …

How Children and Divorce Conflict Shapes Outcomes More Than Separation Itself Read More »

A detailed close-up of a Lady Justice statue holding scales, symbolizing law and justice.

ACL Refund Rights Australia: What Manufacturers Say And Why They Are Wrong

You’ve bought a faulty car, a caravan that leaks, or an appliance that stops working after a few months. You know your rights under the Australian Consumer Law. You ask for a refund. And then the pushback starts. In our experience, most manufacturers and suppliers don’t simply say no. They give you a reason, often …

ACL Refund Rights Australia: What Manufacturers Say And Why They Are Wrong Read More »

gavel, auction, law, hammer, symbol, judge, legal, justice, crime, criminal, wooden, 3d, wood, judgment, trial, verdict, punishment, rights, authority, court, legislation, constitution, courthouse, bid, law, law, law, law, law, legal, justice, court, court, court

How to Reduce the Risk of Contested Wills in NSW

How to reduce the risk of contested wills in NSW is an issue more families are facing as wealth passes between generations and estate disputes become more common. While no estate plan can completely eliminate the risk of a legal challenge, careful planning and clear communication can greatly reduce the chances of a will being …

How to Reduce the Risk of Contested Wills in NSW Read More »

- End", entire site, priority AFTER 8417. * * What it does: * 1. On load, reads gclid + utm_* from the URL and stores them in a * first-party cookie for 90 days (only overwrites gclid when a new one * is present, so a later organic visit does not wipe the paid click). * 2. Appends those params to every calendly.com link and to any inline * Calendly embed, so a completed booking carries them into Calendly and * onward to the RedRain integration. */ (function () { 'use strict'; var COOKIE = 'jm_attr'; var MAXAGE = 60 * 60 * 24 * 90; // 90 days var UTM_KEYS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term']; function readCookie(name) { var m = document.cookie.match('(?:^|; )' + name + '=([^;]*)'); return m ? decodeURIComponent(m[1]) : ''; } function writeCookie(name, val) { document.cookie = name + '=' + encodeURIComponent(val) + '; path=/; max-age=' + MAXAGE + '; SameSite=Lax; Secure'; } // ---- 1. capture from URL, merge with stored ---- function capture() { var url = new URLSearchParams(window.location.search); var stored = {}; try { stored = JSON.parse(readCookie(COOKIE) || '{}'); } catch (e) { stored = {}; } var incomingGclid = url.get('gclid'); if (incomingGclid) { stored.gclid = incomingGclid; } // only overwrite on a fresh click UTM_KEYS.forEach(function (k) { var v = url.get(k); if (v) { stored[k] = v; } }); // if a gclid arrived but no utm_source, tag the source so RedRain is not blank if (incomingGclid && !stored.utm_source) { stored.utm_source = 'google'; stored.utm_medium = 'cpc'; } if (Object.keys(stored).length) { writeCookie(COOKIE, JSON.stringify(stored)); } return stored; } var attr = capture(); if (!attr || (!attr.gclid && !attr.utm_source)) { return; } // nothing to forward // ---- 2. build a query string for Calendly ---- function calendlyParams() { var p = new URLSearchParams(); UTM_KEYS.forEach(function (k) { if (attr[k]) { p.set(k, attr[k]); } }); // carry the raw gclid too. utm_content is the safe carrier RedRain can map // if its Calendly field mapping does not expose a native gclid slot. if (attr.gclid) { p.set('gclid', attr.gclid); if (!p.get('utm_content')) { p.set('utm_content', 'gclid:' + attr.gclid); } } return p.toString(); } function withParams(href) { if (!href || href.indexOf('calendly.com') === -1) { return href; } var qs = calendlyParams(); if (!qs) { return href; } // don't double-append if (href.indexOf('utm_source=') !== -1 || href.indexOf('gclid=') !== -1) { return href; } return href + (href.indexOf('?') === -1 ? '?' : '&') + qs; } // ---- 3a. rewrite anchor links (covers the popup/booking click path) ---- function rewriteLinks() { var links = document.querySelectorAll('a[href*="calendly.com"]'); for (var i = 0; i < links.length; i++) { var a = links[i]; if (a.getAttribute('data-jm-attr') === '1') { continue; } a.setAttribute('href', withParams(a.getAttribute('href'))); a.setAttribute('data-jm-attr', '1'); } } // ---- 3b. rewrite inline embeds. Must run before Calendly widget.js reads // data-url; if the widget already initialised, re-point and let it // re-read on next interaction. Most bookings go via the link path. ---- function rewriteEmbeds() { var w = document.querySelectorAll('.calendly-inline-widget[data-url]'); for (var i = 0; i < w.length; i++) { var el = w[i]; if (el.getAttribute('data-jm-attr') === '1') { continue; } el.setAttribute('data-url', withParams(el.getAttribute('data-url'))); el.setAttribute('data-jm-attr', '1'); } } function run() { rewriteLinks(); rewriteEmbeds(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', run); } else { run(); } // catch links injected later (Elementor popups, lazy content) if (window.MutationObserver) { var mo = new MutationObserver(function () { rewriteLinks(); }); mo.observe(document.documentElement, { childList: true, subtree: true }); } })();