A fictional business. The figures are a modelled scenario, not a client result.
Sheet 01 · Kaimoana Cloud survey37°47′S 175°17′E · Hamilton
Kaimoana Cloud · Farm management SaaS · Hamilton
How a New Zealand agritech platform stopped its AU and NZ sites competing against each other
Near-identical Australian and New Zealand sites swapped places in each country's results, so farmers often landed on the wrong pricing and regulations.
Headline figure · 7 months
−88%
Wrong-country landings -88%
→Each ranking is a hill: the higher it ranks, the tighter its contours.
Australian territory, held by .com.auNew Zealand territory, held by .co.nzThe fence: hreflang, canonicals and sitemaps
NThe challenge
Two paddocks, no fence between them.
Near-identical Australian and New Zealand sites swapped places in each country's results, so farmers often landed on the wrong pricing and regulations.
Kaimoana Cloud sells herd, paddock and compliance software to farms on both sides of the Tasman. It ran two sites, kaimoana.com.au and kaimoana.co.nz, built from the same templates with nearly the same copy. To Google they looked like one site published twice. So it picked one page per topic, and the pick kept changing from week to week.
An Australian beef farmer searching for NLIS compliance software would land on New Zealand pricing and a NAIT guide that doesn't apply to them, then leave. Trials fell in both countries, support spent hours sorting out the wrong currency, and neither site built up steady rankings.
Who ranked for “farm management software” in Australia, week by week before the engagement
Week 1: .au
Week 2: .nz
Week 3: .nz
Week 4: .au
Week 5: .nz
Week 6: .au
Week 7: .au
Week 8: .nz
Week 9: .nz
Week 10: .nz
Week 11: .au
Week 12: .nz
The wrong country's page ranked in 7 of 12 weeks.
EThe survey · audit findings
Eight survey notes, each with a grid reference.
We crawled both ccTLDs together, read 90 days of server logs and compared every pair of equivalent pages. The grid references match the sheet above.
B2
HreflangCritical
No hreflang on 4,180 equivalent URL pairs. Google read .com.au and .co.nz as duplicates and kept one page per cluster, often the wrong country's.
B5
HreflangCritical
612 New Zealand pages carried a canonical tag pointing at their Australian twin, which told Google to show the AU page to NZ farmers.
C3
ArchitectureHigh
/pricing used a geo-IP redirect. Googlebot crawls mostly from the US, so it only ever saw AUD prices and never indexed the NZD page.
D4
ArchitectureHigh
NLIS (AU) and NAIT (NZ) traceability copy shared one template behind a JavaScript toggle, so the country-specific rules never reached the rendered HTML.
E2
ContentMedium
94% text similarity between equivalent pages: same headings, same examples, only the currency symbol changed.
F3
Core Web VitalsHigh
Mobile LCP of 4.6 s on AU pricing (map tiles fetched from an Auckland origin) and INP of 380 ms on the trial form.
G1
XML sitemapsHigh
One combined sitemap listed both domains: 2,300 entries returned 404s, redirect chains or URLs on the other ccTLD.
G5
CrawlMedium
Region filter facets spawned about 19,000 parameter URLs, using up crawl budget on pages nobody searches for.
Crawl errors at baseline · 2,300
404 / soft 404 1,180
Redirect chains 640
Cross-ccTLD URLs 330
Server errors 150
SThe route · strategy
Four bearings, one fence line.
The plan is built on Signal, our technical seo plan. We didn't merge the sites or add new content. The job was to tell search engines which country each page is for, and to make that true on the page.
Bearing 045°
Hreflang
Fence the two countries so each one knows which page it owns.
Two-way en-AU / en-NZ annotations for all 4,180 pairs, plus x-default to a country picker
Removed the cross-domain canonicals; every page now canonicalises to itself
Validated pair by pair in each country's Search Console property
Bearing 135°
Site architecture
Subdivide the shared paddocks into country-specific ones.
Replaced the geo-IP redirect with a dismissible 'You're in New Zealand' banner
Split the traceability copy into crawlable /nlis and /nait guides
Pricing rendered on the server in AUD and NZD, with Offer schema in the right currency
Bearing 225°
Core Web Vitals
Clear the track so mobile users on rural connections get through.
Map tiles served from the nearest regional edge; below-the-fold maps lazy-loaded
Deferred the chat widget and split the trial form's bundle
LCP 4.6 s → 2.1 s and INP 380 ms → 140 ms on field-test devices
Bearing 315°
XML sitemaps
Give each country an accurate map of the land it actually holds.
A separate sitemap index per ccTLD, listing only canonical pages that return 200
hreflang alternates inside the sitemaps, with true lastmod dates
Region facets set to noindex and kept out of the sitemaps
Before · Search from Dubbo, NSWWrong country
farm management software
kaimoana.co.nz › pricing
Pricing | Kaimoana Cloud NZ: farm software from NZ$49
NAIT-ready animal records, Freshwater Farm Plan tools and paddock maps for New Zealand farms…
From A$45 a month. NLIS-ready livestock records, grazing planner and paddock maps for Australian farms…
↗The traverse · 7 months
One survey station a month.
1
Month 1
Survey
Crawled both domains and read 90 days of server logs. Mapped 1,410 duplicate clusters and flagged which country's page won each one.
2
Month 2
Fence
Shipped hreflang in the sitemaps, removed the cross-domain canonicals and turned off the geo-IP redirect on /pricing.
3
Month 3
Subdivide
Moved the NLIS and NAIT guides onto their own URLs and set up 301s. Pricing now renders per country on the server.
4
Month 4
Clear the track
Core Web Vitals sprint: regional tile edges, a deferred chat widget and a lighter trial form. Mobile LCP is under 2.5 s.
5
Month 5
Re-sow
Rewrote the top 140 templates for each market: local regulations, local examples and local farm systems.
6
Month 6
Muster
Rebuilt the sitemap indexes, handled the facet parameters and fixed redirect chains. Crawl errors fell below 100.
7
Month 7
Yield
Added wrong-country landing alerts, a review of each Search Console property and a runbook for new pages.
WThe yield · results
The fence held. The hills grew.
Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.
Wrong-country landings
−88%
From 31% of organic landings to 3.7%, measured as organic sessions that started on the other country's site.
Organic trials (AU)
+114%
84
180
Before · after
Organic trials (NZ)
+46%
112
164
Before · after
Crawl errors
2,300 → 40
2,300
40
Before · after (log scale)
Organic trials per month, by market
Walk the sheet, month by month.
Drag the survey date. Dashed hills belong to the wrong country's site. Once the fence is half built, each peak goes back to its own domain and its contours close in as the ranking climbs.
BM1M2M3M4M5M6M7
Wrong-country landings
3.7%
Organic trials · AU
180
Organic trials · NZ
164
Crawl errors
40
Ranking ledger
Ten tracked queries, with the position and the domain that held it before the work and after month 7.
Modelled rankings before and after, per market
Query
Mkt
Vol / mo
Before
After
farm management software
AU
2,900
#14 wrong site (.co.nz)
#3+11
paddock mapping app
AU
880
#9 wrong site (.co.nz)
#2+7
livestock records software australia
AU
720
#22 own site
#4+18
NLIS compliance software
AU
590
#31 wrong site (.co.nz)
#5+26
grazing planner app
AU
480
#11 wrong site (.co.nz)
#3+8
farm management software nz
NZ
1,300
#6 wrong site (.com.au)
#1+5
NAIT recording app
NZ
390
#12 wrong site (.com.au)
#2+10
paddock rotation planner
NZ
320
#8 wrong site (.com.au)
#2+6
freshwater farm plan software
NZ
260
#27 own site
#4+23
dairy farm software nz
NZ
590
#9 wrong site (.com.au)
#3+6
Your next survey
Get a plan like this
Running more than one country, language or domain? Signal starts with the same survey: crawl, logs, hreflang pairs and a fence line drawn where it belongs.