SEO Audit 10 May 2026

Combo Camps

combocamps.com
Whistler, BC
Squarespace
Kids day-camp operator
778-793-9199
31
out of 100
Grade F

Audit Summary

Combo Camps offers kids day camps in Whistler. The site is reachable, served over HTTPS, has a published sitemap, and links Facebook and Instagram from the footer. A phone number, an email address, and a Whistler postal address are all visible in the rendered HTML.

The remaining issues stem from Squarespace platform limitations rather than from any lack of SEO effort. Squarespace ships robots.txt with every major AI crawler blocked by default. Squarespace's password-gate widget injects <h1>Enter Password</h1> into the static HTML of every page across the site, including the homepage and the About page — a platform behaviour that cannot be overridden through normal page settings. The LocalBusiness JSON-LD Squarespace emits is a near-empty stub with no name, address, phone or geo. Lighthouse mobile measured Largest Contentful Paint at 13.3 seconds, driven primarily by Squarespace's render-blocking platform CSS bundle, which is not configurable from inside the editor.

A focused two-week effort across Sprint 1 and Sprint 2 lifts the score from 31 to approximately 62 — the realistic ceiling within Squarespace's platform constraints. Reaching 75+ requires the planned migration to a file-based site with a custom backend, which removes the platform-bound LCP, schema, H1-injection and AI-crawler limits in one move, combined with the content, schema and authority work in Sprints 3 and 4.

Technical SEO 42
Weight: 22%
Content Quality & E-E-A-T 41
Weight: 23%
On-Page SEO (SXO) 29
Weight: 20%
Schema / Structured Data 8
Weight: 10%
Performance (CWV) 22
Weight: 10%
AI Search Readiness 6
Weight: 10%
Images & Visual 60
Weight: 5%
Local SEO 19
Supplementary
Sitemap & Architecture 48
Supplementary
E-E-A-T Assessment
Experience, Expertise, Authoritativeness, Trustworthiness. Combined score 41/100.
Experience 10 / 20

The /testimonials page contains eight named, attributed parent reviews with specific outcomes ("my son came home covered in mud and grinning") — strong first-hand experience signal. The same content carries no Review schema, so the signal is wasted on machine readers. There are no parent guides, no day-in-the-life narratives, and no first-person staff content.

Expertise 5 / 25

Bio pages exist for four staff (Jamie, Olly, Jane, Chloe), but their content is shallow and they are not linked from any program page. Coaching credentials, first-aid certifications, and child-safety qualifications — the things parents check before booking — are not declared. Google's September 2025 Quality Rater Guidelines now require demonstrated expertise to be attached to identifiable individuals on commercial pages. They are not.

Authoritativeness 8 / 25

No press citations. No Tourism Whistler directory entry. No accreditation badges (BC Camping Association, the Canadian Camping Association). No Wikidata entity. The /parents-hub/certifications page implies certifications exist; they are not surfaced as named bodies with verifiable links. Facebook and Instagram are linked in the footer but not declared in the schema sameAs property.

Trustworthiness 18 / 30

A privacy policy and cancellation policy are published. The cookie policy exists. NAP is internally consistent where it appears. The trust collapse is the WINTER 2022/2023 H1 still rendering on the live winter pricing page in May 2026, the /covid19 page still being indexed, and the Squarespace template names ("General 1", "Reviews 1", "Gallery 3") leaking into <title> tags on five pages.

Local Service Search in 2026
Why structured data and AI surfacing now decide whether parents find you

Current Foundations

The website is reachable and indexable. HTTPS is active. The Squarespace CDN is healthy with 24-hour cache age. A sitemap is published at /sitemap.xml with 61 URLs. The site ranks for the brand name "Combo Camps" in Google. The CampBrain registration system is integrated. Facebook and Instagram profiles exist and are linked from the footer.

What Has Changed in Local Service Search

Three changes in how parents find local activity providers since this site was last meaningfully reviewed affect the recommended work below.

