<?xml version="1.0" encoding="UTF-8"?>
<!--
  Keystone Sites sitemap.

  Trailing-slash strategy: every URL here ends in "/" and every canonical tag
  in the HTML matches. Cloudflare Pages serves /services/index.html at
  /services/ and 308-redirects /services → /services/, so this is the form
  that resolves without a redirect hop.

  One page is intentionally omitted: /thanks/, a post-submission confirmation
  with no standalone search value. It carries
  <meta name="robots" content="noindex, follow">.

  The portfolio lives on /work/ as cards with #anchors, not separate pages,
  so there is nothing extra to list. Bump /work/'s <lastmod> when a project
  is added or re-measured.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>https://www.keystonesites.ca/</loc>
    <lastmod>2026-10-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>

  <url>
    <loc>https://www.keystonesites.ca/services/</loc>
    <lastmod>2026-07-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://www.keystonesites.ca/pricing/</loc>
    <lastmod>2026-07-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://www.keystonesites.ca/work/</loc>
    <lastmod>2026-10-21</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://www.keystonesites.ca/about/</loc>
    <lastmod>2026-07-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://www.keystonesites.ca/contact/</loc>
    <lastmod>2026-07-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.8</priority>
  </url>

</urlset>
