Skip to content

Query Parameters ​

Intent shortcuts ​

Every FloorPlan intent is addressable straight from the URL: the intent name is the query key, its arguments are the value. The set of keys grows automatically with the SDK's intent schema — these all work today:

DescriptionExample
Select a booth by name or external id.?selectBooth=A-12
Select an exhibitor.?selectExhibitor=Acme
Open whatever a slug names (booth, session, …).?select=biogreen-ag
Select a category.?selectCategory=food
Open a list panel (bookmarks, sessions, …).?showList=bookmarks
Open the sessions list, filtered.?showSessions[tracks][0]=Keynotes&showSessions[date]=today&showSessions[bookmarked]=true
Launch a tour by id.?selectTour=t-1
Switch the UI language.?changeLanguage=fr
Enter the route-building mode.?startBuildRoute
Build a route through waypoints, first to last.?selectRoute[0]=A-12&selectRoute[1]=B-30
The same route over accessible segments only.?selectAccessibleRoute[0]=A-12&selectAccessibleRoute[1]=B-30
Show a pathway, highlighting entities along it.?showPathway[0]=p-1&showPathway[1][0]=ext-1
Place the visitor position; true focuses on it.?selectCurrentPosition[0][x]=100&selectCurrentPosition[0][y]=200&selectCurrentPosition[1]=true
Set the map-chrome visibility.?setVisibility[header]=false

Several intents combine in one URL and play in order (?changeLanguage=fr&selectBooth=A-12). Multi-argument intents use the bracketed form (?intents[0][name]=…&intents[0][args][0]=…), which also allows repeating the same intent.

?changeLanguage= reports a language the plan does not ship as an SDK error. Point links at a language the plan actually has, or set disableRuntimeAlerts in the embed options.

camera ​

The initial camera position, in the schema-typed form (numbers are validated; an invalid field is ignored rather than breaking the load):

DescriptionExample
Center in projected "x, y".?camera[x]=13595.17&camera[y]=6878.86
Center in WGS84 "lat, lng".?camera[lat]=52.322&camera[lng]=9.8144
Floor/level name.?camera[floor]=2
Map rotation (0–360 degrees).?camera[bearing]=180
Camera animation duration in ms.?camera[zoomTime]=3000

Fields combine freely in one URL. The same shape is available at runtime as the setCamera intent and the FloorPlan.setCamera() method.

visibility ​

The initial visibility of the map chrome, in the schema-typed form (booleans are validated; an invalid field is ignored rather than breaking the load):

DescriptionExample
Header with logos and the free/demo badge.?visibility[header]=false
Map controls.?visibility[controls]=false
Floor selector.?visibility[levels]=false
Overlay panel — search, lists, etc.?visibility[overlay]=false
Search-filter buttons row.?visibility[searchButtons]=true

searchButtons follows overlay when omitted. An explicit true keeps the buttons while the overlay is hidden — clicking one opens the overlay on demand: ?visibility[overlay]=false&visibility[searchButtons]=true (also combines with the deprecated ?noOverlay=true: ?noOverlay=true&visibility[searchButtons]=true).

Fields combine freely in one URL; every omitted element resets to visible. The same shape is available at runtime as the setVisibility intent and the FloorPlan.setVisibility() method.

?visibility[overlay]=false (NoOverlay) hides:

  • Menu
  • Search results
  • Exhibitor detail view
  • Booth detail view
  • Bookmarks
  • Visited list
  • Language selector
  • Category browser
  • Wayfinding / directions panel
  • Filter panel
  • Sessions (with its filters)
  • Speakers (with its filters)
  • Tours
  • Tour points
  • Route planner
  • Event detail view
  • Speaker detail view

filters ​

The initial search filters, in the schema-typed form (values are plain names, matched case-insensitively; an unknown name is ignored with a console warning):

DescriptionExample
Pre-select categories and open the category filter panel.?filters[categories][0]=food
Pre-select a single POI type (activates its filter button).?filters[poiType]=cafe
Pre-select several POI types.?filters[poiTypes][0]=cafe&filters[poiTypes][1]=wc
Open the exhibitors list.?filters[exhibitors]=true
Scope the categories to a custom search button (and keep it selected).?filters[searchButton]=categories_Products&filters[categories][0]=product/earrings

Categories and POI types are mutually exclusive — when both are given, the categories win. The legacy ?categories=, ?poiType=, ?poiTypes= and ?exhibitors=true keys keep working as aliases and remain the form the floor plan writes back to the URL as the visitor changes filters.

searchButton names the search button that owns the categories selection — a custom type: 'categories' button created in the admin panel (Products, Countries, Ingredients, …). Its id is the button's id when the platform sends one, otherwise the derived categories_<name> form — which is what most URLs carry, since the platform usually omits id. The named button opens its own category modal, limited to its children, and stays highlighted when the link is reopened. An id matching no button is ignored with a console warning and the built-in Categories button takes over; omitting searchButton — and the legacy ?categories= form — always means the built-in button.

