SEO
SOLARA PAINTING
Solara Painting — SEO & Performance Audit
Read-only audit of the public solarapainting.com site (no Webflow login, no publishing, no changes made). Headline finding: dozens of unedited Webflow demo/template pages are still live and submitted in the sitemap alongside the real, branded site.
Executive summary
The biggest issue on solarapainting.com isn't a missing tag or a slow script — it's that the site is still, in large part, the unedited "Construcfy X" Webflow ecommerce template it was built from. Of the 72 URLs in the live sitemap, roughly 45 are stock demo pages (fake team members, fake Los Angeles/Malibu project locations, Lorem-ipsum blog posts, a checkout/PayPal flow, a style guide) — all returning HTTP 200 and submitted for indexing alongside the real, branded pages. Two of the real, linked pages (About, Contact) still carry a "Buy template" link to a third-party template marketplace in the navigation.
On top of that, three technical gaps compound the risk: no canonical tags anywhere on the site (leaving Google to guess between duplicate home/contact variants), the www subdomain returns a 502 error instead of redirecting, and there is no structured data (JSON-LD) anywhere, which matters for a local service business trying to earn map-pack visibility.
Performance is comparatively solid — Cloudflare caching and gzip compression are working, and the two heaviest scripts (jQuery, Webflow's runtime) load at the end of the page — but a render-blocking font loader and the absence of next-gen image formats are worth fixing. Core Web Vitals could not be measured in this pass (see Scope, below) and should be pulled from Search Console or a fresh Lighthouse run.
Net effect: this reads to Google, and to any visitor who clicks past the homepage, as an unfinished site. The fixes are mostly fast (delete pages, add a redirect, remove a link) rather than expensive engineering work.
Top 10 actions
Ranked by impact, then by how little effort it takes.
| # | Action | Category | Impact | Effort |
|---|---|---|---|---|
| 1 | Delete/unpublish the ~45 leftover Construcfy X template pages and remove them from the sitemap | Technical SEO | Critical | Low — Webflow Pages panel |
| 2 | Remove the "Buy template" nav link on About and Contact (shared Navbar symbol) | Technical SEO / trust | Critical | Trivial |
| 3 | Fix www.solarapainting.com (502) with a redirect to the apex domain | Technical SEO | Critical | Low — domain/DNS setting |
| 4 | Turn on self-referencing canonical tags site-wide | Technical SEO | High | Low — Webflow SEO settings |
| 5 | Confirm the sitemap no longer references the 404'd /home-pages/home-v1 | Technical SEO | Critical | Low (resolves with #1) |
| 6 | Add LocalBusiness + Service JSON-LD structured data | Technical SEO / local | High | Medium |
| 7 | Add a real, consistent address (or defined service-area statement) and an embedded map on the contact page | On-page / local SEO | High | Medium |
| 8 | Reconcile the mismatched trust stats (team size, client counts) across Home and About | On-page / trust | Medium | Low — copy edit |
| 9 | Add descriptive alt text to all content images | On-page / accessibility | Medium | Medium |
| 10 | Replace the WebFont Loader script with native font-display: swap, and convert homepage images to WebP | Performance | Medium | Medium |
Technical SEO findings
| Priority | Finding & evidence | Why it matters | Fix | Expected benefit | Verification |
|---|---|---|---|---|---|
| Critical | ~45 unedited "Construcfy X" template pages live and indexed (home-v1/v2/v3, contact-v2/v3, team + 6 fake bios, 6 fake LA/Malibu projects, checkout, paypal-checkout, order-confirmation, our-products + 6 products, style-guide, changelog, licenses, coming-soon, 6 template blog posts, category pages) | Crawl budget waste, brand confusion, duplicate/thin-content risk, a template vendor's brand indexed under the client's domain | Delete/unpublish in Webflow Pages panel; 301 anything with existing backlinks or rankings to the closest real page | Cleaner index, better crawl efficiency, no lorem-ipsum content surfacing in search | Re-crawl (Screaming Frog or site: search), confirm sitemap.xml lists only real pages, GSC coverage report improves |
| Critical | Sitemap references /home-pages/home-v1, which 404s |
Dead link in the sitemap wastes crawl budget and can trigger GSC sitemap errors | Remove from sitemap (resolves once the page is deleted) or 301 to homepage | Clean sitemap, fewer GSC warnings | GSC Sitemaps report shows 0 errors |
| Critical | "Buy template" link to brixtemplates.com live in the nav on /about and /contact-pages/contact-v1 (the real, linked contact page) |
Leaks link equity to an unrelated third-party site and undermines trust on the two pages most likely to close a lead | Remove the nav item in the shared Navbar symbol | Removes outbound authority leak, restores professional presentation | View-source confirms no marketplace link in the nav on any page |
| High | No <link rel="canonical"> on any of the 10 pages sampled, including the homepage |
With duplicate home/contact variants still live, Google has no signal for which version is authoritative | Enable Webflow's automatic canonical (Project Settings → SEO) or add self-referencing canonicals | Consolidates ranking signals to the intended URL | View-source shows a canonical matching each page's own URL |
| High | https://www.solarapainting.com returns HTTP 502 instead of redirecting |
Any backlink, bookmark, or typed "www" hits a dead page — lost traffic and a poor first impression | Add a www → apex redirect in Webflow's domain settings (or Cloudflare DNS) | Recovers traffic aimed at www, removes a dead end | curl -I https://www.solarapainting.com/ returns a 301 to the apex |
| Medium | Zero JSON-LD structured data found on any page checked | No LocalBusiness/Service schema means no eligibility for rich results or stronger local-pack signals | Add LocalBusiness (or HomeAndConstructionBusiness) schema with NAP, hours, and service area, plus Service schema per service page | Better rich-result eligibility, stronger local relevance signal | Google Rich Results Test passes with no errors |
| Medium | Missing alt text: 12/22 images (home), 8/14 (about), 9/19 (contact), 6 of 7 per service page |
Hurts image-search visibility; also an accessibility failure (WCAG 1.1.1) | Add descriptive alt text to content images; alt="" for purely decorative ones |
Image-search visibility, accessibility compliance | Lighthouse/axe shows 0 missing-alt errors on sampled pages |
| Low | http→https and the custom 404 both behave correctly (301 and true 404, not a soft-404) | Confirms these two basics are already right | No action | — | — |
| Not verified | Full site-wide broken-link crawl, and true Google indexation count of the 72 sitemap URLs | Requires a full crawler (Screaming Frog) and Search Console, neither available in this read-only pass | — | — | Run a full crawl + check GSC Coverage report |
On-page SEO findings
| Priority | Finding & evidence | Why it matters | Fix | Expected benefit | Verification |
|---|---|---|---|---|---|
| High | Trust stats conflict between pages: Home says "350+ projects, 30+ years, 100+ happy clients"; About says "65+ team members, 80+ happy clients" | "65+ team members" reads as unedited template copy for a two-state residential/commercial painter, and the client-count mismatch (100+ vs 80+) undercuts credibility if a prospect compares pages | Align every trust stat to one accurate, real figure across all pages | Consistent, credible trust signals (E-E-A-T) | Manual copy review across Home, About, Contact |
| High | No physical street address anywhere sampled; Contact page lists NJ/NY "locations" with only phone/email, no embedded map | Local SEO (Google Business Profile alignment, LocalBusiness schema, map-pack ranking) depends on a visible, consistent NAP | Add a real address (or an explicit service-area statement matching the Google Business Profile) plus an embedded map | Stronger local relevance/trust signals | Manual check against the Google Business Profile listing (needs GBP access) |
| Medium | Service pages (interior/exterior/residential checked) are short, similarly structured, with no location-specific content, pricing guidance, before/after photos, or FAQs | Thin, templated service pages struggle against competitors running dedicated "[service] + [town]" landing pages | Expand each service page with locality-specific sections, FAQs, before/after imagery, and process detail | Better keyword coverage, longer dwell time, stronger conversion-page trust | Manual content review; track ranking movement post-update (needs GSC/rank-tracker access) |
| Medium | No town/city-level landing pages despite serving two distinct states (NJ and NY) | Local service businesses typically rank better with dedicated local pages than one combined services page | Build a small set of priority-town landing pages tied to actual service areas | Improved local keyword coverage and map-pack relevance | Track new page indexation/rankings in GSC |
| Low | Blog is 100% unedited template stock (Lorem-ipsum meta description, generic "25 color trends... 2023" posts unrelated to painting in NJ/NY) | Contributes no topical relevance and signals an unmaintained/template site if it stays indexed | Replace with real, locally relevant articles, or remove/noindex until real content exists | Topical authority, fresh-content signal | Manual review confirming article topics and dates reflect real publishing |
| Not verified | Actual keyword targeting gaps, search-intent alignment, and current rankings against real query data | Requires a keyword tool and Search Console, neither available in this pass | — | — | Pull Search Console Performance report + a keyword-gap tool (e.g. Semrush) once access is granted |
Performance findings
| Priority | Finding & evidence | Why it matters | Fix | Expected benefit | Verification |
|---|---|---|---|---|---|
| Medium | Google WebFont Loader (ajax.googleapis.com/.../webfont.js, ~5.4 KB compressed) sits in <head> with no async/defer |
Legacy loading pattern that can delay text paint (flash of invisible text) and adds a render-blocking request before first paint | Replace with native @font-face + font-display: swap via Webflow's font panel; drop the WebFont Loader dependency |
Faster First Contentful Paint / LCP, no invisible-text flash | Lighthouse/WebPageTest filmstrip shows earlier text paint; render-blocking-resources audit clears |
| Medium | No next-gen image formats observed — all 6 raster images sampled on the homepage are .jpg/.png | JPG/PNG typically run 25–50% heavier than WebP/AVIF at equal quality, inflating page weight and LCP, especially on mobile | Re-export as WebP (check Webflow's asset panel settings) or route through an image CDN | Lower page weight, faster LCP, better mobile Core Web Vitals | Lighthouse "Serve images in next-gen formats" audit passes |
| Low | Only 4 of 22 homepage images carry loading="lazy"; likely below-the-fold images are not confirmed lazy |
Eager-loading everything increases initial page weight and competes with above-the-fold content for bandwidth | Set below-the-fold images to lazy load in Webflow's image settings (supported per-image) | Faster initial load, less main-thread contention | Lighthouse "Defer offscreen images" audit clears |
| Positive | Cloudflare CDN caching and gzip compression are active (cf-cache-status: HIT, content-encoding: gzip, multi-day cache age); jQuery and Webflow's runtime JS load at the end of <body>, so they're effectively non-blocking despite lacking defer/async |
Confirms caching, compression, and script placement are already sound | No action | — | — |
| Not verified | Actual Core Web Vitals (LCP, INP, CLS), field or lab | The public PageSpeed Insights API returned a quota-exceeded (429) error during this audit — no CWV numbers are reported here, lab or field, real or estimated | — | — | Pull the Core Web Vitals report from Search Console, or run Lighthouse/PageSpeed Insights directly against the live URL |
| Not verified | Full third-party script inventory, rendered-DOM waterfall, JS execution time, and actual font-file sizes | This was a static-HTML, no-login audit; no browser rendering or network waterfall was captured | — | — | A rendered Lighthouse/WebPageTest run against the live URL |
Accessibility findings (overlapping SEO/performance)
| Priority | Finding & evidence | Why it matters | Fix | Expected benefit | Verification |
|---|---|---|---|---|---|
| Medium | Same missing alt text noted above (12/22 homepage images, similar ratios elsewhere) |
WCAG 1.1.1 (Non-text Content) failure — screen readers get no description for meaningful images | Add descriptive alt text to content images; alt="" for decorative ones |
Screen-reader usability, plus the SEO benefit already noted | axe/Lighthouse accessibility audit shows 0 missing-alt errors |
| Low | Homepage has two <h1> tags ("New Jersey & New York's Trusted Painters" and "A comprehensive set of services"); all other sampled pages have exactly one |
A page should expose one primary heading; a second H1 muddies the document outline for both screen readers and search engines | Change the second homepage H1 to an H2 | Clearer document outline | View-source confirms one H1 per page |
| Not verified | Color contrast ratios, keyboard navigation/focus order, and interactive element labeling | These require testing a rendered page (e.g. axe DevTools or a Lighthouse accessibility run in a real browser), not static HTML | — | — | Run an automated accessibility audit against the live, rendered site |
Data/access needed for a deeper audit
| Access | What it would confirm |
|---|---|
| Google Search Console | Real indexation counts across the 72 sitemap URLs, sitemap error log, Core Web Vitals (field data), search queries and rankings, manual actions |
| Google Analytics 4 | Traffic by page, bounce/engagement rate on the template pages, conversion rate on the request-a-quote and contact pages |
| Webflow Admin access | Direct page deletion/unpublishing, confirming the canonical and 301 setup, checking image-compression and lazy-load settings site-wide, editing the shared Navbar symbol |
| CDN/hosting details | Full cache-control policy beyond what Cloudflare's public headers show (already confirmed: gzip + CDN caching active) |
| Target keywords/markets | Which NJ/NY towns are priority service areas, and a competitor list — needed to prioritize the location-landing-page and service-page-depth recommendations above |
Scope, method, and what could not be verified
Everything above comes from direct, unauthenticated requests to the public site: raw HTML, HTTP headers, and every URL listed in sitemap.xml (see the appendix below), plus manual inspection of meta tags, headings, images, links, and text on the homepage, About, Services, three service pages, both linked contact pages, Request a Quote, Team, one project page, one blog post, and the checkout/product template pages. No Webflow login, no publishing, no form submissions, and no site changes were made at any point.
Two things this audit could not produce, and why:
- Core Web Vitals (LCP, INP, CLS) — the public PageSpeed Insights API returned a quota-exceeded error; no lab or field CWV numbers are reported here, invented, or estimated.
- Rankings, indexation status, traffic, and conversion data — these live in Search Console and GA4, neither of which this audit had access to.
All page-weight, request-count, caching, compression, and script-loading observations were derived from the raw HTML and response headers of the pages fetched, not from a rendered-browser waterfall.
Appendix: Sitemap URL audit (72 URLs checked)
| Status | URL | Note |
|---|---|---|
| 200 | https://solarapainting.com | Real homepage |
| 404 | https://solarapainting.com/home-pages/home-v1 | Broken sitemap entry |
| 200 | https://solarapainting.com/template-pages/changelog | Unedited template page |
| 200 | https://solarapainting.com/checkout | Unedited template page (ecommerce checkout, not used) |
| 200 | https://solarapainting.com/extra-element-pages/footers | Unedited template page |
| 200 | https://solarapainting.com/extra-element-pages/headers | Unedited template page |
| 200 | https://solarapainting.com/template-pages/licenses | Unedited template page |
| 200 | https://solarapainting.com/order-confirmation | Unedited template page |
| 200 | https://solarapainting.com/paypal-checkout | Unedited template page |
| 200 | https://solarapainting.com/search | Unedited template page |
| 200 | https://solarapainting.com/template-pages/start-here | Unedited template page |
| 200 | https://solarapainting.com/template-pages/style-guide | Unedited template page |
| 200 | https://solarapainting.com/extra-element-pages/top-notification-bars | Unedited template page |
| 200 | https://solarapainting.com/about | Real page (has stray "Buy template" nav link) |
| 200 | https://solarapainting.com/home-pages/home-v2 | Unedited template page |
| 200 | https://solarapainting.com/home-pages/home-v3 | Unedited template page |
| 200 | https://solarapainting.com/blog-pages/blog-v1 | Unedited template page |
| 200 | https://solarapainting.com/blog-pages/blog-v2 | Unedited template page |
| 200 | https://solarapainting.com/blog-pages/blog-v3 | Unedited template page |
| 200 | https://solarapainting.com/services | Real page |
| 200 | https://solarapainting.com/projects | Template page |
| 200 | https://solarapainting.com/our-products | Unedited template page ("Shop - Construcfy X") |
| 200 | https://solarapainting.com/contact-pages/contact-v1 | Real, linked contact page (has stray "Buy template" nav link) |
| 200 | https://solarapainting.com/contact-pages/contact-v2 | Unedited template page |
| 200 | https://solarapainting.com/contact-pages/contact-v3 | Template page |
| 200 | https://solarapainting.com/team | Unedited template page (fake staff) |
| 200 | https://solarapainting.com/coming-soon | Unedited template page |
| 200 | https://solarapainting.com/request-a-quote | Unedited template page ("Construcfy X" branding) |
| 200 | https://solarapainting.com/terms-of-service | Real/generic legal page |
| 200 | https://solarapainting.com/privacy-policy | Real/generic legal page |
| 200 | https://solarapainting.com/blog-category/construction | Template category |
| 200 | https://solarapainting.com/blog-category/design | Template category |
| 200 | https://solarapainting.com/blog-category/remodeling | Template category |
| 200 | https://solarapainting.com/product/exterior-design | Unedited template product |
| 200 | https://solarapainting.com/product/general-construction | Unedited template product |
| 200 | https://solarapainting.com/product/interior-design | Unedited template product |
| 200 | https://solarapainting.com/product/project-management | Unedited template product |
| 200 | https://solarapainting.com/product/project-planning | Unedited template product |
| 200 | https://solarapainting.com/product/space-planning | Unedited template product |
| 200 | https://solarapainting.com/category/general-construction | Template category |
| 200 | https://solarapainting.com/category/project-planning | Template category |
| 200 | https://solarapainting.com/category/remodeling | Template category |
| 200 | https://solarapainting.com/blog/12-designers-tricks-for-picking-the-perfect-home-color-palette | Stock template blog post |
| 200 | https://solarapainting.com/blog/15-mind-blowing-floor-designs-to-make-your-home-look-great | Stock template blog post |
| 200 | https://solarapainting.com/blog/25-color-trends-designers-cant-wait-to-see-in-2023 | Stock template blog post (Lorem ipsum meta) |
| 200 | https://solarapainting.com/blog/clever-diy-home-improvements-you-can-do-during-the-pandemic | Stock template blog post |
| 200 | https://solarapainting.com/blog/front-door-design-ideas-6-great-concepts-for-your-home | Stock template blog post |
| 200 | https://solarapainting.com/blog/how-to-give-maintenance-to-your-wooden-floor-the-full-guide | Stock template blog post |
| 200 | https://solarapainting.com/team/andy-smith | Fake team member (template) |
| 200 | https://solarapainting.com/team/john-carter | Fake team member (template) |
| 200 | https://solarapainting.com/team/lilly-woods | Fake team member (template) |
| 200 | https://solarapainting.com/team/matt-cannon | Fake team member (template) |
| 200 | https://solarapainting.com/team/patrick-meyer | Fake team member (template) |
| 200 | https://solarapainting.com/team/sophie-moore | Fake team member (template) |
| 200 | https://solarapainting.com/project/building-construction-in-los-angeles-ca | Fake project, wrong location (LA) |
| 200 | https://solarapainting.com/project/home-construction-in-malibu-beach-ca | Fake project, wrong location (Malibu) |
| 200 | https://solarapainting.com/project/house-extension-in-los-angeles-ca | Fake project, wrong location (LA) |
| 200 | https://solarapainting.com/project/interior-remodeling-in-malibu-beach-ca | Fake project, wrong location (Malibu) |
| 200 | https://solarapainting.com/project/kitchen-remodeling-in-hollywood-hills-ca | Fake project, wrong location (Hollywood Hills) |
| 200 | https://solarapainting.com/project/office-remodeling-in-hollywood-hills-ca | Fake project, wrong location (Hollywood Hills) |
| 200 | https://solarapainting.com/service/cabinet-painting | Real service page (linked in nav) |
| 200 | https://solarapainting.com/service/commercial-painting | Real service page (linked in nav) |
| 200 | https://solarapainting.com/service/drywall-repair | Real service page (linked in nav) |
| 200 | https://solarapainting.com/service/exterior-painting | Real service page (linked in nav) |
| 200 | https://solarapainting.com/service/interior-painting | Real service page (linked in nav) |
| 200 | https://solarapainting.com/service/pressure-washing | Real service page (linked in nav) |
| 200 | https://solarapainting.com/service/residential-painting-w335o | Real service page; unedited auto-generated slug suffix |
| 200 | https://solarapainting.com/service/trim-painting | Real service page (linked in nav) |
| 200 | https://solarapainting.com/service/water-damage-repair | Real service page (linked in nav) |
| 200 | https://solarapainting.com/projects-category/general-construction | Template category |
| 200 | https://solarapainting.com/projects-category/project-planning | Template category |
| 200 | https://solarapainting.com/projects-category/remodeling | Template category |