Skip to main content
This page documents every attribute and configuration option available on the <obvlo-dynamic-content> custom element. For a step-by-step setup guide, see the Quick Start.
Use the interactive test harness to experiment with these options live — it generates the HTML tag for you in real time.

HTML attributes

These are set directly on the <obvlo-dynamic-content> element.

host-id Required

Type: string The unique identifier for your host profile. Links the widget to your content in the Obvlo system.
In the Obvlo portal, host profiles are listed as Destinations. You can find the value for host-id in the Destinations table under the Destination ID column.

config-id

Type: string Select a specific embedded configuration from your host profile. When omitted, the first configuration in the profile is used.

guide-id

Type: string Display a specific guide when the widget loads. Users can still navigate to other content.

neighbourhood-id

Type: string Display a specific neighbourhood/geographic area when the widget loads.
Only one of guide-id or neighbourhood-id should be used at a time. If both are provided, guide-id takes precedence.

guide-type

Type: string Filter the menu to show only guides of a specific type.

grid-rows

Type: numberDefault: 1 Number of rows to display in grid views on desktop and tablet devices.

grid-rows-mobile

Type: numberDefault: 3 Number of rows to display in grid views on mobile devices.

lang

Type: string Sets the display language for the widget. Must be a BCP 47 language tag supported by your host profile. See the Language reference for all 63 supported languages.

uid

Type: string Custom user identifier for analytics tracking. If not provided, a random UUID is generated and persisted in browser storage.

drawer

Type: booleanDefault: false Controls whether the widget appears as an overlay drawer or renders inline. This is a boolean attribute — its presence enables drawer mode.

drawer-delay-ms

Type: numberDefault: 0 Delay in milliseconds before automatically opening the drawer. Only applies when drawer is present.

disable-just-for-you

Type: booleanDefault: false Hides the “Just For You” personalised guide from the guide menu. Content personalisation remains fully functional — only the menu entry is hidden.

hide-travel

Type: booleanDefault: false Hides travel-related content categories from the widget.

geo-location

Type: string (JSON object) — Default: none A JSON object containing lat and lng properties to set the user’s geographic location. Used to scope content and enable proximity-based features.
Use single quotes around the geo-location value since it contains JSON with double quotes.

geo-search-radius

Type: numberDefault: 10000 Search radius in metres when geo-location is set. Controls how far from the provided location the widget will search for content.

config

Type: string (JSON object) An inline JSON string containing an EmbeddedConfig object. Use this attribute to pass advanced configuration options directly on the element without relying on a server-side embedded config.
When using config in HTML, double quotes inside the JSON must be escaped as &quot;. Most frameworks (React, Vue, Angular) handle this automatically when binding to an attribute.
See the full EmbeddedConfig object reference below.

EmbeddedConfig object

The EmbeddedConfig object can be passed via the config HTML attribute or defined in your host profile’s embedded configs (managed through the Obvlo portal). All properties are optional — only include the ones you need.

modules

Type: string[] An ordered array of module names that controls which UI sections the widget displays and in what order. When omitted, the widget uses the default module set from your host profile. The order of modules in the array determines their display order in the widget.

kioskMode

Type: booleanDefault: false Enables kiosk mode, optimised for unattended displays such as hotel lobby screens or tourist information points. Typically combined with disableAnimations and disableSavedListings.

requirePreferences

Type: booleanDefault: false When enabled, the widget prompts users to set their personalisation preferences before showing content. Useful for experiences where personalised results are the primary goal.

disableAnimations

Type: booleanDefault: false Disables all transition animations in the widget. Useful for kiosk displays or accessibility requirements.

disableSavedListings

Type: booleanDefault: false Hides the saved listings feature, removing save buttons from listing cards and the saved list from the menu.

hideGuideHeader

Type: booleanDefault: false Hides the guide header section when a guide is displayed. Useful when embedding in a context that already provides its own header or title.

hideLanguageSelector

Type: booleanDefault: false Hides the language selector dropdown from the widget. Use this when the widget language is controlled externally via the lang attribute.

preferredTravelMode

Type: stringDefault: platform default Sets the preferred travel mode for directions and distance calculations.

cornerRadius

Type: object Customise the border radius of UI elements to match your brand. Each element type accepts an object with topLeft, topRight, bottomLeft, and bottomRight values in pixels.
For uniform corners, set all four values to the same number. Common presets: 0 (square), 8 (small), 12 (medium), 16 (large), 24 (extra-large).

containerOptions

Type: object Controls the widget container’s layout and sizing.

containerOptions.maxWidth

Type: number (pixels) Maximum width of the widget container. The widget will not exceed this width even if the parent element is wider.

containerOptions.padding

Type: object Inner padding of the widget container in pixels.

containerOptions.map

Type: object Dimensions for the map module when displayed.

customIconUrl

Type: string (URL) URL to a custom icon image (SVG recommended) displayed in the widget. Use this to brand the widget with your own logo or icon.

Configuration priority

When the widget initialises, it merges configuration from multiple sources. A value from a higher-priority source always wins.

Full examples

Modular menu with grid

Kiosk display

Geo-scoped with map

Custom-branded with rounded cards

Drawer with delayed auto-open