Site scan

thesosgroup.ca

An automated scan of the homepage, the sitemap and a handful of key pages. Everything below came from actual fetches of this site - nothing here is estimated, and what a scan cannot see is named rather than guessed at.

Overall

96/100

Solid · fetched https://thesosgroup.ca/

Time to first byte
75 ms
HTML transferred
15 KB
What the scan found

Technical

95/100 · Solid
  • 1 blocking script in <head> with no async or defer.
  • Inconclusive: Content-Encoding was not visible to the scan, so compression could not be confirmed.

How this was measured - The homepage response, robots.txt, the XML sitemap (index plus up to five child sitemaps), and a sample of up to four junk URLs fetched to read their robots meta and X-Robots-Tag. Junk is judged by URL pattern (default posts, -old copies, author and tag archives, uncategorized archives, cart/checkout/account, thank-you pages, coming-soon and email-signature stubs, lorem ipsum and testimonial post types). A sitemap the scan could not fetch is inconclusive, not a pass. Page weight: One HTML response (plus a HEAD probe when the GET loses Content-Encoding). Transfer size is the compressed weight when Content-Encoding is visible (or a gzip estimate when that size is unknown). The uncompressed finding only fires when Content-Encoding is visible and is not gzip/br/zstd — platforms that strip encoding after decompress are treated as inconclusive, not as a fail. Uncompressed markup is reported alongside and only flagged when extreme. Scripts, images and CSS linked from the page are not downloaded.

On-page

100/100 · Solid

How this was measured - The homepage plus up to six key pages linked from its navigation (contact, about, services, locations, pricing or membership, then city or service pages). Each is checked for exactly one H1 that is more than the brand name, a title that still names a city or a service once the brand is removed, and word count. Image alt text is read on the homepage. Pages that could not be fetched are left out rather than counted as passing.

Local

100/100 · Solid

How this was measured - Cities are read from visible text on the fetched pages (addresses, '<City> location', 'locations in ...', service-area statements) and from schema addressLocality and areaServed. A dedicated city page means a URL in the sitemap or navigation whose path names the city (product, blog and archive URLs do not count). Schema is every JSON-LD block on the homepage; NAP means name, telephone, and either a matching PostalAddress street (when a street is visible on the pages) or areaServed / locality on a LocalBusiness-type node when no street is shown (service-area-only). Storefronts with a visible street still need that street in schema. This scan cannot see a Google Business Profile.

Mobilesecondary

75/100 · Workable
  • 7 images and no srcset - phones download desktop-sized files.

Conversionsecondary

80/100 · Solid
  • No online booking or scheduling link, so every lead waits on a callback.
  • Enquiry path found via link (/contact), not a form on this page.

How this was measured - One HTML response. A <form> on that page scores highest for the enquiry path; same-site contact, booking, quote or referral links, and recognised booking providers, count as a pass but the linked page itself is not fetched. Tel and mailto links are read from hrefs only.

Privacy & consentsecondary

67/100 · Workable
  • 1 tracking script (Google Tag Manager) and no consent tool detected - these load for every visitor before anyone can decline.
  • Trackers or cookies are in use but there is no cookie policy linked, so a visitor cannot find out what is set or how to refuse it.
  • 2 third-party embeds (Google Maps embed, Google Fonts) load on arrival with no consent tool - each one sends the visitor's IP address to another company before they have agreed to anything.

How this was measured - Checked by fetching the page once, server-side, without running JavaScript: which tracking scripts are in the markup, whether a consent tool is present and actually gating them, which cookies the server set on that first response, and which policy pages are linked. Cookies set later by JavaScript are not visible to this scan. These are observations about a single response, not legal advice.

What is already fine

Table stakes. They are reported here and carry almost no weight, so they cannot lift the score past a cap.

  • XML sitemap found (/sitemap.xml, 42 URLs read).
  • robots.txt present.
  • Served over HTTPS.
  • HSTS header set.
  • Canonical tag present.
  • Homepage is indexable (index, follow).
  • JSON-LD present (WebSite, SearchAction, EntryPoint, LocalBusiness, SportingGoodsStore).
  • <html lang="en">.
  • Server responded in 75 ms (first byte).
Every check
Show every check (54) with weights and evidence
CheckResultWeightWhat was found
Index hygiene (junk URLs)technical · hard failPass24No default posts, -old copies, cart/checkout, author or tag archives, stubs or lorem ipsum found in 42 sitemap URLs.
XML sitemaptechnical · floorPass2XML sitemap found (/sitemap.xml, 42 URLs read).
  • https://thesosgroup.ca/sitemap.xml
