SEO Audit Report
Search Visibility
Analysis
brandimpact.com.au
Audit Date
04 Apr 2026
Business Type
E-commerce / Branded Merchandise
Platform
WordPress + WooCommerce + Elementor
Prepared by
Taussig · taussig.ai
SEO Health Score
53/100
Clinical Assessment
Functional foundation.
Execution gaps on every front.
Brand Impact has the right infrastructure in place — Yoast SEO, WP Rocket, HTTPS, sitemaps, structured data. But the execution is incomplete across every category. The non-www domain returns a 403, the Organisation schema is missing address and contact data, two pages share an identical H1, and the site's AI search readiness is the lowest-scoring category at 45/100. These are not architectural problems — they are configuration problems. Most can be resolved within a week.
01
Content / E-E-A-T
52 23%
Technical SEO
58 22%
On-page Factors
55 20%
Schema Markup
42 10%
Core Web Vitals
55 10%
AI Search Readiness
45 10%
Image Optimisation
58 5%
Category Score Weight Weighted Status
Content / E-E-A-T 52/100 23% 12.0 WARN
Technical SEO 58/100 22% 12.7 WARN
On-page Factors 55/100 20% 11.0 WARN
Schema Markup 42/100 10% 4.2 FAIL
Core Web Vitals 55/100 10% 5.5 WARN
AI Search Readiness 45/100 10% 4.5 FAIL
Image Optimisation 58/100 5% 2.9 WARN
Total 53/100 100% 52.8 WARN
02
Three fixes. Highest return, lowest effort.
Priority Queue In order of impact
i
Fix the non-www 403 with one Cloudflare redirect rule.
brandimpact.com.au returns HTTP 403 Forbidden instead of redirecting to www. Any user who types the domain without www hits a broken page. Any backlink pointing to the non-www version is dead. Add a Cloudflare redirect rule: non-www → https://www.brandimpact.com.au/ with HTTP 301. Five minutes, immediate recovery.
ii
Upgrade Organisation schema to LocalBusiness with full NAP data.
The current schema node is typed as Organisation with no address, phone, email, or opening hours — despite all of this being in the footer. Upgrading to LocalBusiness with complete NAP data unlocks local pack eligibility, Knowledge Panel completeness, and entity confidence for AI search. Populate via Yoast SEO → Search Appearance → Organisation. All data is already on the site — it just needs to be in schema.
iii
Expand all four meta descriptions and set a proper OG image.
Every audited page has a meta description under 144 characters — all fall short of the 150–165 character target where CTR peaks. The OG image is a 185×187px icon; link previews on LinkedIn and Facebook will be thumbnail-sized. Both fixes are Yoast settings — no code changes required. Add a specific CTA to each description and set the 1920×900 hero banner as the OG image.
03
Critical
Critical
Non-www domain returns HTTP 403
brandimpact.com.au returns 403 Forbidden. The canonical domain (www) works correctly but the naked domain does not redirect — it fails entirely. Users and crawlers following non-www links or typing the address directly hit a broken response. All backlinks to the non-www version contribute zero link equity.
Fix: Cloudflare → Rules → Redirect Rules. Create a rule: Hostname does not contain "www" → Redirect to https://www.brandimpact.com.au/ with status 301, preserve path and query string.
Critical
Sitemap/robots.txt conflict on seven pages
Seven pages are Disallowed in robots.txt but are simultaneously listed in page-sitemap.xml: /checkout/, /checkout-2/, /my-account/, /terms-and-conditions/, /returns-refunds-policy/, /website-policy/, /thank-you/. Sending Google a URL via sitemap while blocking crawl of the same URL is a contradictory signal. Google documents this as a known source of indexing confusion.
Fix: In Yoast SEO, mark each page as noindex. Yoast will automatically remove noindex pages from the sitemap. Alternatively, remove the robots.txt Disallow rules for these pages and rely on noindex alone — do not rely on Disallow to prevent indexation, as Google can index a URL it cannot crawl if external links exist.
High
High
Identical H1 on homepage and about page
Both the homepage and the about page carry the H1 "Empowering Brands to Make Their Impact". Google uses H1 as a primary topicality signal. Two pages with the same H1 cannibalise each other's keyword targeting and signal to Google that the pages cover the same topic.
Fix (About page H1): "About Brand Impact — Australian Branded Merchandise Experts"
High
Two H1 tags on the Contact page
The contact page contains two H1 elements: "Contact" and "Get In Touch". Only one H1 is permitted per page. Having two weakens the topicality signal and fails basic on-page structure.
Fix in Elementor: demote "Get In Touch" to H2. Recommended H1: "Contact Brand Impact — Get a Quote Today"
High
Organisation schema missing NAP data — not eligible for local pack
The JSON-LD schema node is typed as Organisation with an empty description field and no address, telephone, email, or opening hours. The business has all of this information (19/103 George Street Parramatta NSW 2150, 02 8001 6107, Mon–Fri 09:00–17:00) displayed in the footer but not in schema. Without LocalBusiness schema with complete NAP data, the site cannot appear in Google's local pack or qualify for a Knowledge Panel.
Fix: change @type to "LocalBusiness", populate address, telephone, email, openingHoursSpecification, and areaServed. Full replacement schema provided in Section 06.
High
OG image is a 185×187px icon — link previews will be broken
The og:image is set to Updated_03.webp, a small badge/icon at 185×187 pixels. Minimum recommended for social previews is 1200×630px. Missing og:image:width and og:image:height tags compound the problem. Every link shared on LinkedIn, Facebook, or Slack will render a thumbnail-sized icon instead of a banner — directly damaging click-through from social sharing.
Fix: Yoast SEO → Social → Facebook → Default image. Set one of the existing 1920×900 hero banners. Also add og:image:width and og:image:height meta tags via Yoast or functions.php.
High
All audited meta descriptions are short
All four audited pages (homepage, about, contact, blog index) have meta descriptions under 144 characters, with the homepage at 123 characters. The optimal range for CTR is 150–165 characters. Each description ends without a CTA or differentiator.
Fix (example, homepage): append "...Australia-wide. Get an instant quote online or call (02) 8001 6107 — 7–10 day turnaround guaranteed." Bring each description to 150–165 characters with a specific action.
High
og:locale set to en_US — should be en_AU
The Open Graph locale tag declares en_US. The site targets Australia exclusively. This is a minor inconsistency but incorrect metadata for an Australian business.
Fix: Yoast SEO → Social → Facebook → change locale to en_AU.
High
Twitter card meta tags missing title, description, and image
Only twitter:card is present. The twitter:title, twitter:description, twitter:image, and twitter:site tags are absent. Twitter/X previews for shared URLs will be incomplete.
Fix: Yoast SEO → Social → Twitter — verify settings are enabled and populated. These should auto-generate from the page title and meta description if configured correctly.
Medium
Medium
No FAQPage schema on /faqs/ — easy rich result opportunity
The site has a dedicated FAQs page. FAQPage schema enables accordion-style rich results in Google SERPs, increasing visible page real estate without ranking changes. Google's August 2023 guidance restricts FAQ schema to standalone FAQ pages — this site has one.
Fix: add FAQPage + Question + Answer JSON-LD to the /faqs/ page only. One question per answer entry. Do not add to commercial or product pages.
Medium
No Article schema on 20 blog posts — E-E-A-T and freshness signals missing
The blog index lists 20 articles. No Article or BlogPosting schema was detected on any post. Blog content is a key E-E-A-T signal and Article schema enables rich results including datePublished, author, and publisher attribution in search results.
Fix: Yoast SEO → Search Appearance → Content Types → Posts → Schema tab. Set Schema type to "Article", Sub-type to "BlogPosting". Ensure author, datePublished, and dateModified are populated on all posts.
Medium
No author attribution on any blog content — E-E-A-T risk
Twenty blog articles have no visible author name, title, or bio. Author elements are present in the DOM but empty. Google's quality rater guidelines explicitly evaluate author experience, expertise, authoritativeness, and trustworthiness. Anonymous content is a negative E-E-A-T signal, particularly for a commercial site where trust affects purchase decisions.
Fix: add author name and role to all posts. Even "Brand Impact Team, Parramatta NSW" with a short bio is significantly better than anonymous. Create an author page linking all posts.
Medium
12 images missing width/height attributes — CLS risk
12 images have no explicit width and height attributes. When images load without declared dimensions, the browser cannot reserve layout space — causing Cumulative Layout Shift (CLS) as images push content down on load. CLS is a Core Web Vitals metric and a direct ranking signal. Affected images include the 1920×900 hero/slider banners loaded via protocol-relative URLs.
Fix: In Elementor, set image dimensions in widget settings. Or enable WP Rocket → "Add missing image dimensions" in the Media Optimization settings.
Medium
WordPress and WooCommerce version numbers exposed in page source
meta name="generator" tags expose WordPress 6.9.4 and WooCommerce 10.6.1. This is a security signal — version disclosure allows targeted vulnerability scanning — and is unnecessary for SEO.
Fix: add to functions.php — remove_action('wp_head', 'wp_generator'); — and add a filter to remove the WooCommerce generator tag. No user-facing impact.
Medium
Homepage dateModified is 2025-12-17 — over three months stale
The WebPage schema node for the homepage carries a dateModified of 2025-12-17, over three months ago. Content freshness is a ranking signal, particularly for commercial pages competing on branded queries. AI search engines weight recency when selecting citations.
Fix: any content edit to the homepage will update this automatically via Yoast. Schedule minor homepage content refreshes quarterly — even updating a testimonial or stat suffices.
Low
Low
41 images with empty alt="" — audit for content images
Empty alt is correct for purely decorative images but incorrect for content images. Feature icons (Updated_03.webp, Dispatched.webp, etc.) describe product USPs and should carry descriptive alt text. Client logos and trust badges also benefit from alt text for accessibility and image search.
Fix: audit each empty-alt image in Elementor. Retain empty alt only for genuinely decorative images (e.g. background shapes). Add descriptive text to feature icons: e.g. alt="Free artwork mock-up included".
Low
Blog page title is 69 characters — likely truncated in desktop SERPs
"Branded Merchandise Insights, Tips & Buying Guides - Brand Impact" is 69 characters. Google truncates at approximately 60–65 characters on desktop. The brand name at the end may be cut.
Fix: shorten to approximately 56 characters: "Branded Merchandise Blog — Tips & Guides | Brand Impact"
Low
sameAs Facebook URL has a trailing # fragment — clean up
The sameAs array in Organisation schema includes the Facebook URL with a trailing # fragment. Fragment identifiers in entity URLs are unnecessary and non-standard in schema.
Fix: remove the trailing # from the Facebook sameAs URL. Also add LinkedIn to the sameAs array for entity completeness.
Low
94 of 109 images missing explicit loading attribute
WP Rocket handles lazy rendering via JavaScript, but explicit loading="lazy" attributes are more reliable across crawlers and render environments that may execute JS inconsistently.
Fix: enable WP Rocket → Media Optimization → "Add missing image dimensions" (this also adds lazy loading attributes). Low effort, handled by the plugin.
04
Meta description character audit
Page Length Target Status Note
Homepage 123 chars 150–165 SHORT No CTA, no differentiator
About 138 chars 150–165 SHORT Closest to target
Contact 144 chars 150–165 SHORT Near threshold
Blog Index 123 chars 150–165 SHORT No topic specificity
H1 structure audit
Page H1 Count Status H1 Text
Homepage 1 DUPLICATE "Empowering Brands to Make Their Impact"
About 1 DUPLICATE "Empowering Brands to Make Their Impact" — identical to homepage
Contact 2 TWO H1s "Contact" + "Get In Touch" — demote one to H2
Blog Index 1 OK Unique and descriptive
05
LocalBusiness schema replacement
Replace the current Organisation node with the following. All values are confirmed from the live site footer and page content. Swap the placeholder LinkedIn URL for the actual profile URL before deploying.
{ "@context": "https://schema.org", "@type": "LocalBusiness", "@id": "https://www.brandimpact.com.au/#organization", "name": "Brand Impact", "url": "https://www.brandimpact.com.au/", "logo": "https://www.brandimpact.com.au/wp-content/uploads/2024/11/cropped-Final-Files-05.png", "image": "https://www.brandimpact.com.au/wp-content/uploads/2026/03/Website-Banner-1920x900-23.png", "description": "Brand Impact is an Australian-owned branded merchandise and uniform supplier based in Parramatta, NSW. Over 100,000 products with 7–10 day turnaround Australia-wide.", "telephone": "+61280016107", "email": "support@brandimpact.com.au", "address": { "@type": "PostalAddress", "streetAddress": "19/103 George Street", "addressLocality": "Parramatta", "addressRegion": "NSW", "postalCode": "2150", "addressCountry": "AU" }, "openingHoursSpecification": [{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "09:00", "closes": "17:00" }], "areaServed": { "@type": "Country", "name": "Australia" }, "priceRange": "$$", "sameAs": [ "https://www.facebook.com/profile.php?id=61568903133259", "https://www.instagram.com/brandimpactau/", "https://www.tiktok.com/@brandimpact_au", /* add LinkedIn URL here */ ] }
06
Sequenced implementation plan
Phase Item Where Effort Priority
Week 1 Fix non-www 403 with Cloudflare redirect rule Cloudflare dashboard 5 min CRITICAL
Week 1 Fix sitemap/robots.txt conflict — noindex 7 pages in Yoast Yoast SEO per-page settings 15 min CRITICAL
Week 1 Upgrade schema to LocalBusiness with full NAP data Yoast → Search Appearance → Organisation 30 min HIGH
Week 1 Set 1200×630 OG image — replace icon with hero banner Yoast → Social → Facebook 10 min HIGH
Week 1 Fix duplicate H1 — update About page heading Elementor — about page 5 min HIGH
Week 1 Fix Contact page — demote second H1 to H2 Elementor — contact page 5 min HIGH
Week 1 Expand all four meta descriptions to 150–165 chars Yoast per-page SEO settings 20 min HIGH
Week 1 Change og:locale from en_US to en_AU Yoast → Social → Facebook 2 min HIGH
Week 1 Enable Twitter card meta tags in Yoast Social settings Yoast → Social → Twitter 5 min HIGH
Month 1 Add FAQPage schema to /faqs/ page Custom JSON-LD or Yoast block 1 hr MEDIUM
Month 1 Enable Article/BlogPosting schema on all blog posts Yoast → Search Appearance → Posts 20 min MEDIUM
Month 1 Add author names and bios to all 20 blog articles WordPress user profiles + Elementor 2–3 hrs MEDIUM
Month 1 Fix 12 images missing width/height — enable WP Rocket dimension fill WP Rocket → Media Optimization 5 min MEDIUM
Month 1 Remove WordPress/WooCommerce version generator tags functions.php 10 min MEDIUM
Month 1 Refresh homepage content to update dateModified Elementor — homepage 15 min MEDIUM
Ongoing Audit and populate alt text on 41 empty-alt images Elementor / WordPress Media Library 2 hrs LOW
Ongoing Shorten blog page title to under 60 characters Yoast — blog archive settings 5 min LOW
Ongoing Clean up Facebook sameAs URL fragment, add LinkedIn to sameAs Yoast schema / functions.php 10 min LOW
07
Core Web Vitals — proxy scores only
Core Web Vitals scores in this report are proxy signals derived from HTML analysis (image dimensions, loading attributes, HTML payload size). Real LCP, CLS, and INP values require a Google PageSpeed Insights run or Chrome User Experience Report (CrUX) data. Run a PageSpeed Insights audit for authoritative scores before actioning CWV-specific work.
WooCommerce product pages not individually audited
Product detail pages were not individually analysed in this audit. Verify that Yoast SEO is outputting correct Product and Offer schema on product pages. Product schema with pricing, availability, and aggregate rating data can significantly improve rich result eligibility for commercial queries.
Blog post title duplicate risk — not individually audited
The post sitemap contains 60+ blog posts. Title tag duplication and near-duplicate content across closely related blog posts is common in topic cluster strategies. Recommend running a title tag export from Screaming Frog or Google Search Console to check for duplication across the full post inventory.
Server-level user-agent blocking
The site blocks some non-browser user agents at the server level (returning 403). This is separate from robots.txt rules and is likely a Cloudflare Bot Fight Mode or WAF setting. While Googlebot uses a browser-like UA string that may bypass this, it is worth checking GSC → Settings → Crawl Stats for any Googlebot 403 errors after the non-www redirect is deployed.