First, Google leads almost every "[activity] camp [city]" query with a Map Pack. The Google Business Profile, not the website, is the primary surface a parent first sees. Second, AI assistants (Google AI Overviews, ChatGPT, Perplexity) now answer queries like "best summer camps in Whistler for 7 year olds" inline, and they require structured data (LocalBusiness, Event, AggregateRating, FAQPage) before they will reliably name a specific provider. Third, parents shortlist from a phone in 30 seconds: ages, dates, price, and a "book now" link have to be visible above the fold or the page is rejected.

The recommended work falls into two tracks:

•  AI Search Readiness: unblock the AI crawlers that Squarespace blocks by default; deploy the LocalBusiness, Event, FAQPage, and Review schema currently absent or empty; publish an llms.txt; populate sameAs with the existing social profiles.

•  Google Search Improvements: remove the password-gate widget that injects "Enter Password" as the first H1 on every page; write 18 missing meta descriptions; refresh the WINTER 2022/2023 page; fix the broken /springprogram nav link; rationalise titles to include Whistler.

The two tracks share most of their underlying work. Schema contributes to both Google rich results and AI citation. Removing the password-widget H1 leak fixes the on-page H1 problem and the schema-rendering problem in one change. Unblocking AI crawlers is one toggle in the Squarespace robots.txt editor.

Critical & High Issues
Issues blocking or significantly impacting rankings and AI visibility
Squarespace password-gate widget injects <h1>Enter Password</h1> on every page Critical
A site-wide password-gate widget renders <h1>Enter Password</h1> directly into the static HTML of all 18 pages crawled, including the homepage, the About page, every program page, and every pricing page. JavaScript hides the visual overlay on most pages but the H1 stays in the DOM. Googlebot reads it as the first H1 on every page. The visual content underneath is hidden from crawlers entirely on About, Gallery, and Parents Hub.

This single bug simultaneously breaks: Technical SEO (multiple H1s per page), Content Quality (the founder origin story on /about-1 is invisible to Google), SXO (the wrong H1 is prioritised), and Local SEO (key business information sits behind the gate).
How to fix (30 minutes to 2 hours)
Identify the code-injection block or third-party widget that renders the password form. Either remove it entirely (if no pages should be password-protected) or scope it to specific URL paths only. If individual pages must remain protected, use Squarespace's built-in page-level password feature instead — that does not leak an H1 globally.
robots.txt blocks every major AI crawler Critical
Squarespace's default robots.txt applies a Disallow: / rule to every major AI crawler: GPTBot, ClaudeBot, anthropic-ai, OAI-SearchBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, plus 20 others. The site is invisible to AI search by default.

This is not a deliberate decision by the site owner. It is a platform default that has not been overridden. For "best summer camps Whistler", "kids day camp Whistler village" and similar tourist-intent queries — exactly the queries AI engines now answer inline — Combo Camps cannot be cited at all.

Platform-by-platform GEO score: Google AIO 4/100, ChatGPT 3/100, Perplexity 3/100, Bing Copilot 5/100.
How to fix (5 minutes)
Squarespace Settings > Developer Tools > robots.txt editor. Remove the AI-crawler block lines. Keep the legitimate Squarespace junk-path disallows (/config, /api/, /static/, ?author=, ?format=json, etc.) — those are valid.
Every meta description is empty across all 18 pages crawled Critical
Every page sampled — homepage, About, Summer/Fall/Winter Programs, Pricing, FAQs, Apply, Testimonials, Gallery, Parents Hub, Leadership, Adult/Family, Club Programs, Kiddy Summer, all three pricing pages — emits <meta name="description" content=""/>. Empty.

Google has to autogenerate snippets, and on the homepage the only content it has to work with is the tagline "THE BEST DAY EVER" — which contains no decision-relevant information. SERP click-through rates suffer accordingly.
How to fix (~10 min per page, 2-3 hours total)
Lead with the parent's question (price, age, dates, location) and end with a verb. Examples:
• Homepage: "Whistler day camps for ages 5–13. Action sports, art, leadership programs. Summer 2026 dates from $735. Book your spot today."
• /summerprograms: "Summer 2026 day camps in Whistler — biking, skating, climbing, art. Ages 5–13. June 15–Aug 28 from $735/week. See dates and pricing."
• /faqs: "Common questions about Combo Camps day programs in Whistler — what to bring, age groups, refund policy, drop-off times, and more."
Winter pricing page H1 still reads "WINTER 2022/2023" in May 2026 Critical
The H1 on /winterpricesdates reads WINTER 2022/2023. The audit was run in May 2026 — the dates on this commercial pricing page are four years out of date.

