<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sportsbookie.com — Sitemap Index
  ════════════════════════════════════════════════════════════════════════════════

  SUBMIT ONLY THIS URL TO GOOGLE SEARCH CONSOLE:
    https://sportsbookie.com/sitemap.xml

  ════════════════════════════════════════════════════════════════════════════════

  Architecture:

    sitemap-pages.xml     (static, public/)
      Core pages: /, /match-previews, /teams

    sitemap-competitions.xml  (LIVE — Convex HTTP action)
      All public, indexable competition hubs. Auto-updates when a new
      competition is added to convex/competitionConfig.ts with isPublic +
      isIndexable true — no manual sitemap edit required.
      All <loc> entries use https://sportsbookie.com/...

    sitemap-teams.xml     (LIVE — Convex HTTP action)
      All indexable team pages. Auto-updates when teams are added/removed.
      All <loc> entries use https://sportsbookie.com/team/...

    sitemap-matches.xml   (LIVE — Convex HTTP action)
      All indexable match preview pages. Auto-updates after every fixture sync.
      All <loc> entries use https://sportsbookie.com/match/...

    sitemap-h2h.xml       (LIVE — Convex HTTP action)
      All eligible H2H pages (>= 3 completed tracked meetings per pair).
      Auto-updates when new completed fixtures create newly eligible pairs.
      All <loc> entries use https://sportsbookie.com/h2h/...

  ════════════════════════════════════════════════════════════════════════════════

  Hostname note:
    The competition, team, and match sitemaps are served from the Convex
    backend domain (qualified-deer-9.convex.site) because Hercules SPA
    hosting does not support server-side dynamic responses at the
    sportsbookie.com domain — only static files in public/ are served.
    Convex HTTP actions are the only dynamic route.

    Cross-origin sitemap hosting is valid per Google's sitemap spec. The sitemap
    URL may differ from the <loc> URLs inside it. Authorization is declared via:
      - robots.txt Sitemap: directives
      - the sitemap index itself referencing both domains

    All <loc> values inside both sitemaps correctly use https://sportsbookie.com/

  ════════════════════════════════════════════════════════════════════════════════
-->
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- Core pages: /, /match-previews, /teams -->
  <sitemap>
    <loc>https://sportsbookie.com/sitemap-pages.xml</loc>
    <lastmod>2026-09-02</lastmod>
  </sitemap>

  <!--
    Competition hubs — live from Convex backend.
    All <loc> entries use https://sportsbookie.com/...
    Updates automatically when a competition is added to the shared
    competitionConfig.ts registry with isPublic + isIndexable true.
    Cross-origin authorization declared in robots.txt.
  -->
  <sitemap>
    <loc>https://qualified-deer-9.convex.site/sitemap-competitions.xml</loc>
  </sitemap>

  <!--
    Team pages — live from Convex backend.
    All <loc> entries use https://sportsbookie.com/team/...
    Updates automatically when teams are added/removed from the indexable directory.
    Cross-origin authorization declared in robots.txt.
  -->
  <sitemap>
    <loc>https://qualified-deer-9.convex.site/sitemap-teams.xml</loc>
  </sitemap>

  <!--
    Match preview pages — live from Convex backend.
    All <loc> entries use https://sportsbookie.com/match/...
    Updates automatically after every fixture sync.
    Cross-origin authorization declared in robots.txt.
  -->
  <sitemap>
    <loc>https://qualified-deer-9.convex.site/sitemap-matches.xml</loc>
  </sitemap>
  <!--
    H2H pages — live from Convex backend.
    All <loc> entries use https://sportsbookie.com/h2h/...
    Includes only pairs with >= 3 completed tracked meetings.
    Updates automatically when new completed fixtures create newly eligible pairs.
    Cross-origin authorization declared in robots.txt.
  -->
  <sitemap>
    <loc>https://qualified-deer-9.convex.site/sitemap-h2h.xml</loc>
  </sitemap>

</sitemapindex>
