<?xml version="1.0" encoding="UTF-8"?>
<!--
  Static sitemap — core / operator / tool / legal pages only.
  ==========================================================
  <lastmod> is intentionally OMITTED here. Google only benefits from lastmod
  when it is accurate; a hand-maintained static file inevitably drifts to a
  stale (or worse, always-"today") value, which Google treats as a no-signal
  and may distrust. Omitting it is the documented best practice when you can't
  keep it truthful — Google falls back to its own crawl signals for this small,
  stable URL set. Truthful, data-driven freshness lives where it can be
  computed: the dynamic sitemaps served from api.ownedeals.com
  (/sitemap-cpo.xml, /sitemap-private.xml, /sitemap-hubs.xml), where <lastmod>
  is derived from cars.updated_at and market_insights.updated_at. The five
  model hubs below also appear in /sitemap-hubs.xml with those real dates, so
  Google uses the truthful value regardless.

  Individual /car/* listing URLs are NOT listed here — Tesla CPO listings are
  emitted by /sitemap-cpo.xml, served SAME-HOST via a Cloudflare Pages Function
  that proxies the backend copy (gated on SITEMAP_INCLUDE_CPO). The cross-host
  api.ownedeals.com index is no longer advertised in robots.txt, because
  cross-host sitemap children earn no "Referring sitemap" attribution in GSC.
  Private-seller and auto.dev dealer listings remain excluded — see robots.txt
  for the current per-source state and the reasons.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- ── Core pages ──────────────────────────────────────────────────────── -->
  <url>
    <loc>https://ownedeals.com/</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>

  <url>
    <loc>https://ownedeals.com/browse</loc>
    <changefreq>hourly</changefreq>
    <priority>0.9</priority>
  </url>

  <!--
    /create-listing is deliberately NOT listed.

    It has no prerender entry and no <DynamicMeta>, so a crawler fetching it
    before JS runs receives a byte-for-byte copy of the homepage prerender —
    same <title>, same H1, and a canonical pointing at https://ownedeals.com.
    Advertising a URL whose pre-JS HTML self-identifies as the homepage is a
    canonical mismatch that invites a "Duplicate, Google chose different
    canonical" verdict, and adds a thin/duplicate page to an account already
    under AdSense "low value content" review.

    It also isn't a content page: it's an authenticated multi-step form whose
    value is behind a login, so there is nothing for a crawler to index.
    Internal links to it (LandingPage, tools pages) are untouched — humans
    still reach it fine, and it stays `Allow:`ed in robots.txt so those links
    aren't treated as pointing into a blocked area.

    To make it genuinely indexable later, give it a real prerender/static-meta
    route with its own title + self-referential canonical, then re-add it here.
  -->

  <!-- ── Site-operator pages (required by AdSense + E-E-A-T) ─────────────── -->
  <url>
    <loc>https://ownedeals.com/about</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://ownedeals.com/contact</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>

  <!-- ── Legal & informational ───────────────────────────────────────────── -->
  <url>
    <loc>https://ownedeals.com/safety</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>


  <!-- ── Used Tesla "market hub" landing pages (per-model SEO/GEO centerpiece).
       SSR'd by Cloudflare Pages Functions (functions/used-tesla-*.js); content
       refreshes from live inventory + a daily AI market-insight blob
       (market_insights table), so changefreq=daily, high priority. These URLs
       also appear in the dynamic /sitemap-hubs.xml with a truthful, data-driven
       <lastmod>; Google uses that real date. ────────────────────────────── -->
  <url>
    <loc>https://ownedeals.com/used-tesla-model-3</loc>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://ownedeals.com/used-tesla-model-y</loc>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://ownedeals.com/used-tesla-model-s</loc>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://ownedeals.com/used-tesla-model-x</loc>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://ownedeals.com/used-tesla-cybertruck</loc>
    <changefreq>daily</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- ── Free Tools (SEO + AdSense surfaces) ─────────────────────────────── -->
  <url>
    <loc>https://ownedeals.com/tools</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://ownedeals.com/tools/tesla-vin-decoder</loc>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://ownedeals.com/tools/tesla-battery-health-calculator</loc>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://ownedeals.com/tools/what-is-my-tesla-worth</loc>
    <changefreq>weekly</changefreq>

    <priority>0.9</priority>
  </url>


  <url>
    <loc>https://ownedeals.com/privacy-policy</loc>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
  </url>

  <url>
    <loc>https://ownedeals.com/terms-of-service</loc>
    <changefreq>monthly</changefreq>
    <priority>0.4</priority>
  </url>

  <!--
    ── Individual car listings ─────────────────────────────────────────────
    Car detail pages are NOT listed in this static file. Tesla CPO listings are
    advertised separately in robots.txt as:
      https://ownedeals.com/sitemap-cpo.xml
    which is a Cloudflare Pages Function (functions/sitemap-cpo.xml.js) that
    proxies the backend's generated copy SAME-HOST, so GSC can attribute a
    "Referring sitemap" to each /car/* URL. It is gated on the backend's
    SITEMAP_INCLUDE_CPO env var.

    URL pattern:  https://ownedeals.com/car/{year}-{model}-{trim}-{city}-{state}-{vin}
    Example:      https://ownedeals.com/car/2023-model-y-long-range-awd-austin-tx-5YJYGDEE9PF123456
  -->

</urlset>
