Amondo Docs

The Web SDK emits analytics events automatically when an Imprint is embedded on a page. Events are sent to Amondo analytics when analytics is enabled, and are also dispatched on window as amondoEvent for debugging or custom analytics pipelines.

window.addEventListener('amondoEvent', (event) => {
  console.log(event.detail.event)
  console.log(event.detail)
})

Each dispatched event has an event field containing the event name. The remaining fields depend on the event type and the current Imprint, format, Tile and Frame context.

Common Properties

These properties are registered for the Web SDK session and appear on most events.

PropertyDescription
sdk_versionWeb SDK version.
imprint_idPublished Imprint identifier.
imprint_titleImprint title.
imprint_modeImprint format, for example GALLERY, CAROUSEL or STORY.
team_idTeam identifier for the Imprint.
rendering_modeNORMAL or ADS.
tiles_totalTotal number of Tiles in the Imprint, when available.
imprint_tag_analyticsOptional Imprint analytics tag.
amo_user_idOptional user identifier passed through analytics.userId.
connection_typeBrowser network effective connection type, when available.
browser_languageBrowser language.
$device_typeDevice type inferred by PostHog.
prefers_dark_modeBrowser colour scheme preference.
prefers_reduced_motionBrowser reduced-motion preference.
viewport_wPage viewport width in CSS pixels. Uses analytics.viewport.width when a valid host viewport is provided; otherwise SDK-measured when available.
viewport_hPage viewport height in CSS pixels. Uses analytics.viewport.height when a valid host viewport is provided; otherwise SDK-measured when available.
scroll_yPage scroll offset in CSS pixels. Uses analytics.viewport.scrollY when supplied; otherwise SDK-measured when available.
viewport_sourceViewport measurement source: host_provided, sdk_measured or unavailable.

Custom values passed in analytics.options are added to the session and sent with Web SDK events. Viewport properties are registered after analytics.options, so SDK viewport fields take precedence over custom values with the same names.

media_url and outcome_media_url contain the media URL used by the SDK for the Tile or Reveal outcome. For Cloudinary-hosted media, the SDK uses the selected delivery URL when available and falls back to publicUrl or secureUrl.

Click and tap analytics can include container-relative interaction coordinates for heat-map analysis. imprint_click_x_px and imprint_click_y_px are measured in pixels from the top-left of the SDK container, rounded and clamped to the container bounds. Keyboard-generated clicks do not include these properties.

Timing Properties

imprint_time_ms is added to captured events. It measures accumulated time while the Imprint is considered in view. The timer pauses when the Imprint leaves view or the page becomes hidden. $pageleave also receives imprint_time_ms before the event is sent.

The default Imprint viewed threshold is 0%. Integrations can set analytics.imprintViewedThresholdPercent to require a higher visible percentage before imprint_viewed fires.

tile_time_ms is only added to tile_left. It measures wall-clock time from the qualified tile_viewed event to leave or cleanup.

time_spent_ms appears on Frame events that measure active Frame dwell time.

Page and Imprint Events

EventRuns whenKey properties
$pageviewWeb SDK analytics initialises. Emitted across supported rendering modes, including ADS.Common properties, imprint_time_ms.
$pageleaveThe browser page is left or hidden. Emitted once per SDK instance across supported rendering modes, including ADS.Common properties, current page, slide or story context, imprint_time_ms.
imprint_viewedThe Imprint reaches the configured viewed threshold.Common properties, imprint_time_ms.
imprint_qualifiedThe Imprint stays sufficiently visible for 1 continuous second. Can fire again after leaving and re-entering view.Common properties, imprint_time_ms.
imprint_leftThe Imprint leaves the viewport after being viewed.Common properties, scrolled_percentage, imprint_time_ms.
imprint_scrolledA Gallery Imprint scroll percentage changes.Common properties, scrolled_percentage, imprint_time_ms.

Format Events