When a custom button owns the selection the floor plan writes the whole filter query in this bracketed form; otherwise it keeps writing the legacy keys. Written back, the brackets are percent-encoded — the address bar shows ?filters%5BsearchButton%5D=…&filters%5Bcategories%5D%5B0%5D=…, which is the same URL. Either spelling can be typed or pasted.

layer ​

Sets the floor shown on load, matched by the floor's short label — the abbreviation shown in the floor selector (case-insensitive).

DescriptionExample
Show the "Level 1" floor on load.?layer=L1

Search text ​

DescriptionExample
Displays matching entities.?abc
Displays entity details.?biogreen-ag

bookmarks ​

DescriptionExample
Open the bookmarks list.?bookmarks

disableBookmarked ​

DescriptionExample
Disables the ability to add to bookmarks.?disableBookmarked=true

language ​

DescriptionExample
Opens the language selector.?language

route ​

Colon-separated list of route points.

  • route:<Entity name>:<Entity name>
DescriptionExample
Displays the route.?route:42-23:101-12
Displays the accessible route.?route:42-23:101-12:true

heatmap ​

Heatmap mode, in the schema-typed form: a non-empty heatmap[…] engages the mode unless heatmap[enabled]=false, so ?heatmap[variant]=yah alone is enough. variant picks the dataset (booths — booth/exhibitor view stats, the default — or yah for "You are here" QR-code scans); kiosk=true narrows the yah variant to kiosk positions. Heatmap mode freezes the page URL for the whole session. The access token t stays a separate parameter.

DescriptionExample
Booth-visit heatmap.?heatmap[enabled]=true&t=TOKEN
Heatmap view for "You are here" QR codes.?heatmap[variant]=yah&t=TOKEN
Heatmap mode for kiosks.?heatmap[variant]=yah&heatmap[kiosk]=true&t=TOKEN

The legacy aliases keep working:

DescriptionExample
Shows the heatmap.?heatmap=true&t=TOKEN
Heatmap view for "You are here" QR codes.?heatmap=true&type=yah&t=TOKEN
Heatmap mode for kiosks.?heatmap=true&type=yah&subtype=kiosk&t=TOKEN

blue-dot ​

  • blue-dot=<X>,<Y>,<Z>
DescriptionExample
Sets the blue-dot coordinates.?blue-dot=8022.44384765625,8423.1962890625,1
DescriptionExample
Applies a granted consent — no prompt, analytics on.?consent=granted
Applies a denied consent — no prompt, analytics off.?consent=denied

Without the parameter the decision is the visitor's (ask): visitors in GDPR regions get the consent prompt.

DescriptionExample
Hides the header logo and the ExpoFP logo.?hideHeaderLogo=true

hideLogoInBooth ​

DescriptionExample
Hides booth logos.?hideLogoInBooth=true

disableFeatured ​

DescriptionExample
Disables the featured view.?disableFeatured=true

disableGps ​

DescriptionExample
Disables GPS.?disableGps=true

monochrome ​

DescriptionExample
Sets the monochrome view.?monochrome=true

kiosk ​

Kiosk mode has two independent inputs: the mode toggle and the anchor (where the device stands and how its camera is framed), in the schema-typed form:

DescriptionExample
Enables kiosk mode.?kiosk=1
Disables kiosk mode.?kiosk=0
Anchor position in plan coordinates.?kiosk[x]=6517.5&kiosk[y]=3826
Anchor floor and heading.?kiosk[z]=1&kiosk[heading]=90
Per-device UI scale and icon size.?kiosk[uiScale]=1.2&kiosk[iconSizePercent]=120

The anchor node is also settable from the manifest or embed options (config.kiosk); a kiosk saved on the device itself (the ?setkiosk flow) wins over it.

A separate, narrower channel carries the anchor position between devices: the QR code a kiosk shows for a route appends kiosk_x, kiosk_y and kiosk_z, so the phone that scans it can resolve the route's starting point. Those three keep working. The other kiosk_* keys are retired — the QR stopped emitting them long ago, and the schema-typed ?kiosk[…] form above is the way to set an anchor.

A link that carries kiosk_x/kiosk_y/kiosk_z does not put the receiving device into kiosk mode. The device shows the kiosk's marker and starts the route there, and nothing else changes.

A device left in kiosk mode by an earlier version

Earlier versions put the device that opened such a link into kiosk mode and remembered it, so later visits started in kiosk mode too. To take a device back out, open ?kiosk=0 on it, or set localStorage['kiosk'] = '0'.

Kiosk mode stays off on phones

On a phone — a mobile device whose screen is under 600 CSS pixels on its short side — kiosk mode never turns on, whichever input asks for it: ?kiosk=1, a kiosk saved on the device, or config.kiosk. The kiosk's marker still shows. Tablets and kiosk panels are not affected.

TIP

