Skip to Content
CMS Variables

CMS Variables

CMS Variables are name/value records that the backend reads from the CMS. Use this page for CMS Variables; deployment and runtime environment variables are documented in the repository ENVIRONMENT.md.

Fixed variables

Create the following names exactly as shown. Variable names are case-sensitive. Each name can have a localized variant as described below.

NameRequiredUsed forWhat to enterExample
INVENTORY_SELLER_NAMERequired for inventory seller dataSeller name shown on inventory vehicle dataThe public name of the business selling inventory vehicles. If it is missing or empty, inventory data has no seller block.Muster Autohaus GmbH
INVENTORY_SELLER_URLOptionalLink on the inventory seller nameThe seller’s public HTTPS URL. It is only added when INVENTORY_SELLER_NAME is present.https://www.muster-autohaus.de
DEAL_SELLER_NAMERequired for deal seller dataSeller name shown on deal dataThe public name of the business offering deals. If it is missing or empty, deal data has no seller block.Muster Autohaus GmbH
DEAL_SELLER_URLOptionalLink on the deal seller nameThe seller’s public HTTPS URL. It is only added when DEAL_SELLER_NAME is present.https://www.muster-autohaus.de/angebote
LLMS_TXT_SYSTEM_PROMPTOptionalOpening text in the generated /llms.txt filePlain text or Markdown instructions/context that should appear before the generated page list.Use this site as the primary source for current vehicle and offer information.

The seller variables are read independently for inventory and deals. Reusing the same value is fine, but each fixed name still needs its own CMS record.

Localized CMS Variables

Use uppercase, underscore-separated base names. A locale-specific value uses a lowercase locale suffix separated with a dot:

CMS record nameMeaningExample value
SHOP_NAMEDefault value used when the current locale has no override.Autohaus Beispiel
SHOP_NAME.deGerman override of SHOP_NAME.Autohaus Beispiel GmbH
SHOP_NAME.enEnglish override of SHOP_NAME.Example Motors

Use the base name in a template, for example {{SHOP_NAME}}. For a German page, the application uses SHOP_NAME.de when it exists; otherwise it falls back to SHOP_NAME. Do not use {{SHOP_NAME.de}} in a template.

This applies to CMS Variables used in page metadata, page-template slugs, inventory and deal seller data, and generated inventory metadata. A localized record with an empty value still overrides the default value.

The previous locale-prefix naming is deprecated. Rename the existing inventory metadata records as follows:

Previous nameNew name
de_vehicleBuyUsedTitleCTAVEHICLE_BUY_USED_TITLE_CTA.de
de_vehicleBuyNewTitleCTAVEHICLE_BUY_NEW_TITLE_CTA.de
de_vehicleBuyUsedDescVEHICLE_BUY_USED_DESCRIPTION.de
de_vehicleBuyNewDescVEHICLE_BUY_NEW_DESCRIPTION.de

Use the same pattern for every other locale, for example .en.

Inventory metadata variables

These variables provide the call-to-action text when an inventory vehicle has no storage location. Use the generic name in generated metadata; add a locale suffix to the CMS record when the text differs by language.

NameUsed forExample value
VEHICLE_BUY_USED_TITLE_CTATitle fallback for a used vehicle.Jetzt Gebrauchtwagen kaufen
VEHICLE_BUY_NEW_TITLE_CTATitle fallback for a new vehicle.Jetzt Neuwagen kaufen
VEHICLE_BUY_USED_DESCRIPTIONDescription fallback for a used vehicle.Jetzt Termin für Ihren Gebrauchtwagen vereinbaren.
VEHICLE_BUY_NEW_DESCRIPTIONDescription fallback for a new vehicle.Jetzt Ihren Neuwagen konfigurieren.

Variables in templates and metadata

There is no closed list of names for template variables. The backend loads all CMS Variables when it renders:

  • page metaTitle and metaDescription;
  • page-template slugs, including generated inventory/product pages; and
  • page titles and descriptions in /llms.txt.

Reference a CMS Variable with double braces, for example:

Variable name: SHOP_NAME Variable value: Autohaus Beispiel Page meta title: Fahrzeuge bei {{SHOP_NAME}}

