BFBambooForge Labs

Sitemap Pro: XML & Image Sitemaps

Priority and change frequency per URL pattern, image and video sitemaps, noindex pages excluded, instant rebuild, and IndexNow submission.

Buy on the Odoo Apps StoreOpen the live demoWebsite€382Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0. Technical name bambooforge_sitemap_pro.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0
Full walkthrough on a live Odoo 19.0 database, with subtitles. It ends with what this app deliberately does not do.

Sitemap Pro: XML & Image Sitemaps

An add-on for BambooForge SEO Pro. Odoo's sitemap lists every published page with no priority, no change frequency and no way to keep anything out. This gives you all three, adds image and video entries, and submits changed URLs to the engines that still accept a submission.

Install

Install BambooForge Sitemap Pro. Three rules are created:

  • / - priority 1.0, daily

  • /my - excluded (the customer portal is private by definition)

  • /website/search - excluded (search results are a crawl-budget drain)

They are ordinary records: change them, archive them, or delete them.

Rules

SEO Pro → Configuration → Sitemap Rules. A rule is a URL pattern plus what to do with it.

URL starts with

/shop matches /shop and everything under it.

URL is exactly

/ matches only the home page. A trailing slash is the same URL, and a query string is not part of the path.

URL matches a regular expression

^/blog/\d{4}/ for "any year folder in the blog".

The action is either Include with these settings - a priority from 0.0 to 1.0 and a change frequency - or Keep out of the sitemap.

First match wins, so the specific rule goes above the general one; drag the handle to reorder. A rule with no website applies to every site and always loses to a rule written for one, which is how an agency keeps one house default and overrides it per client.

About priority

Priority is relative to your own URLs. It tells a crawler which of your pages you would rather have crawled first. It says nothing to anybody about how you rank, and setting everything to 1.0 is the same as setting everything to 0.5.

Pages you asked Google not to index

Nothing to do: SEO Pro already does this. A page marked noindex there is dropped from the sitemap, and for a website page the flag is also mirrored onto Odoo's own website_indexed. This add-on does not repeat the check - it would only be a second place to look when the answer is wrong.

Images and videos

SEO Pro → SEO Pages → (a page) → Sitemap media.

Image search and video search are separate result pages, and neither reads a plain sitemap. Anything listed here is published inside that page's sitemap entry, with the image and video namespaces declared on the root element - a child in an undeclared namespace invalidates the whole file, not just the entry.

A video needs a title, a description, a thumbnail and either a content URL (the file) or a player URL (a page that plays it). Without one of those two the entry is dropped and the sitemap is reported as invalid, so the module refuses to save it. Duration, when given, must be between one second and eight hours.

Relative URLs are made absolute automatically - a relative URL in a sitemap is silently ignored by every validator.

The twelve-hour cache

Odoo caches the generated sitemap for twelve hours. Changing a rule and reloading /sitemap.xml therefore shows the old file, which is how an afternoon disappears into deciding the rules do not work. Website → Sitemap → Rebuild the sitemap file drops the cached copies; the next request rebuilds them.

IndexNow, and the truth about pinging

Google retired its sitemap ping in 2023. There is nothing to press for Google: it reads the file on its own schedule. Any module offering you a "ping Google" button today is calling a URL that answers 404.

Bing, Yandex and Seznam read IndexNow:

  1. Website → Sitemap → Generate a key. The key is 32 hexadecimal characters; Odoo serves it at /<key>.txt, which is the proof of ownership IndexNow asks for. The route is pinned to exactly 32 characters so it cannot swallow /robots.txt or a page of your own whose URL ends in .txt.

  2. The key file must be at the root of the site. A key file in a subdirectory only authorises URLs under that subdirectory.

  3. Submit now sends the current URL list. The daily cron sends it only when it has changed since the last submission - submitting the same list every night is how a site gets ignored.

The result of the last submission, with the HTTP status the endpoint returned, is on the same page.

Multi-website and multi-company

Rules, defaults, media and the IndexNow key all belong to a website. The rules list is filtered by the websites a user can see, and by company through the website's company.

Support

support@bambooforge.dev - the people who wrote it.

Screens

Media - bambooforge_sitemap_pro
Media
Rules - bambooforge_sitemap_pro
Rules
Settings - bambooforge_sitemap_pro
Settings