Configuration
Every URL parameter for the PersoScan widget: theme, language, body model, zone detail level, camera behaviour, colours and which UI controls are visible.
Introduction
The PersoScan widget supports extensive customization through URL parameters. Configure appearance, behavior, language, and UI visibility by adding parameters to the iframe src URL.
All URL parameters work without a license. The widget is free to embed on any site, with a small watermark overlay is displayed when no valid license is provided. To remove the watermark, purchase a Starter or higher plan.
If you don’t have a license, omit the license= parameter entirely. Including it without a valid
key causes a backend validation request on every load.
URL Parameter Format
Add parameters to the embed URL using standard query string syntax:
${WIDGET_URL}?license=your-license-key¶m1=value1¶m2=value2
Boolean parameters accept true/false or 1/0. Color parameters must be hex format (#RRGGBB) and URL-encoded
(%23RRGGBB).
General Settings
| Parameter | Type | Default | Description |
|---|---|---|---|
devMode | boolean | false | Enable developer configuration panel for live testing and URL generation |
theme | string | light | Color theme: light or dark |
lang | string | en | Language code. See Supported lang values |
sex | string | male | Default body model: male or female |
initialZone | string | - | Pre-select a body zone on load. Use a grouped zone key, e.g. lower-back or left-shoulder. See Zone Reference. |
instructions | boolean | false | Show instructions help button for end users |
Add devMode=true to your URL to access an interactive configuration panel. Adjust settings visually and copy the
generated URL with all parameters.
Supported lang values
Use one of these locale codes for the lang parameter.
lang code | Language |
|---|---|
ar | Arabic |
bg | Bulgarian |
cs | Czech |
da | Danish |
de | German |
en | English |
es | Spanish |
et | Estonian |
fi | Finnish |
fr | French |
hi | Hindi |
hu | Hungarian |
it | Italian |
ja | Japanese |
ko | Korean |
lt | Lithuanian |
lv | Latvian |
nb | Norwegian (Bokmål) |
nl | Dutch |
pl | Polish |
pt-BR | Portuguese (Brazilian) |
pt-PT | Portuguese (European) |
ro | Romanian |
sv | Swedish |
tr | Turkish |
uk | Ukrainian |
zh-Hans | Simplified Chinese |
Color Customization
Customize the widget’s color scheme to match your application design. All color parameters accept 6-digit hex codes.
| Parameter | Default | Description |
|---|---|---|
accentColor | #0891b2 | UI accent color for buttons, borders, and interactive elements |
highlightColor | #0891b2 | Color for selected body zones on the 3D model |
bodyColor | #e4edf7 | 3D body model base color |
elementsLightColor | #ffffff | UI surface background color used in light theme |
elementsDarkColor | #171717 | UI surface background color used in dark theme |
transparentBackground | false | Make widget background transparent; when true, bgColor is ignored |
bgColor | #f0f0f0 | Background color behind the 3D model (used when transparent is off) |
Colors must be 6-digit hex format (#RRGGBB). URL-encode the # symbol as %23 in iframe src attributes (e.g.,
accentColor=%23ff0000).
Color Example
<iframe
src="https://widget.persoscan.com?license=my-license-key&accentColor=%230891b2&highlightColor=%23ec4899&bodyColor=%23e0e7ff&elementsLightColor=%23ffffff&elementsDarkColor=%23171717&transparentBackground=false&bgColor=%23f9fafb"
width="800"
height="680"
style="border: none; color-scheme: light dark;"
></iframe>Auto-Rotation
Enable automatic rotation of the 3D body model for a more dynamic presentation.
| Parameter | Type | Default | Description |
|---|---|---|---|
autoRotate | boolean | false | Enable automatic rotation of the 3D model |
autoRotateSpeed | number | 2 | Rotation speed (higher = faster, recommended range: 0.5-5) |
autoRotateResumeDelay | number | 3 | Seconds to wait before resuming rotation after user interaction |
Camera & View
Control the initial camera position, zoom level, and interaction behaviour.
| Parameter | Type | Default | Description |
|---|---|---|---|
zoom | number | 100 | Initial zoom level (0 to 100) |
lockZoom | boolean | false | Prevent users from zooming in or out |
cameraAngle | number | 0 | Initial vertical camera angle in degrees (-90 to 90) |
lockAngle | boolean | false | Prevent users from changing the vertical camera angle |
yPosEnabled | boolean | false | Enable vertical body position control |
yPos | number | 50 | Initial vertical body position (0 to 100). Requires yPosEnabled=true |
lockYPos | boolean | false | Lock vertical position; disables scroll and drag controls |
changeYOnScroll | boolean | false | Allow scroll wheel to adjust vertical body position. Requires yPosEnabled=true |
changeYOnDrag | boolean | false | Allow drag to adjust vertical body position. Requires yPosEnabled=true |
yPos, lockYPos, changeYOnScroll, and changeYOnDrag only take effect when yPosEnabled=true.UI Visibility Toggles
Hide specific UI elements to create simplified or custom user experiences. All visibility parameters are boolean; showForm defaults to false (form hidden), while the other hide* toggles default to false (visible).
| Parameter | Description |
|---|---|
showForm | Show the form UI panel. Default is false (3D model only) |
hideSexSelect | Hide the male/female body model toggle |
sexSelectInForm | Move the male/female toggle into the form panel instead of on the 3D view |
sexSelectPosition | Position of on-screen sex selector when it is shown outside the form |
confirmModalOnClick | Show a confirmation modal when the user clicks a body zone |
hideTooltip | Hide the hover tooltip that appears over zones |
hideHoverMarker | Hide the hover highlight marker on the 3D model |
hideZoneSelection | Hide the zone selection dropdown |
hidePainInput | Hide the entire pain input form |
hidePainSlider | Hide the pain intensity slider (keeps other pain fields) |
hidePainType | Hide the pain type selector (sharp, dull, burning, etc.) |
hidePainNotes | Hide the notes text field |
hideSubmitButton | Hide the submit button |
hideExport | Hide the JSON export button |
Use hidePainInput=true to hide the entire pain form, or combine individual toggles like
hidePainNotes=true&hideExport=true for precise control.
Zone Detail Level
Control the granularity of body zone names shown to users.
| Parameter | Type | Default | Description |
|---|---|---|---|
zoneDetailLevel | string | grouped | Zone granularity: grouped (23 broad body regions, e.g. “Left Arm”) or detailed (158 precise zones, e.g. “Front of Upper Arm”) |
Detailed mode (zoneDetailLevel=detailed) requires a Pro or Team license. Without a qualifying license the widget always uses the 23-region grouped mode, regardless of the URL parameter.
Form Positioning
Control where the UI form appears on screen.
| Parameter | Type | Default | Valid Values |
|---|---|---|---|
formPosition | string | top left | top left, top center, top right, center left, center right, bottom left, bottom center, bottom right |
sexSelectPosition | string | bottom center | top left, top center, top right, center left, center right, bottom left, bottom center, bottom right |
formPosition=top%20center).showForm=true and sexSelectPosition matches formPosition, the on-screen selector is stacked right below the form.Complete Configuration Example
Here’s an advanced example combining multiple customization options:
<!-- Advanced configuration with multiple parameters -->
<iframe
src="https://widget.persoscan.com?license=my-license-key&theme=dark&sex=female&autoRotate=true&autoRotateSpeed=1.5&hideExport=true&accentColor=%23a855f7&highlightColor=%23c084fc&bodyColor=%232d3748&bgColor=%231a202c"
width="800"
height="680"
allow="fullscreen"
style="border: none; color-scheme: light dark;"
title="PersoScan Widget"
></iframe>This configuration:
- Uses dark theme
- Defaults to female body model
- Enables auto-rotation at 1.5x speed
- Hides the export button
- Uses custom purple accent colors
- Dark body and background colors
Next Steps
- Quick Start - Canonical onboarding and integration checklist
- PostMessage API - Event and command contracts with runtime conditions
- Examples - See live demos with different configurations
- Zone Reference - All zone keys for
initialZoneand event handling - E-commerce Integrations - Platform-specific setup guides