A returning parent checking next winter's availability sees abandoned data, assumes the business is no longer running winter camps, and leaves. AI engines decline to cite contradictory or stale dates. The page also signals to Googlebot that this section of the site is no longer maintained, depressing freshness signals across /winter* URLs.
How to fix (5 minutes)
Edit the H1 to current season ("WINTER 2026/2027" or "WINTER 2025/2026", whichever is the next sale window). Refresh dates and prices in the page body. If winter dates are not yet announced, replace the page body with "Winter 2026/2027 dates announced [month]" rather than leaving 2022 visible.
LocalBusiness JSON-LD has no name, address, phone, or geo Critical
The LocalBusiness JSON-LD block currently emitted is essentially empty: only an image field and "openingHours": "" (a literal empty string). Name, address, telephone, geo, priceRange, and sameAs are all absent.

All of the underlying NAP information is present in the rendered page (4500 Northlands Blvd, Whistler BC V8E 1C7; 778-793-9199; info@combocamps.com; Facebook and Instagram profiles in the footer). None of it is exposed to crawlers in machine-readable form. For a Whistler-area business attempting to surface in the Map Pack and AI Overviews, this is the single largest gap identified.
How to fix (30 minutes)
Squarespace Settings > Advanced > Code Injection > Header. Paste a multi-type ["LocalBusiness","SportsActivityLocation","Organization"] entity with name, address (PostalAddress), geo (50.115, -122.954), telephone, email, openingHoursSpecification, priceRange, sameAs (Facebook + Instagram), founder (Jamie Grant). The full ready-to-paste block is in agent-schema.md. Verify with Google's Rich Results Test.
Largest Contentful Paint is 13.3 seconds on mobile (Lighthouse) Critical
Lighthouse mobile measured: LCP 13.3s (FAIL), FCP 6.7s (FAIL), CLS 0.00 (PASS), TBT 130ms (PASS). The element-render-delay of the LCP itself is 1,912 ms — the dominant cost.

Drivers, in order of magnitude:
• Squarespace platform site.css blocks for 3,207 ms (111 KB)
• Google Fonts 3-hop waterfall blocks for 834 ms
• 379 KB of unused JavaScript (Squarespace bundle plus Meta Pixel)
• 6 oversized images served at 750×500 displayed at ~635×423, no explicit width/height attributes

The Squarespace platform CSS blocking is structural and not fully recoverable. Realistic ceiling after every available optimisation is ~11.5s LCP — still failing, but the gap moves the page out of "abandoned" territory.
How to fix (~3 hours total)
1. Self-host the Google Fonts files in the Squarespace asset library; add @font-face with font-display: swap in code injection; remove the fonts.googleapis.com link. Saves ~834 ms.
2. Defer Meta Pixel until window.addEventListener('load', ...). Saves 34 KB from the critical path.
3. Resize the 6 oversized homepage images and add explicit width/height attributes.
4. Confirm Squarespace's WebP delivery is enabled (Settings > Developer Tools).
/springprogram is linked from the homepage navigation but returns 404 Critical
The homepage navigation includes a link to /springprogram. The actual page lives at /kiddycombo/springprogram. The advertised path returns HTTP 404 with no redirect.

Every visitor who clicks Spring in the nav lands on a 404. Googlebot follows the same link and records a 404 against an internal nav target — a strong negative quality signal for an e-commerce-style local site.
How to fix (5 minutes)
Update the homepage nav link from /springprogram to /kiddycombo/springprogram. If the spring program is not currently running, hide the nav item entirely. Add a 301 redirect from /springprogram to the canonical path so any external links to the legacy URL also work.
HSTS is effectively disabled (max-age=0) High
The HTTP response carries strict-transport-security: max-age=0. This is technically a header, but with a max-age of zero it instructs browsers to forget any previous HSTS commitment immediately. The site has effectively no HSTS protection.

