<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Spark</title>
    <description>The latest articles on DEV Community by Spark (@spark88).</description>
    <link>https://dev.to/spark88</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4068929%2Fb8011c05-7e76-46ae-ba40-671c7e82855d.jpg</url>
      <title>DEV Community: Spark</title>
      <link>https://dev.to/spark88</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spark88"/>
    <language>en</language>
    <item>
      <title>I checked 14 domains. None had ever submitted a sitemap.</title>
      <dc:creator>Spark</dc:creator>
      <pubDate>Thu, 17 Sep 2026 08:52:53 +0000</pubDate>
      <link>https://dev.to/spark88/i-checked-14-domains-none-had-ever-submitted-a-sitemap-14c5</link>
      <guid>https://dev.to/spark88/i-checked-14-domains-none-had-ever-submitted-a-sitemap-14c5</guid>
      <description>&lt;p&gt;I run fourteen small SaaS sites. Last week I went to check how they were doing in search and found something embarrassing: &lt;strong&gt;not one of them had ever had a sitemap submitted&lt;/strong&gt;. Not to Google, not to Bing. Fourteen domains, 188 URLs, sitting there for months.&lt;/p&gt;

&lt;p&gt;The annoying part is that every single site was doing the work correctly. Each served a valid &lt;code&gt;sitemap.xml&lt;/code&gt;. Each declared it in &lt;code&gt;robots.txt&lt;/code&gt;. The framework generated it automatically. Everything a tutorial tells you to do was done.&lt;/p&gt;

&lt;p&gt;Nobody had pressed the last button.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serving a sitemap is not submitting one
&lt;/h2&gt;

&lt;p&gt;This is the gap I want to flag, because I suspect it is common.&lt;/p&gt;

&lt;p&gt;A sitemap in &lt;code&gt;robots.txt&lt;/code&gt; is a passive hint. A crawler that already visits your site will eventually find it. Submitting it in Search Console is an active declaration: here is the list, please read it now, and here is where I will tell you when it changes.&lt;/p&gt;

&lt;p&gt;For a site with existing traffic the difference is small. For a new site with no inbound links, the passive route can mean waiting a long time to be discovered at all, because nothing is prompting a crawler to come in the first place.&lt;/p&gt;

&lt;p&gt;Checking takes a minute per property:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google: Search Console, Indexing, Sitemaps&lt;/li&gt;
&lt;li&gt;Bing: Bing Webmaster Tools, Sitemaps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the table is empty, that is the whole problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bing matters more than its market share suggests
&lt;/h2&gt;

&lt;p&gt;The reflex is to do Google and stop. That reflex is now out of date, for a reason that has nothing to do with how many people use Bing.&lt;/p&gt;

&lt;p&gt;ChatGPT's browsing is built on Bing's index. If you care about being mentioned when somebody asks an assistant for a tool like yours, Bing is not the afterthought, it is the channel. Claude leans on Brave, which has its own &lt;a href="https://search.brave.com/submit-url" rel="noopener noreferrer"&gt;submission form&lt;/a&gt;. Perplexity runs its own crawler.&lt;/p&gt;

&lt;p&gt;So "SEO" quietly became several different indexes with different front doors. Submitting to Google alone covers fewer of them than it used to.&lt;/p&gt;

&lt;p&gt;Bing was also the bigger miss in my case. One of my domains was not even registered in Bing Webmaster Tools, so its 30 URLs were invisible to that whole side of the map.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two things that cost me time
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A domain property rejects a bare path.&lt;/strong&gt; In Google Search Console, if your property is a Domain property (&lt;code&gt;sc-domain:example.com&lt;/code&gt;), the sitemap field will not accept &lt;code&gt;sitemap.xml&lt;/code&gt;. It returns "Invalid sitemap address" with no hint as to why. It wants the full &lt;code&gt;https://example.com/sitemap.xml&lt;/code&gt;. A URL-prefix property takes the bare path. Same field, same console, opposite requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy the verification file before you create the property.&lt;/strong&gt; If you add a URL-prefix property and the verification file is already live, Google skips the verification step entirely and shows "Ownership auto verified". If you create the property first you get sent round a download-upload-verify loop instead.&lt;/p&gt;

&lt;p&gt;Worth knowing: the Google HTML verification token is per account, not per site. The same &lt;code&gt;googleXXXX.html&lt;/code&gt; file verifies every domain you own. Once you have it, adding a new site is one file and one click.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would check on your own projects
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open Search Console and Bing Webmaster Tools and look at the Sitemaps table. Empty is the common case.&lt;/li&gt;
&lt;li&gt;Check every domain is actually registered in both. One of mine was missing from Bing entirely and I had never noticed.&lt;/li&gt;
&lt;li&gt;After submitting, wait and check the status reads Success with a page count, not just "submitted". Mine sat on "Couldn't fetch" for a few minutes before flipping.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of this is clever. It is the boring last step that the tutorials imply happens by itself.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I build &lt;a href="https://spark-apps.co" rel="noopener noreferrer"&gt;a set of small SaaS tools&lt;/a&gt;, one of which is a visibility auditor, which is how I noticed. It scored several of these sites highly while their sitemaps had never been submitted, because it only fetched the URL it was given. I have since fixed that too.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
