Skip to main content

How to track analytics events on your embedded registration form

Send events to Google Tag Manager, Google Analytics 4, and Facebook Pixel

Updated today

The Nunify registration embed widget can send analytics events to your existing tracking tools — Google Tag Manager, Google Analytics 4, and Facebook Pixel — so you can measure every step of your registration funnel without any extra instrumentation.

This guide explains what events are tracked, what data they carry, where they are sent, and how to turn tracking on.

Before You Begin

Make sure you have:

  • A Nunify event with an event code.

  • The Nunify embed script (embed.js) added to your page.

  • At least one of the following already installed on your page:

    • Google Tag Manager (window.dataLayer)

    • Google Analytics 4 (gtag)

    • Facebook Pixel (fbq)

Enabling Tracking

Add trackingEnabled: true to your widget configuration. That's it — the widget will automatically detect which analytics tools are present on your page and forward events to all of them.

<script>

window.NunifyWidgets.createRegistrationWidget({

eventCode: 'my-event-code',

elementId: 'registration-widget',

trackingEnabled: true,

});

</script>

What Events Are Tracked?

The widget tracks key moments in the registration funnel. Each event fires automatically as the attendee progresses through the form.

1. Registration Loaded (registration_loaded)

Sent when the registration form finishes loading inside the embed.

Data sent: None — this event simply signals that the form is ready.

2. Tickets Selected (tickets_selected)

Sent when the attendee picks their tickets and moves to the next step.

Data sent:

{
"tickets": [
{ "name": "Early Bird", "quantity": 2 },
{ "name": "VIP Pass", "quantity": 1 }
]
}

3. Attendee Details Filled (attendee_details_filled)

Sent after the attendee submits their details and an order is created on the backend.

Data sent: None.

4. Payment Required (payment_required)

Sent when the attendee is shown the payment step (only applies when the order total is greater than zero).

Data sent: None.

5. Order Success (order_success)

Sent when payment is confirmed and the registration is complete. This is the most data-rich event and carries the full order summary.

Data sent:

{
"order": {
"id": "order_abc123",
"total_amount_paid": 150.00,
"applied_coupon_code": "EARLYBIRD20",
"tickets": [
{ "ticket": "Early Bird", "addons": ["Workshop Access"] },
{ "ticket": "VIP Pass", "addons": [] }
]
}
}

Where Are Events Sent?

The widget maps registration events to standard ecommerce event names that each platform recognises. Events that don't have a specific mapping are forwarded with their original name and payload.

Google Tag Manager (dataLayer)

Registration Event

GTM Event Name

Ecommerce Data

Tickets Selected

add_to_cart

items[] with ticket name, category "Ticket", and quantity

Order Success

purchase

Transaction ID, total value, coupon code, and line-item details

All other events

Original name

Full payload as-is

Google Analytics 4 (gtag)

Registration Event

GA4 Event Name

Parameters

Tickets Selected

add_to_cart

items[] with ticket name and quantity

Order Success

purchase

transaction_id, value, coupon, and items[]

All other events

Original name

Full payload as params

Facebook Pixel (fbq)

Registration Event

FB Pixel Event

Parameters

Tickets Selected

AddToCart

content_type: "product", contents[] with ticket name and qty

Order Success

Purchase

content_type: "product", contents[], value, coupon

All other events

Original name

Full payload as params

UTM Parameter Forwarding

The widget automatically picks up UTM parameters from your page URL and passes them into the registration form. The following parameters are captured:

  • utm_source

  • utm_medium

  • utm_campaign

  • utm_content

  • utm_term

If you want to override the auto-detected values, pass a tracking object in the widget config:

window.NunifyWidgets.createRegistrationWidget({
eventCode: 'my-event-code',
elementId: 'registration-widget',
trackingEnabled: true,
tracking: {
utm_source: 'website',
utm_medium: 'embed',
utm_campaign: 'launch-2026',
},
});

Advanced: Handling Events Yourself with onTrackEvent

If you use a different analytics provider, or want to run custom logic when events fire, you can provide an onTrackEvent callback. This works independently of trackingEnabled — you can use both together, or just one.

<script>
window.NunifyWidgets.createRegistrationWidget({
eventCode: 'my-event-code',
elementId: 'registration-widget',

// Send events to GTM / GA4 / FB Pixel automatically
trackingEnabled: true,

// Also handle events yourself
onTrackEvent: function (event) {
console.log('Event:', event.kind, event.data);

// Example: forward to your own backend
fetch('/api/analytics', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
event_name: event.kind,
event_data: event.data,
timestamp: new Date().toISOString(),
}),
});
},

// Registration lifecycle callbacks
onRegistrationSuccess: function (data) {
console.log('Registration complete:', data);
},
onRegistrationFailure: function (data) {
console.log('Registration failed:', data);
},
});
</script>

The callback receives an object with two fields:

Field

Type

Description

kind

string

The event name (e.g., tickets_selected, order_success)

data

object

The event payload — an empty object {} for events that carry no data

Registration Funnel at a Glance

  Registration Loaded          ← form is ready

Tickets Selected ← attendee picks tickets

Attendee Details Filled ← form submitted, order created

Payment Required ← shown if total > $0

Order Success ← payment confirmed, registration complete

Each step fires an event that flows from the embed to your page, where it is forwarded to your analytics tools.

Frequently Asked Questions

Do I need to install anything extra for tracking to work?

No. Just set trackingEnabled: true and make sure your analytics scripts (GTM, GA4, or Facebook Pixel) are loaded on the same page as the embed. The widget handles the rest.

Can I use tracking with the modal (pop-up) widget too?

Yes. Both createRegistrationWidget (inline) and createRegistrationButtonWidget (modal) support the same tracking options.

What if I don't have GTM, GA4, or Facebook Pixel?

Use the onTrackEvent callback to capture events and send them wherever you need — your own backend, Mixpanel, Segment, or any other tool.

Will tracking slow down the registration form?

No. Events are dispatched asynchronously and do not block the registration flow.

Did this answer your question?