Squarespace also does not surface CSP, X-Frame-Options, or Permissions-Policy on the response. Those three are platform-bound and only fixable by routing the domain through a reverse proxy such as Cloudflare. HSTS is the one that is fixable inside Squarespace.
How to fix (5 minutes)
Squarespace Settings > Domains > (your domain) > Advanced Settings > toggle HSTS on. Verify with curl -sSI https://www.combocamps.com/ | grep -i strict — the response should carry a positive max-age value.
og:image and twitter:image use http:// (mixed-content fail on socials) High
Both the Open Graph image and the Twitter Card image are declared as http://static1.squarespace.com/.... Facebook, LinkedIn, and Apple Messages block insecure image URLs from HTTPS pages. The result is a broken or missing preview when anyone shares a Combo Camps page on social.

The image is also the logo (a 335×198 PNG), not a hero image. Even when the URL is fixed, the preview will be a small logo in a large grey card, not a photo of children at camp — which is the real conversion driver in this category.
How to fix (15 minutes)
Squarespace Marketing > SEO > Social Sharing Logo. Upload a 1200×630 photo of children at a camp activity (a smiling group, not a logo). Squarespace will serve it as https:// automatically. Set twitter:card to summary_large_image in code injection so the photo renders at full width on X/Twitter.
Squarespace template names leaking into <title> on five pages High
Five live page titles still use Squarespace template defaults instead of real titles:

/leadership: "General 1 — Combo Camps"
/kiddysummer: "General 1 — Combo Camps"
/testimonials: "Reviews 1 — Combo Camps"
/gallery: "Gallery 3 — Combo Camps"
/apply: "Combo Camps — Combo Camps" (brand name twice)

These appear in Google's SERP exactly as written. They contain no keywords and no value proposition. The /apply title in particular is a transactional page where title-tag clarity directly affects conversion.
How to fix (~30 minutes)
For each page in Squarespace, edit Page Settings > SEO Title. Use the format [Topic + geo modifier] | Combo Camps Whistler, max ~60 characters. Examples:
• /leadership: Leadership Camp for Teens (Ages 13–17) | Combo Camps Whistler
• /testimonials: What Parents Say About Combo Camps | Whistler Reviews
• /apply: Apply for Summer 2026 Camps | Combo Camps Whistler
Zero of 18 page titles contain a geo keyword High
Not one of the 18 page titles sampled mentions Whistler, BC, or any geographic identifier. For a local-service business operating in a high-volume tourist destination, this is the single most consequential on-page omission.

Parents searching "kids day camp whistler", "whistler summer camp", or "spring break camp whistler village" need to see "Whistler" in the SERP title or they scroll past. Tourist-intent searches in particular weight geo-match heavily because parents are filtering for "while we're up the mountain" timing.
How to fix (~1 hour for titles, ~3 hours for the location page)
1. Add "Whistler" to the title of every existing program and pricing page. Format: [Topic] | Combo Camps Whistler.
2. Build a richer /find-us/ or /location/ page with the venue address, an embedded Google Map, parking and drop-off instructions, the route from Whistler Village, and a "what to expect on the first morning" section.
No FAQPage, Review, or Event schema anywhere on the site High
The /faqs page contains well-organised Q&A across multiple sections — the canonical use case for FAQPage schema — and emits zero structured data. The /testimonials page contains eight named, attributed parent reviews with no Review or AggregateRating wrapping. Each program page (Summer, Fall, Winter, Kiddy Summer, Leadership) lists real dates and prices with no Event schema.

FAQPage rich-result eligibility is now restricted to government and health sites in Google's documentation, but the markup remains the single highest-leverage signal for AI Overview citation. Review/AggregateRating is the primary signal Google uses for star ratings in the Map Pack. Event schema is required for the dates panel.
How to fix (~3 hours total)
Per-page header injection in Squarespace. Nine ready-to-paste JSON-LD blocks are pre-written in agent-schema.md: FAQPage from the seven /faqs Q&As, AggregateRating + four Reviews from the testimonials page, Summer 2026 Event with two Offer tiers, Fall 2025 Event, BreadcrumbList template for inner pages, Person schema for Jamie Grant.
No /llms.txt, no Wikidata entity, no AI grounding signals High
/llms.txt returns 404. There is no curated entity summary for AI systems. Combined with the missing LocalBusiness schema fields and empty sameAs, AI engines have no canonical entity record to ground claims against. Wikidata also has no entry for "Combo Camps" — a low-cost, high-leverage AI grounding signal that does not require Wikipedia notability.

