If you run events in HubSpot, you've probably done this dance. Someone fills in your registration form. HubSpot logs the submission. But your Marketing Event still shows zero registrants.
So you export the form fills, reimport them against the event to mark everyone "registered," then do the whole thing again after the event to mark who actually turned up.
One marketer on the HubSpot Community put it perfectly. Without automation, Marketing Events are "glorified lists."
It doesn't have to run like that. Here's how to connect a form straight to a Marketing Event so registration happens on its own. The native way, the developer way, and the way that actually holds up when you're running a lot of events.
In HubSpot, a form submission and a Marketing Event registration are two separate things.
The form captures the contact. The Marketing Event tracks who's registered, attended, or cancelled. Nothing automatically tells the event "this person just registered." You have to connect the two yourself.
For a long time there was no clean way to do that inside HubSpot, so teams did one of two things. They exported form submissions and reimported them against the event by hand. Or they gave up on the Marketing Event object entirely and built a custom object, because custom objects actually work with workflows and reporting.
Both are work you shouldn't have to do. Let's fix it.
Good news first. HubSpot added a workflow action that handles this, and most people still don't know it exists.
Here's how to set it up.
That's it. Every contact who submits the form now gets registered to the event automatically. No export. No reimport. HubSpot's own guide to adding contacts to marketing events with workflows walks through the same steps.
For a single event, manually created, this genuinely solves it.
The workflow action is good. It's also got three catches that bite the moment you scale.
It only works for events you created manually in HubSpot. If your event was synced in from Zoom or Eventbrite, the action won't touch it. That's the exact situation most webinar runners are in. The registration data lands in HubSpot through the integration, and you still can't act on it. One user described that integration as feeling "meaningless" for exactly this reason.
You build it per event. One workflow, one form mapping, one event. Fine for a couple of events a quarter. Run 20 a month and you're rebuilding the same wiring every single week. That's where the hours go.
Attendance is a second job. Registered is one stage. To mark people as Attended you need another step, usually another import or a separate sync from your webinar platform after the event. So you've automated half of it and you're back to manual for the rest.
And recurring or multi-session events get messy fast. One form across several sessions, the Zoom join link that overwrites itself every time someone registers for the next date, branching logic by session. The native action wasn't built for that.
If you've got development resource, there's a cleaner technical option.
The Marketing Events API lets you set a contact's participant state directly. You send the contact and the event with subscriberState set to REGISTERED, and you can reference the event by its objectId or by your own externalEventId. The calls are idempotent, so you can set the state more than once without HubSpot creating duplicate records.
It's the tidiest native path, and it works around the manual-event limitation. The catch is obvious: it needs someone who writes code, and someone who maintains it when HubSpot or your webinar tool changes. For most marketing teams, that's a dependency they don't have on tap.
This is the gap we built EventEngine to close.
Instead of wiring a workflow per event, EventEngine creates a record for every single registration. A dedicated object that links the contact to that specific event and triggers your workflows on its own. It's the bit native Marketing Events can't do.
A few things change once that's in place.
Registration happens automatically from one shared form, across every event, with no per-event rebuild. It works whether the event is in person, a webinar, or hybrid. Each registration fires your workflows directly, so confirmations, reminders, and follow-up just run. Attendance feeds back too, including QR code check-in on the day, tracked straight into HubSpot.
And the data stays clean on event 50 instead of getting messier with every clone.
You configure it once. Every event after that inherits it.
If you only run the odd event and you create it manually, use HubSpot's Add participant to marketing event workflow action. It's free, it's native, and most people miss it.
If you've got developers, the Marketing Events API gives you a cleaner, more flexible version of the same thing.
If you're running real volume, pulling events in from Zoom or Eventbrite, or you're tired of rebuilding the same workflow every week, that's where a purpose-built layer like EventEngine earns its place.
Whichever route you take, stop exporting and reimporting lists. Your Marketing Events should fill themselves.
If you run events in HubSpot and the setup is eating your week, take a look at EventEngine.