On a device without an address bar, type kiosk=1 or kiosk=0 into the search field and press Enter to toggle the mode.

exhibitors ​

DescriptionExample
List filtered by exhibitor display names (comma-separated).?exhibitors=BioCycle Africa,UrbanQuest Design

Values match by exact display name — every exhibitor bearing a listed name is included. Because the list is comma-separated, a name that itself contains a comma cannot be addressed through this parameter.

viewermode ​

Seeds a sticky per-browser preference: the choice is stored under the efp-viewerMode localStorage key (a legacy ___viewer_mode value is still honored) and persists across loads. ?viewermode=0 clears the stored preference rather than forcing the mode off — a viewerMode set by the embedding page still applies.

DescriptionExample
Enables viewer mode (true also accepted).?viewermode=1
Clears the stored preference (false also accepted).?viewermode=0

previewMode ​

Preview mode hides booth prices and buy/reserve actions. Like viewermode, the value seeds a sticky per-browser preference — stored under the efp-previewMode localStorage key (a legacy ___preview_mode value is still honored); ?previewMode=false clears it.

DescriptionExample
Enables preview mode.?previewMode=true
Clears the stored preference.?previewMode=false

uiscale ​

Scales the floor plan UI. Accepts 0.8–1.4 (a comma decimal like ?uiscale=1,2 works too); values outside that range are ignored. The value seeds a sticky per-browser preference stored under the efp-uiScale localStorage key (a legacy ___ui-scale value is still honored).

DescriptionExample
Renders the UI at 120%.?uiscale=1.2

resetuiscale ​

DescriptionExample
Clears the stored UI-scale preference.?resetuiscale

debug ​

TIP

Alternatively, you can type debug=1 into the search field to enable it or debug=0 to disable it, and then press Enter.

The choice is stored under the efp-debugMode localStorage key, the parameter is removed from the address bar, and the page reloads once to apply it.

DescriptionExample
Enables debug mode.?debug=1
Disables debug mode.?debug=0

setkiosk ​

DescriptionExample
Kiosk creation and configuration mode.?setkiosk

Deprecated parameters ​

These are accepted but scheduled for removal — migrate your links when convenient. When a link carries both forms, the canonical one wins:

DeprecatedUse instead
?noOverlay=true?visibility[overlay]=false (false → [overlay]=true)
?allowConsent=true?consent=granted (?allowConsent=false → ?consent=denied)
?agenda?showList=sessions

?allowConsent also remains accepted in the event data and in the load() options. ?agenda is the sessions panel's old spelling — the rename to sessions (Oct 2025) left no URL alias, so the key did nothing until this translation; the mobile SDKs emit it. A booth slugged agenda is no longer reachable as ?agenda.

Legacy grammar ​

The compact deep-link forms the plan has always spoken. They are frozen — no new keys or forms are added — and most have a canonical equivalent. Use the canonical form in new links.

They carry no removal date, and for a reason worth knowing: the plan still writes these forms into the address bar as the visitor navigates (open the bookmarks panel and the URL becomes ?bookmarks). They stay the address-bar spelling until the URL writer itself moves over. The sessions list has moved part of the way: with a filter on, the plan writes it as ?showSessions[…]; without one, it is still ?sessions.

LegacyCanonical
?<slug>?select=<slug>
?bookmarks, ?visited, ?sessions, ?exhibitors, ?speakers, ?tours, ?language?showList=<panel>
?tour=<id>?selectTour=<id>
?route:<to>:<from>:false?selectRoute[0]=<from>&selectRoute[1]=<to>
?route:<to>:<from>:true?selectAccessibleRoute[0]=<from>&…[1]=<to>
?planner=a:b?openPlanner[items][0]=a&openPlanner[items][1]=b
?planner&source=bookmarks?openPlanner[fromBookmarks]=true
?categories=, ?poiType=, ?poiTypes=?filters[categories][0]=…

The route form does not translate key for key

  • The order is reversed. Legacy is route:<to>:<from>; selectRoute takes waypoints first to last, so a mechanical swap reverses the route.
  • A route with no FROM (?route:A-12, the start filled in from the kiosk anchor) has no canonical form — selectRoute needs both ends.
  • &title= is lost: selectRoute has no title argument.

No canonical form exists for ?kiosk=1|0 (kiosk mode — ?kiosk[x]/[y] is the anchor, an independent input), ?exhibitors=a,b (multi-select; ?selectExhibitor takes one), the one-shots ?blue-dot=, ?viewermode=, ?previewMode=, ?uiscale=, ?resetuiscale, or the ?debug / ?setkiosk commands.

visibility rebuilds, noOverlay does not

?visibility[…] sets the whole map chrome at once: every element it omits resets to visible. So ?visibility[overlay]=false on a plan that also hides, say, the header brings that header back. List every element you want hidden — ?visibility[overlay]=false&visibility[header]=false — rather than translating ?noOverlay=true key for key.