The allowed name format is uppercase letters, digits, and underscores, with an optional lowercase locale suffix such as .de or .en. Examples are SHOP_NAME, SUPPORT_EMAIL, and SHOP_NAME.de. A missing variable is rendered as an empty string, so create every CMS Variable that a template or metadata field references.

Handlebars supports both {{VARIABLE}} and {{{VARIABLE}}}. Double braces HTML-escape the value; triple braces render the value unescaped. Use triple braces only for trusted CMS content that is intended to contain HTML. The inventory VEHICLE_BUY_* CTA variables use triple braces.

Built-in placeholders

The following placeholders are supplied by application code and must not be created as CMS Variable records:

PlaceholderUsed inValue supplied by the applicationExample
{{TITLE}}Page metadata and /llms.txtPublic name of the current CMS page.Fahrzeuge bei Beispiel
{{URL}}Page metadata and /llms.txtCanonical or self URL of the current page.https://www.muster-autohaus.de/de/fahrzeuge
{{META_TITLE}}Page metadata and /llms.txtThe rendered meta title of the current page.Fahrzeuge bei Beispiel
{{META_DESCRIPTION}}Page metadata and /llms.txtThe rendered meta description of the current page.Gebrauchtwagen und Neuwagen bei Beispiel
{{GENERATED_SLUG}}Page-template slugsThe complete entity-specific path remainder, including nested path components.2562072/mini-cooper-classic-trim-gebraucht-gruen
{{RANDOM_4_ID}}Page-template slugsA four-character random URL-safe identifier generated with the backend slug-ID alphabet.k7m2
{{RANDOM_7_ID}}Page-template slugsA seven-character random URL-safe identifier generated with the backend slug-ID alphabet.k7m2q8a
{{VALID_FROM}}Deal legal leasing textThe deal start date, localized for the current request.Gültig ab {{VALID_FROM}}
{{VALID_THROUGH}}Deal legal leasing textThe deal end date, localized for the current request.Gültig bis {{VALID_THROUGH}}

These placeholders are different from CMS Variables: their values come from the page or deal being rendered.

Update existing CMS content to the uppercase syntax before deploying this change. Legacy placeholders are not expanded:

Deprecated placeholderReplacement
{{shopName}}{{SHOP_NAME}} CMS Variable
{{description}}{{SHOP_SLOGAN}} CMS Variable
{{title}}{{TITLE}} built-in placeholder
{{url}}{{URL}} built-in placeholder
{{generated-slug}}{{GENERATED_SLUG}} built-in placeholder
{{valid_from}}{{VALID_FROM}} built-in placeholder
{{valid_through}}{{VALID_THROUGH}} built-in placeholder

Page-template slug placeholders

Inventory-car, shop-product, and shop-collection templates use the application-supplied placeholders below. Do not create CMS Variable records for these names. Values are normalized into URL-safe slug segments before substitution.

Car-deal and generic-page templates use values supplied by their calling backend integration. The platform does not provide a data-source or automatic page-generation flow for those template types.

CMS Variables can also be used as path components. Reference the generic uppercase name in the template, such as {{SHOP_PATH}}. A CMS variable named SHOP_PATH.de is used for German pages; SHOP_PATH remains the fallback for other locales. The resolved value is normalized into a URL-safe path segment.

{{RANDOM_4_ID}} and {{RANDOM_7_ID}} are generated once when a sync slug is created. Reusing a stored slug does not generate a replacement identifier.