For tourist queries such as "best kids camps Whistler", "summer camp whistler village", "winter break camp BC" — exactly the queries AI engines now answer inline — Combo Camps is missing from every grounding source AI engines consult.
How to fix (~1 hour combined)
1. Publish /llms.txt at the site root. Markdown sections: Entity summary · Programs · Location (Whistler) · Pricing · Booking · Contact. A draft is in agent-geo.md.
2. Create a Wikidata Q-ID. Properties: P31 summer camp, P131 Whistler, P625 50.115/-122.954, P856 https://www.combocamps.com.
3. Once the AI crawler block is removed and the schema is in place, both ChatGPT and Perplexity should index within 2–6 weeks.
No GBP signals on the site (no sameAs, no Maps embed, no AggregateRating) High
There is no Google Maps embed on any page. No sameAs property points to a Google Business Profile. No AggregateRating widget surfaces real review data. The site provides no on-page evidence that a GBP listing exists at all.

The Map Pack is the primary surface a Whistler tourist sees when searching local activities. If the GBP exists, the website does not reinforce it. If it does not exist, that is itself the single highest-ROI fix in the local SEO category.
How to fix (1–2 hours)
1. Verify a Google Business Profile exists for Combo Camps at the Whistler address; create one if not.
2. Add the GBP URL to the sameAs array in the LocalBusiness schema.
3. Embed a Google Maps iframe on /find-us (or equivalent) and on the footer.
4. Add a review-pull widget that surfaces live Google reviews on the homepage and /testimonials.
Sitemap problems: /home in place of /, stale lastmod, /covid19 still indexed Medium
The Squarespace-generated sitemap has 61 URLs but several structural issues:

• The root / is absent; /home is in its place — backwards.
/covid19 and /parents-hub/covid19policy last updated 2022 are still in the sitemap in 2026.
• 30 of 61 entries carry lastmod dates from 2021. The last bios update was 2024-06-07.
/applicationcomplete (a thank-you confirmation page) is indexed and in the sitemap.
• Internal staff pages (/managerapply, /programmanager) appear in the sitemap when they should be noindex.
/faq (linked from the footer) and /faqs (in the sitemap) are split — they need a 301 to one canonical.
priority and changefreq are populated on every entry. Google has ignored both since 2023.
How to fix (~1 hour)
Confirm Squarespace's "Use as homepage" is set on / not /home. Delete /covid19 and /parents-hub/covid19policy with 301 redirects to /parents-hub. Set /applicationcomplete, /managerapply, /programmanager to noindex in Page Settings. Pick one canonical for /faq vs /faqs and 301 the other. Refresh lastmod across the rest of the site by republishing edited pages.
No content programme — zero blog, zero parent guides, no topical authority Medium
The site has no blog, no parent guides, no day-in-the-life narratives, no packing lists, no "what to expect on day one" content. The 18 indexed pages are all commercial: programs, prices, apply, contact, FAQs.

Long-tail capture ("what to pack for whistler summer camp", "do kids need to know how to bike", "spring break camp vs day care") is entirely uncaptured. AI engines reward sites that publish answer-shaped content; this site has the answers (the FAQs page is good) but no answer-shaped pages designed for citation.

Topical authority compounds. Competitors who publish six Whistler-specific camp guides per year build linkable assets and long-tail traffic; Combo Camps does not.
How to fix (~12-15 hours for first 6 posts)
Publish six evergreen articles, 1,200–1,800 words each, optimised for parent-intent long-tail queries. Suggested titles: Whistler Summer Camp Packing List for Ages 5–10 · What to Look For in a Kids' Day Camp: A Parent's Checklist · Spring Break Camp vs Day Care: Which Is Right for Your Child? · How Combo Camps Groups Children by Skill, Not Just Age · A Parent's First-Day Drop-Off Guide for Whistler Camps · When Should Kids Start Mountain Biking? A Whistler Coach's View.
SXO persona scoring: returning customers score the page 11/100 Medium
The page-type mismatch is the fundamental SXO problem. Parents searching "kids summer camps whistler" expect a commercial landing page with price, age range, dates, and a booking CTA visible on arrival. Combo Camps delivers a brand hub whose hero says "THE BEST DAY EVER" and whose first H1 in the DOM is "Enter Password".