robots.txttechnical · floorPass1robots.txt present.
HTTPStechnical · floorPass2Served over HTTPS.
HSTStechnical · floorPass1HSTS header set.
Compressiontechnical · floorInconclusive2Content-Encoding was not visible to the scan, so compression could not be confirmed.
Canonical tagtechnical · floorPass2Canonical tag present.
Homepage indexabletechnical · floorPass2Homepage is indexable (index, follow).
Server response timetechnical · issuePass3Server responded in 75 ms (first byte).
HTML transfer sizetechnical · issuePass4HTML is 15 KB transferred, 111 KB uncompressed. Under 100 KB transferred is healthy.
Uncompressed markuptechnical · issuePass2Uncompressed HTML is 111 KB. Over 1 MB of markup is extreme even when the transfer compresses well.
Scripts and stylesheetstechnical · issuePass5The homepage loads 4 scripts and 2 stylesheets (111 KB HTML). Over 40 files is page-builder weight.
Render-blocking CSStechnical · issuePass32 render-blocking stylesheets in <head> - nothing paints until they load.
Blocking scriptstechnical · issueFail31 blocking script in <head> with no async or defer.
Image dimensionstechnical · issuePass20 of 7 images have no width/height, so the page shifts as they load.
Single viewport tagtechnical · minorPass11 viewport meta tags on the homepage; there should be one.
Language / localetechnical · minorPass1Language and locale are consistent with the address.
Comments feedtechnical · minorPass1No comments feed advertised.
One real H1 per key pageonpage · hard failPass22Every page checked (6) has a real H1.
  • https://thesosgroup.ca/ [H1: "TRUSTED GYM EQUIPMENT EXPERTS"]
  • https://thesosgroup.ca/contact/ [H1: "Let's Get Your Equipment Running Right"]
  • https://thesosgroup.ca/about/ [H1: "Calgary's Trusted Gym Equipment Repair Experts"]
  • https://thesosgroup.ca/services/ [H1: "Gym & Fitness Equipment Services"]
  • https://thesosgroup.ca/equipment/ [H1: "Gym Equipment & Fitness Equipment Calgary"]
  • https://thesosgroup.ca/blog/ [H1: "Gym Equipment Tips & Guides"]
No duplicate H1sonpage · minorPass2No page checked has more than one H1.
Titles name a city or serviceonpage · hard failPass16Key page titles name a city or a service.
  • https://thesosgroup.ca/contact/ [title: "Contact Us | Free Quote for Gym Equipment Repair & Sales | SOS Fitness Calgary"; ok]
  • https://thesosgroup.ca/about/ [title: "About Us | SOS Fitness Services Calgary | Authorized StairMaster & Nautilus Dealer"; ok]
  • https://thesosgroup.ca/services/ [title: "Gym Equipment Repair Services Calgary | StairMaster, Nautilus, Life Fitness | SOS"; ok]
  • https://thesosgroup.ca/equipment/ [title: "Gym Equipment Calgary | Fitness Equipment For Sale | Certified Refurbished | SOS Fitness"; ok]
  • https://thesosgroup.ca/blog/ [title: "Gym Equipment Maintenance Tips & Guides | SOS Fitness Blog"; ok]
Image alt textonpage · issuePass100 of 7 images on the homepage have empty or missing alt text.
Homepage title lengthonpage · issuePass3Title tag is 50 characters ("Gym Equipment Repair & Sales Calgary | SOS Fi…"). 15-65 reads best in results.
Meta descriptiononpage · issuePass3Meta description is 153 characters. 70-165 avoids truncation.
Content depth on key pagesonpage · issuePass4Key pages carry real copy (827, 231, 344, 493, 548, 360 words).
  • https://thesosgroup.ca/ [827 words]
  • https://thesosgroup.ca/contact/ [231 words]
  • https://thesosgroup.ca/about/ [344 words]
  • https://thesosgroup.ca/services/ [493 words]
  • https://thesosgroup.ca/equipment/ [548 words]
  • https://thesosgroup.ca/blog/ [360 words]
Structured data presentonpage · floorPass2JSON-LD present (WebSite, SearchAction, EntryPoint, LocalBusiness, SportingGoodsStore).
lang attributeonpage · floorPass1<html lang="en">.
Dedicated city / location pageslocal · hard failPass22City pages cover the service area.
  • Calgary -> https://thesosgroup.ca/buy/commercial-gym-equipment-calgary
  • Airdrie -> https://thesosgroup.ca/service-areas/airdrie
  • Okotoks -> https://thesosgroup.ca/service-areas/okotoks
  • Cochrane -> https://thesosgroup.ca/service-areas/cochrane
  • Chestermere -> https://thesosgroup.ca/service-areas/chestermere
  • High River -> https://thesosgroup.ca/service-areas/high-river
  • Edmonton -> https://thesosgroup.ca/service-areas/edmonton
