Skip to content

Interface: PromotionData ​

Payload for the two promotion events emitted by the iframe runtime when a user interacts with a promotion surface authored in the Mapsted CMS (banners, deal cards, sponsored POI tiles, etc.):

  • promotionClick — fires the moment the promotion surface is clicked or tapped. Use this for analytics, deep-link routing, or to overlay a confirmation/coupon UI on top of the map.
  • promotionDetails — fires when the iframe opens its built-in detail view for the promotion (e.g. a "View deal" expansion). Use this if you'd rather suppress the iframe-native detail UI and render your own panel against the host page chrome.

Both events deliver the same PromotionData shape so a single handler can route by event name.

Example ​

ts
import { on } from '@mapsted/maps-js-api';

on('promotionClick', (promo) => {
  if (promo.entity) {
    analytics.track('promo_click', {
      entity_id: promo.entity.entityId,
    });
    navigateToDealPage(promo.entity.entityId);
  }
});

See Promotions on map for a full banner-on-map UI walkthrough.

Indexable ​

ts
[key: string]: unknown

Additional CMS-authored metadata forwarded verbatim from the iframe runtime. Common keys observed in production payloads:

  • imageUrl?: string — promotion artwork (CMS-uploaded)
  • headline?: string / subheadline?: string — display text
  • ctaText?: string / ctaUrl?: string — call-to-action
  • validFrom?: string / validTo?: string — ISO 8601 window
  • tenantId?: string — multi-tenant property scoping

Treat the index signature as unknown and narrow at the call site — the CMS schema is the source of truth and may vary by property tenant.

Properties ​

PropertyTypeDescription
entity?EntityDataMapsted entity bound to this promotion (POI, building, floor, etc.). The id field is stable across sessions and is the canonical key to forward to your back-end deal/coupon system.