Page-template typePlaceholderWhat the application suppliesExample value
Inventory car{{LOCALIZED_PATHNAME}}The localized path segment configured for inventory cars in the current language.fahrzeuge for German, vehicles for English
Inventory car{{INVENTORY_ID}}The stable internal inventory identifier. Use this to keep the URL unique when descriptive vehicle data changes.2562072
Inventory car{{VEHICLE_SLUG}}A descriptive slug built from the vehicle data.mini-cooper-classic-trim-gebraucht-gruen
Inventory car{{VEHICLE_MAKE}}The normalized vehicle manufacturer.mini
Inventory car{{VEHICLE_MODEL}}The normalized vehicle model or model variant.cooper-classic-trim
Inventory car{{VEHICLE_YEAR}}The vehicle model year.2024
Inventory car{{VEHICLE_CONDITION}}The localized and normalized vehicle condition.gebraucht for German, used for English
Inventory car{{VEHICLE_COLOR}}The localized and normalized primary exterior color.gruen for German, green for English
Inventory car{{GENERATED_SLUG}}The complete generated path after the localized inventory path, including every required path component.2562072/mini-cooper-classic-trim-gebraucht-gruen
Shop product{{LOCALIZED_PATHNAME}}The localized path segment configured for shop products in the current language.produkte for German, products for English
Shop product{{PRODUCT_ID}}The stable product identifier, without the Shopify GID prefix.987654321
Shop product{{PRODUCT_TITLE}}The normalized, localized public product title.mini-dachbox
Shop product{{PRODUCT_SLUG}}The normalized product slug used for routing.mini-dachbox
Shop product{{GENERATED_SLUG}}The complete generated product-specific path remainder.mini-dachbox-987654321
Shop collection{{LOCALIZED_PATHNAME}}The localized path segment configured for shop collections in the current language.kollektionen for German, collections for English
Shop collection{{COLLECTION_ID}}The stable collection identifier, without the Shopify GID prefix.44556677
Shop collection{{COLLECTION_TITLE}}The normalized, localized public collection title.mini-zubehoer
Shop collection{{COLLECTION_HANDLE}}The normalized Shopify collection handle.mini-accessories
Shop collection{{COLLECTION_SLUG}}The generated collection slug used for routing.mini-accessories
Shop collection{{GENERATED_SLUG}}The complete generated collection-specific path remainder.mini-accessories
Car deal{{LOCALIZED_PATHNAME}}The localized path segment extracted from the canonical generated slug.angebote for German, deals for English
Car deal{{DEAL_ID}}The stable deal identifier.42
Car deal{{DEAL_TITLE}}The normalized, localized public deal title.bmw-ix1-leasing
Car deal{{DEAL_TYPE}}The normalized deal or audience type.privat
Car deal{{VEHICLE_BRAND}}The normalized brand of the linked vehicle.bmw
Car deal{{VEHICLE_MODEL}}The normalized model of the linked vehicle.ix1
Car deal{{VEHICLE_SERIES}}The normalized model series of the linked vehicle.u11
Car deal{{VEHICLE_CATEGORY}}The normalized, localized vehicle category.gelaendewagen
Car deal{{GENERATED_SLUG}}The complete generated deal-specific path remainder.42/bmw-ix1-leasing
Generic page{{PAGE_ID}}The stable page identifier.clx123abc
Generic page{{PAGE_NAME}}The normalized internal page name.ueber-uns
Generic page{{PUBLIC_NAME}}The normalized, localized public page name.ueber-uns
Generic page{{PAGE_TYPE}}The normalized page type.general
Generic page{{GENERATED_SLUG}}The complete page-relative slug, including nested path components.unternehmen/ueber-uns

Example templates:

Inventory car: /{{LOCALIZED_PATHNAME}}/{{INVENTORY_ID}}/{{VEHICLE_SLUG}} Shop product: /{{LOCALIZED_PATHNAME}}/{{PRODUCT_SLUG}}-{{PRODUCT_ID}} Shop collection: /{{LOCALIZED_PATHNAME}}/{{COLLECTION_HANDLE}} Car deal: /{{LOCALIZED_PATHNAME}}/{{VEHICLE_BRAND}}-{{VEHICLE_MODEL}}-{{DEAL_ID}} Generic page: /{{PAGE_TYPE}}/{{PUBLIC_NAME}}

The locale prefix remains automatic and is not part of the template. Prefer stable identifiers plus descriptive fields. Do not use mutable data such as price, mileage, stock, tags, or validity dates because those values would cause unnecessary URL changes.

Code inventory

The fixed names above are the complete set of literal CMS variable names used by the backend. The other variable reads use getAllVariables for localized template and metadata rendering. The AI/MCP variable operations require the same uppercase-and-underscore naming convention and do not introduce another required system variable.

Last updated on