EventFormatRuns whenKey properties
page_changedGalleryUser changes Gallery page.page_id, page_index, opened_from_url, changed_from_frame, imprint_time_ms.
slide_viewedCarouselCarousel slide is viewed, including initial active slide.slide_id, slide_index, imprint_time_ms.
slide_changedCarouselUser navigates to another slide by arrow or swipe.slide_id, slide_index, subsequent_slide_id, subsequent_slide_index, direction, imprint_time_ms.
story_viewedStoriesStory section appears in the viewport.story_id, story_title, story_index, story_state, imprint_time_ms.
story_clickedStoriesUser clicks a story cover or highlight.story_id, story_title, story_index, story_state, imprint_click_x_px, imprint_click_y_px, imprint_time_ms.
story_openedStoriesStory opens in Frame view.story_id, story_title, story_index, story_state, imprint_time_ms.
story_leftStoriesStory section leaves the viewport after being viewed.story_id, story_title, story_index, story_state, imprint_time_ms.

Tile and Frame Events

EventRuns whenKey properties
tile_viewedA Tile is at least 50% visible after the scroll-stable delay. Default delay is 300ms.tile_id, tile_type, tile_source, media_url, media_type, tile_tag_analytics, imprint_time_ms.
tile_leftA previously viewed Tile leaves view or unmounts.tile_id, tile_type, tile_source, media_url, media_type, tile_tag_analytics, tile_time_ms, imprint_time_ms.
tile_clickedUser clicks or taps a Tile.tile_id, tile_type, tile_source, media_url, media_type, tile_tag_analytics, imprint_click_x_px, imprint_click_y_px, imprint_time_ms.
frame_viewedFrame opens or Frame navigation lands on a new Tile.tile_id, tile_type, tile_source, opened_from_url, media_url, media_type, tile_tag_analytics, imprint_time_ms.
frame_changedUser or autoplay moves to another Tile in Frame view. Navigation is cooldown-limited to 200ms.tile_id, subsequent_tile_id, direction, changed_method, time_spent_ms, media_url, media_type, tile_tag_analytics, imprint_time_ms.
frame_closedFrame closes or is dismissed.tile_id, tile_type, tile_source, time_spent_ms, media_url, media_type, tile_tag_analytics, imprint_time_ms.
frame_story_changedFrame navigation crosses from one story section to another.prev_story_id, new_story_id, direction, story_state, imprint_time_ms.
source_clickedUser clicks a source or attribution link.tile_id, tile_type, tile_source, destination_url, tile_tag_analytics, imprint_click_x_px, imprint_click_y_px, imprint_time_ms.
cta_clickedUser clicks a Clickthrough, Quiz, Poll or Reveal CTA.tile_id, tile_type, tile_source, destination_url, cta_label, outcome_id, outcome_media_url, outcome_media_type, tile_tag_analytics, imprint_click_x_px, imprint_click_y_px, imprint_time_ms.

Video Events

EventRuns whenKey properties
video_playedA video crosses a tracked progress point. The duration value is 0, 50, 90 or 100.tile_id, media_url, duration, loop, tile_tag_analytics, imprint_time_ms.
video_midpoint_reachedFirst play of a video reaches 50%. This fires once for loop 0.tile_id, media_url, tile_tag_analytics, imprint_time_ms.

Activation Tile Events

EventTile typeRuns whenKey properties
quiz_startedQuizUser starts a Quiz Tile.tile_id, tile_tag_analytics, imprint_time_ms.
question_answeredQuizUser selects an answer.tile_id, question_index, answer_index, is_correct, tile_tag_analytics, imprint_time_ms.
question_finishedQuizUser advances from a non-final question.tile_id, question_index, tile_tag_analytics, imprint_time_ms.
quiz_finishedQuizUser completes all quiz questions.tile_id, tile_tag_analytics, imprint_time_ms.
quiz_retriedQuizUser restarts a completed quiz.tile_id, tile_tag_analytics, imprint_time_ms.
quiz_sharedQuizUser shares the quiz result.tile_id, tile_tag_analytics, imprint_time_ms.
poll_votedPollVote submission succeeds and results are returned.tile_id, option_id, tile_tag_analytics, imprint_time_ms.
poll_sharedPollUser shares poll results.tile_id, tile_tag_analytics, imprint_time_ms.
reveal_startedRevealUser first interacts with a Reveal Tile. Fires once per Tile instance.tile_id, reveal_type, outcome_id, outcome_media_url, outcome_media_type, tile_tag_analytics, imprint_click_x_px, imprint_click_y_px, imprint_time_ms.
tile_scratchedRevealScratch Reveal progress milestone is reached. Fires once for each milestone.tile_id, reveal_type, outcome_id, outcome_media_url, outcome_media_type, scratch_milestone, scratch_percentage, tile_tag_analytics, imprint_time_ms.
reveal_completedRevealReveal outcome is shown.tile_id, reveal_type, outcome_id, outcome_media_url, outcome_media_type, time_to_reveal_ms, scratch_percentage, tile_tag_analytics, imprint_time_ms.

