Hotspots

Add interactive callouts to any frame of your 360° product viewer — place markers, tooltips, links, and cards directly on the model.

Hotspots are interactive callouts attached to a specific frame and position. They let you annotate a feature, add a product link, display a detail image, or show a persistent label — all without leaving the viewer.

Plan limits

The number of hotspots you can add per project depends on your plan.

PlanHotspots per project
Hobby3
Growth10
Pro50
CustomUnlimited

The Studio interface displays your current count against the limit. When you reach the limit, clicking on the viewer shows a toast message and the header displays an upgrade link.

Place a hotspot in Studio

  1. Open a project in the dashboard and go to the Studio tab.
  2. Rotate the viewer to the frame where the feature is most visible.
  3. Click the area on the product where the marker should appear.
  4. The hotspot is added immediately at the normalized x/y position.
  5. Select the hotspot in the list to set its label, type, style, and content.
  6. Click Save label to persist changes.

Meshless stores x and y as values from 0 to 1 (fraction of frame width and height). Placement is stable across embed sizes and device widths.

Frame and row coordinates

Each hotspot belongs to one frame. For multi-row captures, it also belongs to one row.

FieldMeaning
frameZero-based horizontal frame index (0 = start of rotation)
rowZero-based vertical row index. null for single-row projects.
xHorizontal position from left edge (0) to right edge (1)
yVertical position from top edge (0) to bottom edge (1)

To move a hotspot to a different frame, rotate the viewer to the target frame and use Move to F in the editor panel.

Hotspot types

TypeUse it forRequired content
infoMaterials, features, specs, care notestitle, body, or label
linkSize guides, product bundles, documentation pagesurl; optional urlLabel
imageTexture detail, close-up photography, diagramsimageUrl; optional title and body
labelShort persistent labels on materials or featureslabel

Visual variants

VariantAppearanceBest use
dotMinimal circular pulse markerDense product imagery where a full tag would obscure detail
tagCompact pill with labelShort visible labels, e.g. material names
cardRich callout surface with image, title, body, and CTADetailed explanatory content, product links

The visual variant is independent from the type. A link hotspot can appear as a dot, tag, or card.

Appearance settings

PropertyDescription
labelShort visible label (used in tag and label types)
titleCallout heading shown in card and info popups
bodyBody text shown in card and info popups
urlLink destination for link-type hotspots
urlLabelCTA button label (defaults to "Learn more")
imageUrlImage shown in image-type hotspots
iconShort icon text shown inside the dot marker, e.g. i, +
accentColorMarker, border, or CTA color (hex)
backgroundColorPopup or tag fill color (hex)
textColorPopup or tag text color (hex)
openInNewTabWhether the link opens in a new tab. Defaults to true.
isVisibleHides the hotspot from live embeds without deleting it. Useful for drafts.

Saved vs dynamic hotspots

Meshless supports two hotspot layers that render simultaneously in embeds.

LayerSourceBest for
SavedProject Studio / APICanonical product information managed by the team
DynamicJavaScript postMessageCMS-driven copy, campaign overlays, personalization

Dynamic hotspots are provided by your page JavaScript and do not persist to the project. They do not count against the plan limit.

API fields

Hotspots created through the REST API use the same shape as Studio. All fields are optional except frame, x, and y.

{
  "frame": 12,
  "row": null,
  "x": 0.42,
  "y": 0.31,
  "label": "Merino wool",
  "type": "info",
  "variant": "tag",
  "title": "100% Merino Wool",
  "body": "Naturally temperature-regulating and machine-washable.",
  "url": null,
  "urlLabel": null,
  "imageUrl": null,
  "icon": null,
  "accentColor": "#3b82f6",
  "backgroundColor": null,
  "textColor": null,
  "openInNewTab": true,
  "isVisible": true
}

See API Reference for full endpoint documentation.

JavaScript runtime control

You can manage hotspots from your page JavaScript after the embed has loaded. See JavaScript SDK for the full postMessage event reference.

Editorial tips

  • Rotate to the frame where the feature is most visible before placing the hotspot — the viewer face-on shot is usually frame 0 or the center of the rotation arc.
  • Use card for explanatory content and tag for short persistent labels.
  • Keep label text short enough to read on mobile (under 20 characters).
  • Use isVisible: false to draft a hotspot without exposing it in live embeds.
  • On multi-row captures, place separate hotspots for each row where the feature is visible — the viewer shows only the hotspot matching the current frame and row.