Engage · Interaction events

See exactly how users interact with your guidance

Every tour step, help popup, FAQ view, consent choice and achievement emits a structured event. Pipe them into the analytics and product tools you already use.

Get started · See pricing

macaw.on('tour.completed', (e) =>
  analytics.track('Tour completed', { tour: e.trigger }));
macaw.on('consent.*', (e) => syncConsent(e));

// Google Tag Manager, no code changes
window.addEventListener('macaw:event', (e) =>
  dataLayer.push({ event: 'macaw', ...e.detail }));

What you get

  • Three ways to listen

    An onEvent callback, targeted on('tour.completed') subscriptions, or a macaw:event window event for tag managers.

  • Consistent envelope

    Each event carries an id, type, category, space, user, trigger and timestamp.

  • Wildcards

    Subscribe to one type, a whole category like consent.*, or everything with *.

  • Safe by design

    A handler that throws is caught and logged. It never breaks the widget.

How teams use it

  • Tour funnels

    Find the step where users drop out of onboarding.

  • Help effectiveness

    Learn which popups get opened, and on which screens.

  • Consent reporting

    Send consent changes to your own systems as they happen.

All in the same SDK