tile_scratched is emitted only for Scratch Reveal Tiles. The tracked milestones are 10_percent, 50_percent and done. Broken-cover auto-reveal does not emit tile_scratched.

Form Tile Events

Form Tiles emit a drop-off funnel. The same events fire on two surfaces: the Web SDK embed (a Form Tile rendered inside an Imprint) and the standalone public form page. Every form event carries form_surface (embed or standalone) so the two surfaces can be segmented. Form events fire client-side only.

A form moves through up to three screens — intro (optional), content (the fields) and final (confirmation) — and the events map onto those transitions plus the submit outcomes.

EventRuns whenFrequency
form_intro_viewedThe intro screen renders. Only emitted when the form has an intro screen.Once per visit
form_viewedThe content/fields screen renders. This is the funnel denominator and fires for both intro and intro-less forms.Once per visit
form_startedThe first field loses focus, regardless of whether a value was entered.Once per visit
field_filledA field is completed: text, email or date on blur with a value; checkbox or choice on change; media on upload complete.Once per field
form_submit_blockedSubmit is blocked client-side before any mutation runs. Carries reason.Per attempt
form_submittedThe submit mutation resolves successfully.Per success
form_submit_failedThe submit mutation rejects from a server or network error.Per failure
form_completedThe final/confirmation screen renders. Roughly 1:1 with form_submitted on the happy path.Once per visit
form_resubmittedThe visitor starts a second pass via the resubmit action. The once-per-visit view events do not re-fire.Per resubmit

Form event properties

Every form event carries:

PropertyTypeNotes
tile_idStringThe Form Tile id. Primary per-form identifier.
form_surfaceStringembed or standalone.
form_tag_analyticsStringPresent only when the Tile has an author-set analytics tag.

On the embed surface, form events also inherit the Web SDK session common properties, including imprint_id and team_id (team_id is embed-only). On the standalone surface, form events also carry form_slug (the public page slug), and the page emits $pageview and $pageleave.

field_filled adds:

PropertyTypeNotes
field_idStringThe field id.
field_typeStringFor example text, email, date, checkbox, choice or media.
field_labelStringThe field's author-defined label.
field_requiredBooleanWhether the field is required.
field_positionNumericThe field's index in the form.

form_submit_blocked adds reason, one of missing_required, invalid_email, media_uploading or empty_form.

No user-entered values are ever sent. Form event payloads are a fixed allowlist of field metadata only — never field contents, including no answer values.

Reading the funnel

The primary drop-off funnel is:

form_viewed → form_started → field_filled (per field) → form_submitted

Segment by form_surface, tile_id or form_slug, and form_tag_analytics. Submit failures, client-side blocks and silent abandonment are distinguishable through form_submit_failed, form_submit_blocked and the absence of form_submitted.

Measurement caveats:

  • form_started and field_filled rely on blur, so autofill or Enter-to-submit without a blur can under-count.
  • The funnel localizes drop-off to the last completed field, not the last reached field. A focused-but-empty field emits nothing.
  • An embed Frame reopen (remount) re-fires the once-per-visit events. Dedupe is in-memory per mount.

Events Not Currently Emitted

The Web SDK does not currently emit canonical events for ugc_upload, competition_entry or a generic share. Share behaviour is currently represented by quiz_shared and poll_shared. Form funnel events are documented under Form Tile Events.

Do not add tile_dwell_3s or tile_dwell_10s as separate events. Derive dwell thresholds from tile_left.tile_time_ms.