Three persona scores from the SXO subagent:
Returning customer checking dates: 11/100 — sees December 2021 dates on the winter page, abandons.
New parent from search: 16/100 — no orientation, no price/age/dates above the fold, no clear "what is this".
Comparing parent (multiple tabs open): 16/100 — no single page summarises price + age + activity + booking path.
How to fix (~3 hours)
Add a four-cell summary card above the fold on every program page: Ages | Dates | Price | Book. Make the booking CTA visible without a scroll. Replace the homepage tagline hero with a card that contains the four cells plus a one-line "what we do, where, for whom" paragraph.
Action Plan
Four sprints to lift the score from 31 to approximately 90
1
Sprint 1: Immediate fixes
Approximately 1 day · Score impact: 31 to 50
Remove or scope the password-gate widget
Stops "Enter Password" from appearing as the first H1 on every page. Single largest score-impact fix in the audit.
30 min – 2 hrCritical impact
Unblock AI crawlers in robots.txt
Squarespace Settings > Developer Tools > robots.txt editor. Remove the AI-bot Disallow rules; keep the Squarespace junk-path disallows.
5 minHigh impact
Update the WINTER 2022/2023 H1 on /winterpricesdates
Refresh to current season. If next winter is not yet announced, replace with a "Winter 2026/2027 dates announced [month]" placeholder.
5 minHigh impact
Fix the broken /springprogram nav link
Update homepage nav to point to /kiddycombo/springprogram. Add a 301 from /springprogram so old external links also work.
5 minMedium impact
Enable HSTS in Squarespace Domain settings
Currently strict-transport-security: max-age=0 — effectively off. One toggle.
5 minMedium impact
Replace the 335×198 logo OG image with a 1200×630 photo
Children-at-camp photograph, served over HTTPS automatically by Squarespace. Set twitter:card to summary_large_image.
15 minMedium impact
Fix the five Squarespace-template-name page titles
/leadership, /kiddysummer, /testimonials, /gallery, /apply — all carry default template names. Format: [Topic + geo] | Combo Camps Whistler.
30 minHigh impact
Noindex /applicationcomplete, /managerapply, /programmanager
Internal staff pages and the form thank-you should not be indexed. Remove from sitemap after noindex is applied.
10 minLow impact
2
Sprint 2: Schema, meta descriptions, AI surfacing
Approximately 3 days · Score impact: 50 to 62
Deploy the full LocalBusiness/SportsActivityLocation schema
Multi-type entity with name, address (4500 Northlands Blvd, Whistler), geo (50.115, -122.954), telephone, openingHoursSpecification, priceRange, sameAs (Facebook + Instagram), founder Jamie Grant. Header injection.
30 minCritical impact
Write 18 meta descriptions
~10 min per page. Lead with the parent's question (price, age, dates, location); end with a verb. Templates in agent-content.md.
2-3 hoursHigh impact
Deploy FAQPage schema on /faqs
Seven Q&As already on the page. Block is pre-written in agent-schema.md — paste into per-page header injection.
30 minHigh impact
Deploy AggregateRating + Review schema on /testimonials
Activates eight currently-wasted attributed parent testimonials as authority signal. Conservative ratingCount of 12 until verified GBP review count is sourced.
30 minHigh impact
Add Event schema to summer/fall/winter program pages
Real dates, real prices ($735 Summer Multi-Day, etc.), real age range (5–13), real venue (Whistler). Eligibility for Google's Events panel.
2 hoursHigh impact
Publish /llms.txt
Curated entity summary, programs, locations, pricing, booking, contact. Markdown. Squarespace serves files at root via Code Injection.
1 hourHigh impact
Create a Wikidata Q-ID for entity grounding
No Wikipedia notability required. Properties: P31 summer camp, P131 Whistler, P625 coordinates, P856 official site.
1 hourMedium impact
Sitemap cleanup
Get / into the sitemap (not /home). Drop /covid19, /applicationcomplete, /managerapply, /programmanager. Resolve /faq vs /faqs with a 301.
1 hourMedium impact
3
Sprint 3: Content, coverage, performance
Approximately 2 weeks · Score impact: 62 to 75
Build a richer /find-us/ or /location/ page
Venue address, embedded Google Map of the Whistler meeting point, parking and drop-off instructions, route from Whistler Village, photos of the first-morning meeting spot. Strong local-SEO signal and parent-trust builder.
3 hoursHigh impact
Add ages/dates/price/book summary blocks above the fold on every program page
Lifts the SXO persona scores from 11–16/100 toward 50+. Four-cell card, no scroll required.
3 hoursHigh impact
Self-host Google Fonts
Saves ~834 ms of LCP. Upload woff2 files to Squarespace asset library; add @font-face with font-display: swap in code injection; remove the fonts.googleapis.com link.
1 hourHigh impact
Defer Meta Pixel until window load
Removes 34 KB from the critical path. Wrap the loader in window.addEventListener('load', ...).
15 minMedium impact
Image optimisation pass
Resize the 6 oversized homepage images. Add explicit width/height. Verify Squarespace's WebP delivery is enabled.
2 hoursMedium impact
Embed Google Maps on /find-us and footer
Plus a Google reviews widget on the homepage and /testimonials. Adds GBP signal that the site currently lacks entirely.
1 hourMedium impact
Submit to Tourism Whistler and Whistler Chamber directories
Highest-ROI Whistler-specific citations. Both authoritative, both tourist-intent aligned.
2 hoursMedium impact
Surface staff certifications on bio pages
First-aid, child-safety, mountain-biking, ski/snowboard instructor — whatever applies to each staff member. Add Person schema with sameAs to LinkedIn or governing-body profiles.
3 hoursMedium impact
4
Sprint 4: Content programme and authority
Approximately 4 weeks · Score impact: 75 to 90
Publish six evergreen parent guides
Whistler packing list · Day-camp parent's checklist · Spring break vs day care · Skill-based age grouping · First-day drop-off guide · When should kids start mountain biking. 1,200–1,800 words each.
12-15 hoursHigh impact
Press outreach: Pique Newsmagazine, Mountain Life, Whistler Insider
Pitch the founder story (Jamie Grant) and any seasonal angles. Local press citations are the fastest authority builder for a Whistler business.
3 daysMedium impact
Apple Business Connect, Bing Places, Foursquare
Apple Maps reaches every iPhone tourist; Bing Places feeds Copilot; Foursquare seeds many secondary directories.
2 hoursMedium impact
(Optional) Cloudflare in front of Squarespace for security headers
Adds CSP, X-Frame-Options, Permissions-Policy that Squarespace cannot set natively. Half-day project.
half dayLow impact
Quarterly sitemap refresh + drift baseline
Republish edited pages each quarter so lastmod stays current. Capture an SEO drift baseline once the cleanup is done so future regressions are caught.
recurringLow impact
Today
31
Grade F
After Sprint 1
50
+19
After Sprint 2
62
+31
After Sprint 3
75
+44

Summary

Combo Camps is a real, operating Whistler day-camp business with a Squarespace site that ships in a non-SEO-optimised state by default. The fundamentals — HTTPS, sitemap, sub-second TTFB, an existing brand and social presence, a real address and phone — are intact. What is missing is the layer of structured data, current content, named individuals, accurate H1s, and AI-crawler access that Google and AI engines now use to identify and rank a local service business.

Sprint 1 lifts the score by 19 points and clears the most damaging signals from the live site. Sprint 2 deploys the schema and AI surfacing that drive the largest visibility gains. By the end of Sprint 3 the site is in genuine shape to compete for parent intent in the Whistler tourist market. The single highest-ROI fix in the audit, by impact-per-hour, is removing the password-gate widget that injects "Enter Password" as the first H1 on every page.