Street address for every locationlocal · issuePass8Street address shown for Calgary.
  • Calgary: street address found
LocalBusiness-type schemalocal · hard failPass14Business schema found: LocalBusiness.
  • WebSite
  • SearchAction
  • EntryPoint
  • LocalBusiness
  • SportingGoodsStore
  • PostalAddress
  • GeoCoordinates
  • City
  • OpeningHoursSpecification
  • OfferCatalog
  • Offer
  • Service
  • Product
  • Brand
  • FAQPage
  • Question
  • Answer
NAP inside schemalocal · hard failPass12Schema carries name, address and a phone that matches the page.
  • visible phones: 4033127979
  • visible street: yes
  • schema node: name="SOS Fitness Services" tel="+1-403-312-7979" street="6025 4 St SE" locality="Calgary" areaServed="Calgary, Airdrie, Okotoks, Cochrane, Chestermere, High River, Edmonton"
Hours, geo and sameAs in schemalocal · issuePass4Schema carries opening hours, geo and sameAs.
Phone and address visible on the sitelocal · issuePass5Phone and street address are visible on the page.
Tap-to-call linklocal · issuePass3Tap-to-call tel: link present.
Opening hours on the pagelocal · issuePass3Opening hours appear on the pages checked.
Map link or embedlocal · minorPass2Google Maps link or embed present.
Viewport tagmobile · issuePass1Viewport tag: passed.
Pinch-zoom allowedmobile · issuePass1Pinch-zoom allowed: passed.
Responsive imagesmobile · issueFail17 images and no srcset - phones download desktop-sized files.
No Not Secure warningmobile · issuePass1No Not Secure warning: passed.
Clickable phonecvr · issuePass1Clickable phone: passed.
Enquiry pathcvr · issuePass1Enquiry path found via link (/contact), not a form on this page.
Online bookingcvr · issueFail1No online booking or scheduling link, so every lead waits on a callback.
Any way to make contactcvr · issuePass1Any way to make contact: passed.
Share previewcvr · issuePass1Share preview: passed.
Privacy check 1privacy · issueFail11 tracking script (Google Tag Manager) and no consent tool detected - these load for every visitor before anyone can decline.
Privacy check 2privacy · issuePass1Privacy check 2: passed.
Privacy check 3privacy · issuePass1Privacy check 3: passed.
Privacy check 4privacy · issuePass1Privacy check 4: passed.
Privacy check 5privacy · issueFail1Trackers or cookies are in use but there is no cookie policy linked, so a visitor cannot find out what is set or how to refuse it.
Privacy check 6privacy · issuePass1Privacy check 6: passed.
Privacy check 7privacy · issuePass1Privacy check 7: passed.
Privacy check 8privacy · issuePass1Privacy check 8: passed.
Privacy check 9privacy · issueFail12 third-party embeds (Google Maps embed, Google Fonts) load on arrival with no consent tool - each one sends the visitor's IP address to another company before they have agreed to anything.
What this scan cannot see

About twenty requests: the homepage, robots.txt, the sitemap, up to six key pages and a few sample URLs. It does not measure what real visitors experience on their own phones, it cannot check tap targets or anything that depends on rendering, and it knows nothing about a Google Business Profile, review velocity, citations or search positions. Those often decide whether a local business gets calls, and none of them are in the numbers above.

Compare

Side-by-side with another host — same checker, hard-fail deltas only, no ranking language. Curated live comparisons

If you want the rest

The half a scan cannot reach.

A thirty-minute call covers what this page could not: the profile, the pack, what the site actually ranks for, and where enquiries are being lost between the page and the phone. No deck and no pitch - if there is nothing worth fixing we say so.

Bring your site. Leave with a plan.

A free 30-minute call with the founder. We review your site and your local market, then tell you straight what will bring in more work.

  • A read of your current site and your local market
  • A straight answer: a new site, SEO, or nothing yet
  • The audit doc before the call, not after
JJ Wardorx, founder of WARDORXYou talk to JJ WardorxFounder, WARDORX · CalgaryMeet the team

Book a call · 30 min

Live availability

Times shown in your local zone.

Free 30-minute call

Book your free site review

You talk to the founder. We look at your current site and your market, then tell you straight what would bring in more work. No obligation.

Read our Google reviews

Choose your field

What kind of business do you run?

Pick yours to see how we build the site and the search work for it.