Loading...
Loading...
Overall Health GoDigital's website scores 76 out of 100 across 55 pages audited, reflecting a solid foundation with meaningful room for improvement in several key areas. The site performs well in user experience, content quality, and mobile delivery, but is being held back by technical SEO gaps, analytics blind spots, and compliance shortfalls that, if left unaddressed, could limit organic search visibility and expose the business to unnecessary risk. Think of it this way: the front of the house looks great, but some important behind-the-scenes work needs attention.
Critical Issues The most pressing concerns centre on SEO and site hygiene. Duplicate page titles and meta descriptions are causing search engines to struggle distinguishing between pages, while 22 pages are unintentionally competing against each other for the same keywords — effectively splitting the site's own search ranking potential. Four broken links create a poor experience for both visitors and search crawlers, and a missing H1 tag on at least one page leaves a clear signal gap for search engines. Equally urgent is the analytics score of just 10 out of 100, which means the business is currently flying blind with little reliable data to measure performance or inform decisions. The legal compliance score of 50 also warrants prompt attention to reduce potential liability.
What's Working GoDigital's website has genuine strengths to build on. Content quality scores an impressive 96, reflecting well-written, relevant material that serves its audience effectively. The site is fully mobile-friendly, accessible, and fast-loading — qualities that both users and search engines reward. Local SEO is strong at 90, meaning the business is well-positioned to be found by nearby customers. The E-E-A-T score of 86 indicates the site communicates credibility and trustworthiness effectively, and internal linking is optimised at 100, helping visitors and search engines navigate the site with ease.
Prioritised Next Steps The highest-return actions, in order of priority, are: (1) Fix the analytics setup immediately so performance data is being captured reliably. (2) Resolve duplicate titles, meta descriptions, and keyword cannibalization to sharpen search visibility across the site. (3) Repair the four broken links and add the missing H1 tag. (4) Address legal compliance gaps — likely around privacy policy or cookie consent requirements. (5) Review and complete structured data markup on the homepage to strengthen how the site appears in modern search results. Tackling these five areas in sequence would likely push the overall score above 85 and deliver measurable gains in organic traffic within 60–90 days.
Critical accessibility issues should be addressed first. The page is missing a <main> element or role="main" landmark, and has zero landmark regions detected — meaning no semantic <header>, <nav>, <main>, or <footer> elements are in use. This fundamentally breaks screen reader navigation. Alongside this, 3 links contain no visible text or aria-label attributes, causing screen readers to announce them meaninglessly. These structural fixes should be implemented immediately, as they represent significant WCAG compliance failures. A skip-to-content link should also be added at the top of the DOM to allow keyboard and screen reader users to bypass repeated navigation.
Performance and font rendering issues should be addressed next. With 28 JavaScript files loading on the page, there is a clear need for bundling and minification to reduce HTTP requests and improve load time. Additionally, 2 font families are loading without a font-display property defined, which can cause invisible or unstyled text during load (FOIT/FOUT). Adding font-display: swap to the relevant @font-face declarations will improve perceived performance. Preconnect hints (<link rel="preconnect">) should also be added for any third-party domains to reduce DNS lookup and connection latency.
The site has several high-priority SEO issues that need immediate attention. Duplicate meta descriptions and title tags signal to search engines that pages lack distinct identity, which can suppress rankings and dilute organic traffic. The keyword cannibalization issue is particularly significant — 22 pages competing for the same terms ("business, powered, web") means the site is essentially working against itself in search results, splitting authority and confusing search engines about which page should rank. The single missing H1 tag and broken links (4 detected) further erode crawlability and page authority, and broken links also create a poor user experience that can increase bounce rates.
On the content and structure side, 18 pages with meta descriptions exceeding 160 characters risk having their descriptions truncated in search results, reducing click-through rates from SERPs. The heading hierarchy gaps and ALL CAPS heading suggest inconsistent content formatting, which affects both accessibility and how search engines interpret content structure. Together, these issues indicate the site may have grown without a consistent content governance strategy, leading to overlapping page purposes and messaging.
From a UX perspective, broken links and unclear page hierarchy can frustrate users and erode trust, particularly for first-time visitors. Addressing cannibalization by differentiating page content and intent will not only improve SEO but also create clearer user journeys — ensuring visitors land on the most relevant page for their needs rather than navigating redundant content. Prioritizing the high-severity fixes first will deliver the most immediate impact on both rankings and user engagement.
This website audit reveals a score of 76/100, indicating a functional but underoptimized digital presence carrying meaningful business risk. The 8 critical and 263 high-priority issues identified represent tangible threats to revenue generation — including degraded search engine visibility, compromised user experience, and potential security vulnerabilities. At a moderate risk classification, the site is operational but actively losing ground to competitors who maintain cleaner, faster, and more technically sound web properties. Every day these issues persist translates to missed organic traffic, higher bounce rates, and reduced conversion potential.
From an ROI perspective, remediation efforts should be sequenced by impact-to-effort ratio. The 8 critical issues demand immediate attention as they carry disproportionate risk relative to their likely resolution cost — fixing these alone could yield measurable gains in rankings and user retention within weeks. The 263 high-priority items should then be addressed in structured sprints, prioritizing performance and Core Web Vitals improvements first, as speed and usability fixes typically deliver the fastest, most quantifiable returns in both search positioning and conversion rates. A disciplined remediation roadmap targeting these categories could realistically push the score above 90, moving the site from a liability into a competitive asset.
The most pressing concerns identified in this audit are the exposed sensitive files discovered across your website. Configuration files such as .env, .env.local, wp-config.php.bak, config.php.bak, and .htpasswd are publicly accessible, meaning database credentials, API keys, passwords, and other sensitive data could be harvested by malicious actors right now. This is not a theoretical risk — automated bots continuously scan the web for exactly these files. Every hour these remain accessible represents a window of opportunity for a potentially catastrophic breach, including full database compromise, unauthorized admin access, and data theft affecting both your business and your users. These five issues must be resolved within 24 to 72 hours without exception.
Once the immediate security fires are extinguished, attention should shift to performance and discoverability. Your Largest Contentful Paint of 6,442ms is more than double the recommended threshold, meaning visitors are waiting over six seconds to see your primary content — a significant driver of bounce rates and lost conversions. Auditing and consolidating your 28 JavaScript files through bundling, lazy loading, and deferral strategies should meaningfully reduce that figure. Simultaneously, resolving the keyword cannibalization across 25 competing pages will sharpen your SEO signal, helping search engines understand which pages deserve to rank for your target terms. The three links lacking visible text or aria-labels are a straightforward accessibility fix that will improve the experience for screen reader users and reflect well in search quality assessments.
It is worth acknowledging that conducting this audit demonstrates a proactive commitment to the health of your digital presence. Many businesses only discover vulnerabilities like these after an incident has already occurred. Having a structured, prioritised action plan means your team can work methodically rather than reactively, and the medium-term improvements identified are entirely achievable within a standard development cycle.
Realistically, your security vulnerabilities should be fully remediated by the end of this week. Performance optimisation, JavaScript consolidation, and keyword strategy refinement can be planned and executed across the following two to four weeks, with measurable improvements visible in both Core Web Vitals reporting and organic search performance shortly after. The accessibility fixes can be bundled into the earliest available development sprint at minimal cost. Following this plan consistently will leave your website significantly more secure, faster, and better positioned in search within a single month.
Copy-paste fixes for critical and high-severity issues
This webpack configuration bundles all 28 JavaScript files into 2-3 optimized chunks (vendor + main), reducing HTTP requests dramatically while minifying and tree-shaking unused code for faster page load.
// webpack.config.js or build tool configuration for bundling JS files
// Add this to your build process to combine and minify all JS files
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
mode: 'production',
entry: {
main: './src/js/index.js' // Single entry point that imports all other JS
},
output: {
filename: 'bundle.[contenthash].min.js',
path: path.resolve(__dirname, 'dist/js'),
clean: true
},
optimization: {
minimize: true,
minimizer: [new TerserPlugin({
terserOptions: {
compress: {
drop_console: true,
},
},
})],
splitChunks: {
chunks: 'all',
maxInitialRequests: 3, // Limit to max 3 JS chunks
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all',
},
},
},
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
};
// Also add these script tags to replace the 28 individual script tags in HTML:
// <script defer src="/dist/js/vendors.[contenthash].min.js"></script>
// <script defer src="/dist/js/main.[contenthash].min.js"></script>javascriptReplaces the duplicate meta description with a unique, descriptive page-specific description for the homepage to resolve the duplicate meta description SEO issue.
<meta name="description" content="GoDigital NZ – Helping New Zealand businesses grow online with expert digital marketing, SEO, web design, and strategy tailored to your goals.">htmlThis script detects and removes any duplicate <title> tags from the document, keeping only the first one to ensure a single unique title tag exists on the page.
(function() {
var titles = document.querySelectorAll('title');
if (titles.length > 1) {
for (var i = 1; i < titles.length; i++) {
titles[i].parentNode.removeChild(titles[i]);
}
}
})();javascriptAdds a visible H1 tag to the homepage to fix the missing primary heading, which is critical for SEO and accessibility.
<h1>Go Digital - New Zealand's Digital Marketing Experts</h1>htmlThis script detects and disables broken links on page load by attempting HEAD requests and removing invalid hrefs, while also providing a mapping to patch known broken link selectors with their correct destination URLs.
document.addEventListener('DOMContentLoaded', function() {
const links = document.querySelectorAll('a[href]');
links.forEach(function(link) {
fetch(link.href, { method: 'HEAD', mode: 'no-cors' })
.catch(function() {
link.style.pointerEvents = 'none';
link.style.opacity = '0.5';
link.setAttribute('aria-disabled', 'true');
link.setAttribute('title', 'This link is currently unavailable');
link.removeAttribute('href');
});
});
});
// Permanent fix: Update the following broken hrefs to their correct URLs
// Replace the placeholder URLs below with the actual correct URLs
const brokenLinkFixes = [
{ selector: 'a[href="#broken1"]', correctHref: '/' },
{ selector: 'a[href="#broken2"]', correctHref: '/' },
{ selector: 'a[href="#broken3"]', correctHref: '/' },
{ selector: 'a[href="#broken4"]', correctHref: '/' }
];
document.addEventListener('DOMContentLoaded', function() {
brokenLinkFixes.forEach(function(fix) {
const el = document.querySelector(fix.selector);
if (el) {
el.setAttribute('href', fix.correctHref);
}
});
});javascriptThis fix resolves keyword cannibalization by implementing canonical tags to designate the primary page for 'business, powered, web' keywords, adding structured data to reinforce the homepage authority, and providing differentiated meta titles/descriptions to ensure each of the 22 competing pages targets unique keyword variations rather than all competing for the same terms.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "GoDigital",
"url": "https://www.godigital.co.nz",
"description": "GoDigital - New Zealand's leading digital agency delivering professional web design, development and digital marketing solutions for businesses.",
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.godigital.co.nz/?s={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
<!-- Add canonical tags to each competing page to designate the primary page -->
<!-- Place the following on the MAIN/PRIMARY page for 'business powered web' -->
<link rel="canonical" href="https://www.godigital.co.nz" />
<!-- Add this meta robots directive to all 21 SECONDARY/COMPETING pages to prevent cannibalization -->
<!-- Replace with the actual secondary page URL on each respective page -->
<meta name="robots" content="noindex, follow" />
<!-- Alternatively, for secondary pages that should remain indexed but not compete, use: -->
<!-- <link rel="canonical" href="https://www.godigital.co.nz" /> -->
<!-- Recommended: Add unique, differentiated meta titles for each page -->
<!-- PRIMARY page (homepage) -->
<title>GoDigital | Business Web Solutions Powered by Innovation | New Zealand</title>
<meta name="description" content="GoDigital powers New Zealand businesses with cutting-edge web design, development and digital marketing. Transform your business online today." />
<!-- SECONDARY pages should use more specific, differentiated keywords -->
<!-- Example for a services page: -->
<!-- <title>Web Design Services for NZ Businesses | GoDigital</title> -->
<!-- <meta name="description" content="Professional web design services tailored for New Zealand small businesses. Custom solutions powered by GoDigital's expert team." /> -->json-ldThis adds canonical tags to consolidate link equity to one primary page and structured data to clearly signal the main page's authority to search engines, resolving keyword cannibalization for 'free website' across competing pages.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "GoDigital",
"url": "https://www.godigital.co.nz",
"description": "GoDigital - Professional website design and digital marketing services in New Zealand",
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.godigital.co.nz/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
<!-- Add canonical tags to each competing page to resolve keyword cannibalization -->
<!-- Place this on the PRIMARY page you want to rank for 'free website' -->
<link rel="canonical" href="https://www.godigital.co.nz" />
<!-- On the SECONDARY competing pages, add canonical pointing to primary -->
<!-- <link rel="canonical" href="https://www.godigital.co.nz" /> -->
<!-- Update meta tags on primary page -->
<meta name="title" content="Free Website Design NZ | GoDigital" />
<meta name="description" content="Get a free website for your New Zealand business with GoDigital. Professional web design with no upfront costs. Start your free website today." />
<meta property="og:title" content="Free Website Design NZ | GoDigital" />
<meta property="og:url" content="https://www.godigital.co.nz" />
<meta property="og:description" content="Get a free website for your New Zealand business with GoDigital. Professional web design with no upfront costs." />json-ldThis adds resource hints (preload, preconnect, dns-prefetch) for critical assets, inlines critical CSS to eliminate render-blocking, and forces high-priority eager loading on above-the-fold hero/banner images to dramatically reduce LCP time.
<link rel="preload" as="image" href="/path/to/lcp-hero-image.webp" fetchpriority="high">
<link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
<style>
/* Critical CSS inline - prevent render blocking */
body { margin: 0; font-family: sans-serif; }
.hero, .banner, header, [class*='hero'], [class*='banner'] {
content-visibility: auto;
}
img.hero-image, .hero img, header img, .banner img {
loading: eager !important;
decoding: sync;
fetchpriority: high;
}
</style>
<script>
// Force LCP image to load with high priority
document.addEventListener('DOMContentLoaded', function() {
// Target the largest visible image or heading in viewport
var lcpCandidates = document.querySelectorAll('header img, .hero img, .banner img, [class*="hero"] img, [class*="banner"] img, section:first-of-type img');
lcpCandidates.forEach(function(img) {
img.setAttribute('fetchpriority', 'high');
img.setAttribute('loading', 'eager');
img.setAttribute('decoding', 'sync');
// Convert src to WebP if not already
if (img.src && !img.src.includes('.webp') && !img.src.includes('data:')) {
var webpSrc = img.src.replace(/\.(jpg|jpeg|png)$/i, '.webp');
var testImg = new Image();
testImg.onload = function() { img.src = webpSrc; };
testImg.src = webpSrc;
}
});
// Remove lazy loading from above-fold images
var lazyAboveFold = document.querySelectorAll('img[loading="lazy"]');
lazyAboveFold.forEach(function(img) {
var rect = img.getBoundingClientRect();
if (rect.top < window.innerHeight) {
img.removeAttribute('loading');
img.setAttribute('fetchpriority', 'high');
}
});
});
</script>htmlEst. 185hrs total · Target score: 92/100
This simulates how AI models like ChatGPT or Perplexity would summarize your organization based on your current website content.
“AI-Powered Web Design Auckland appears to be the way it should work.. The site primarily covers topics related to website, websites, design, questions, auckland. Key services or offerings appear to include: Full-Service Digital Solutions, How We Deliver Results, The Subscription Advantage, Frequently Asked Questions. The organization appears to be based in or serve Bayview, Au, existing SEO rankings and brand equity. The organization maintains a presence on Facebook, Instagram, LinkedIn.”
Your site scores a solid 82, but is being held back primarily by 28 separate JavaScript files forcing the browser to open multiple network connections and process a large number of sequential requests before the page can become interactive — this is your highest-priority issue. Consolidating those 28 files into 3–5 bundled files (via Webpack, Rollup, or similar) could realistically reduce Total Blocking Time by 20–40% and meaningfully improve your Largest Contentful Paint, since fewer round-trips means the browser reaches rendering sooner. As a quick secondary win, adding font-display: swap to your 2 font families costs under 5 minutes to implement and eliminates the invisible-text flash that currently delays perceived text rendering by a typical 100–300ms on slower connections.
Add competitor URLs to compare SEO metrics, content depth, schema coverage, and GEO optimization scores side by side.
Coming soon: Add competitor URLs to auto-generate comparison reports