URL Generation and Conflict Resolution

Salesforce B2C Commerce maintains a directory of pipeline, category, folder, and search refinement URLs in B2C Commerce database. Product and content URLs are not contained in this directory, because they are built dynamically. The URL directory contains a URL endpoint for any pipeline alias, category in the storefront catalog, and folder in the site library for each site locale.

The URL generation process ensures unique URLs within pipelines, categories, and folders for a locale:
  • If B2C Commerce finds duplicate category URLs during the URL generation process, it appends an index number to the URL. For example, if the category URL rule is configured to use the category display name, and two categories have the same display name shoes, the first category has the URL shoes-1, and the second category will have the URL shoes-2. If a category URL conflicts with a pipeline URL, a global conflict shows.
    Note: When you schedule a category, B2C Commerce checks for duplicates at the time it was scheduled. If a scheduled category shares a name with an online category, a conflict shows, even if the two categories aren’t schedule to run concurrently.
  • A pipeline alias can only be stored if it doesn't conflict with any other pipeline URL or any category or folder URL currently stored in the URL directory. For example, if there is a /shipping URL for a folder called shipping, then you can't create a pipeline alias with the URL /shipping.
  • Search-Show pipeline: URLs created for the Search-Show pipeline without a category ID and search refinements are supported for search refinement URLs, for example search/abrand/blue. This functionality is also available for the Search-ShowContent pipeline, for example searchcontent/history.

The following example shows Pipeline URLs.

URL Endpoint Locale Type Object ID
account default Pipeline Account-Show
search default Pipeline Search-Show

The following example shows category URLs.

URL Endpoint Locale Type Object ID
mens en_US Category cat123
herren de_DE Category cat123
mens-clothing-shorts en_US Category cat456
herren-kleidung-kurzehosen de_DE Category cat456

The following example shows folder URLs.

URL Endpoint Locale Type Object ID
about en_US Folder folder_about
about de_DE Folder folder_about

Pipeline, category, and folder URLs are generated using a system job on B2C Commerce. The job regenerates the URLs when any of the following changes are made:

  • Removing a category/folder
  • Adding a category/folder
  • Changing site assignment
  • Changing the category/folder name or ID
  • Changing the category/folder Page URL, Page Description, or Page Keywords
  • Changing the category hierarchy (that is, any name shown for the category-path or category-parent variable)
  • Changing any attribute value
  • Changing locale
  • Changing any URL setting, controlling URL mappings

Any of these changes cause a complete regeneration of all pipeline, category, and folder URLs. The URL generation job runs on Staging and Sandboxes only. The job doesn't run on Production. Instead, URLs are replicated to Production along with catalogs and libraries. The job takes about 3 minutes for 50,000 categories/folders.

Product URLs are not generated using this job. Only the product/content ID appended to each URL is used to identify the product, and only if the URL has the ending '.html'.

Search Refinement URLs

When you add search refinement information to the URL path, conflicts can occur with refinement values after URL cleansing (for example, character replacement). B2C Commerce resolves these conflicts by making them unique (similar to Category and Folder mappings: adding an index delimited with the configured delimiter).

The conflicts area for search refinement URLs shows global conflicts within the current search refinement URL values for the following cases:

  • Multiple occurring values in different search refinements, for example red as both color and brand.
  • Search refinement values containing the delimiters dash "-" and underscore "_".