Loading
Important Advisory: iOS Update Impacting CG Mobile ApplicationRead More
Experience Cloud
SEO for Experience Builder Sites FAQ

SEO for Experience Builder Sites FAQ

Answers to common questions about using SEO in your Experience Builder site.

Required Editions

Available in: Salesforce Classic and Lightning Experience
Available in: Enterprise, Performance, and Unlimited Editions
Applies to: LWR and Aura sites
Can I use SEO features on a sandbox org?
No, SEO features are supported on production orgs only.
Can I create a custom sitemap?
Don’t create custom sitemaps for Aura or LWR sites, as they’re difficult to maintain and scale. Instead, use the automatically generated sitemap.xml file.
How often is the sitemap generated?
If a site has been published, is active, and is public, the full sitemap is automatically generated one time a week, on Sunday. A partial sitemap refresh occurs every 24 hours and captures any changes made in the last day. You can manually regenerate a sitemap one time every 24 hours.
Can I manually generate a sitemap for my site?
If you go live with a new site or make significant changes to an existing site, you can manually generate a sitemap.
Tip
Tip For the best experience, generate a manual sitemap during off-peak hours.
Why does the sitemap have references to other sitemaps?
The sitemap.xml file can contain only a limited number of URLs. For large sites, the sitemap is partitioned into multiple smaller sitemaps. These partitions organize the different public pages and objects in your site. Each partition is of the form sitemap-object-#.xml. The sitemap file also contains a partition called sitemap-object-weekly.xml. This partition contains new and updated pages from the current week, and is used for the daily partial sitemap refresh and the weekly sitemap generation. The sitemap-object-weekly.xml partition resets after that week’s sitemap generation.
Does the sitemap include URLs for object pages?
If an object’s detail page is public and you enable read access for the object, the URL for the detail page is included in the sitemap. You can make an object's list page public separately and include it in the sitemap by adding the page to the Navigation menu and then republishing your site. Related list pages are never included in the sitemap.
Why don’t I see the automatically generated robots.txt file when I navigate to https://<site_URL>/robots.txt?
Your site must be at the root level of your custom domain for the robots.txt file to appear. If you don’t have a custom domain set up and you’re using the *.force.com or *.my.site.com domain, then a site without the path prefix must exist.
How do I change the indexing directives of the default robots.txt file?
You can create a custom robots.txt file to implement a rules-based method to control the visibility of specific areas of your site to search engines. Pages whose URLs you add to the Disallow section of a custom robots.txt file can still appear in search results. To hide a public site page from search results use the noindex meta tag.
How is SEO supported for sites with multiple languages?
When multiple languages are added to a site, translation links are automatically added to each site page's head markup with <hreflang> link tags, according to Google's guidelines. The sitemap isn’t updated with additional translation links. You can't remove or disable the link tags, but you can configure unique SEO tags for each language.
Can I remove the /s/ from the default site URL in Aura sites?
No, the /s/ is required in the default URL for Aura sites. It’s not required for LWR sites.
Does each article have its own URL?
Yes, each article that appears in the Article Detail page has its own URL, which is retrieved from the Knowledge article’s URL Name field.

Article URLs use the format /article/:urlName. However, the article's recordId is available for use with components on the Article Detail page, like the Article Content component. The recordId on the page is set to the most recent Knowledge Article Version ID for a published article, uniquely defined by the URL Name and, if present, the translation language.

Tip
Tip
  • If your org has custom components that rely on the article's urlName, update the components to use recordId instead.
  • If your org supports multilingual Knowledge articles, keep the same URL as the base language article. We don’t recommend replacing the URLs of translated articles with language-specific URLs.
Which bots are allowed to crawl Experience Builder sites, or get served their content snapshot?
  • adsbot-google
  • ask
  • baidu
  • bing
  • chrome-lighthouse
  • dotbot
  • facebook
  • facebot
  • googlebot
  • gsa-crawler
  • linkedinbot
  • rogerbot
  • screaming frog
  • slackbot
  • slurp
  • swiftbot
  • twitterbot
Additionally, when you enable generative engine optimization (GEO), these AI bots can receive static HTML snapshots of your site:
  • GPTBot
  • OAI-SearchBot
  • ChatGPT-User
  • ChatGPT-User/2.0
  • Anthropic-AI
  • ClaudeBot
  • Claude-User
  • Claude-SearchBot
  • Google-NotebookLM
  • PerplexityBot
  • CCBot
  • MistralAI-User
Why aren’t bots receiving the correct content when I use a CDN?
If you serve your Experience Builder site through a third-party CDN and bots aren’t receiving the expected content, check your CDN configuration.
  • Forward the original User-Agent HTTP header to Salesforce. If the CDN removes or replaces this header, Salesforce can’t identify the request as a bot and serves the JavaScript version of the page instead of a content snapshot.
  • Cache bot responses separately from site visitor responses, or don’t cache responses for bot traffic. If the CDN serves the same cached response to bots and visitors, bots can receive the JavaScript version of the page instead of a content snapshot.

For help with these settings, refer to your CDN provider documentation.

How do I verify that a bot is receiving a content snapshot?
When a page is available to bots, Salesforce serves a static HTML content snapshot instead of the JavaScript version of the page that site visitors see. Search engines and AI bots read this snapshot. Content snapshots are available on production orgs only.

To check whether a bot receives the snapshot:

  • In Google Chrome, open Developer Tools. From Developer Tools, select More tools | Network conditions.
  • Deselect Use browser default, and then enter a user-agent string for an allowed bot. To test an AI bot, first Enable GEO to Make Site Pages More Discoverable by AI.
  • Reload the page. Right-click the page, and then select View page source. View page source shows the HTML that a bot receives. Inspect and the Elements panel show the live page after JavaScript runs.
  • In the &lt;head&gt; of the page source, look for &lt;meta name="x-sfdc-rendered-at" content="<varname>timestamp</varname>"&gt;. If this tag is present, the bot is receiving the content snapshot. The timestamp shows the generation time of the snapshot.
Tip
Tip Keep the following in mind when verifying whether or not a bot is receiving content.
  • A x-sfdc-rendered-at tag confirms Salesforce is serving the snapshot, but it doesn't mean a search engine or AI bot has crawled or indexed the page. Pages are indexed on the provider's side. If the tag is present but the page still isn't appearing, reach out to your search/AI provider rather than Salesforce.
  • Results can vary by CDN configuration, so a failing test doesn't necessarily mean snapshots are broken. For security reasons, some user agents are intentionally blocked by Salesforce CDN for testing. If a bot doesn't return the snapshot, try another allowed bot string. If you have a consistent failure, make sure the the CDN settings are set up correctly. look at the CDN settings in the previous question.
Can I update the title and add a description to articles to improve search engine results?
Each Knowledge article has a URL Name, a Title, and a Summary field. When the article’s displayed in the Article Detail page in Experience Builder, these fields are used for the page URL, the title, and description tags on the page <head>.
Are pages with non-standard URLs, such as custom vanity URLs or URLs that include query string parameters, supported for SEO?
No, pages with non-standard URLs aren’t included in the sitemap or content snapshots. Therefore, search engines can’t crawl or index those pages.

For example, instead of using standard pages to deliver dynamic data via URL parameters (/s/product?productId=12345), use object pages for the record pages to be crawled (s/product/12345).

How do I indicate that a version of a page is non-canonical?
When different versions of a page exist, search engines crawl only the canonical version of a page. To stop the search engine from arbitrarily choosing a URL as the canonical version of multiple pages, indicate that a page is a duplicate of another page (that is, non-canonical). To do so, add a <link> element, with the attribute rel=canonical and point to the canonical page. For example, <link rel="canonical" href="https://example.com/home" />.
How are non-canonical URLs for object pages handled?
To improve your site’s SEO ranking, we redirect non-canonical URLs to canonical URLs using 301 redirects. A canonical URL lets you tell search engines that slightly different URLs, which all point to the same content, are actually the same thing. A 301 redirect indicates that a URL has been permanently moved, which is optimal for SEO.

For example, let’s say you add object pages for the Account object. In this case, the detail page has an object-specific Account Detail page and a generic Record Detail page. When site members access the generic Record Detail page (/s/detail/recordId), they’re permanently redirected to the canonical URL of the object-specific Account Detail page instead (/s/account/recordId). Similarly, 301 redirects are used for list and related list pages.

Note
Note URL redirects occur only when a URL is accessed directly from the browser URL bar or from a link that’s external to your site.
How are SEO-friendly URLs created for object detail pages?
To create a user-readable URL for the detail page of a standard or custom object, we append the value of the object’s Name field to the URL. For example, for AW Computing’s Account Detail page, we redirect https://mysite.com/s/account/001R0000002NzuaIAC to https://mysite.com/s/account/001R0000002NzuaIAC/aw-computing.

Where the Name field isn’t available, we use the Subject or Title fields. Otherwise, we append “detail” to the URL.

Note
Note The Case, Dashboard, Group, Report, and User Profile objects aren’t supported.
Can I use record names that contain special characters or spaces in my URLs?
Yes, but the system automatically replaces all characters that aren't unicode letters or numbers. Spaces are replaced with a single dash and the final URL is truncated to a max length.
How do I get analytics for material brought in using CMS Connect?
Remember, the content you display in your site when using CMS Connect (JSON) doesn’t live in your site. Getting usage data requires a few extra steps.

To configure External Objects for the data that you want to track, use Reports or OData, Salesforce Reporting.

 
Loading
Salesforce Help | Article