// Project details

HubSpot–Pretix Event synchronisation

Industry
Associations & Organizations
Timeline
1 week
Services
Marketing Automation
Tech Stack
HubSpot & Pretix

An automated HubSpot–Pretix workflow converts event-list membership into verified registrations, prevents duplicates and creates an auditable sync trail.

Project Overview

The client runs recurring in-person and hybrid events as a core part of their marketing and community engagement.

Two systems were involved in running any given event: HubSpot, where events are created and marketed and where contact lists are managed, and Pretix, their dedicated ticketing/registration platform where attendees actually get their tickets.

These two systems had no connection to each other. HubSpot didn't know who had a Pretix ticket, and Pretix didn't know who was supposed to be invited based on HubSpot's marketing lists.

This project built the missing link between the two: a standardized setup process for configuring new events correctly, plus a custom automated workflow that turns HubSpot list membership directly into Pretix tickets, with built-in safeguards against duplicates and a way to audit that every run happened as expected.

Customer Challenge

The client needed a reliable guarantee that every contact on a HubSpot event-marketing list actually ended up with a corresponding Pretix ticket and that this happened without someone manually checking and creating orders one by one.

Before this project, that guarantee didn't exist. The process depended entirely on a person cross-referencing the HubSpot list against Pretix by hand and manually creating tickets/orders for anyone missing one. That manual dependency created three concrete risks that the client was actively exposed to:

  • Missed registrations: someone correctly added to a HubSpot marketing list could simply never get a Pretix ticket if the manual cross-check missed them, meaning a person who should be attending had no valid registration.
  • Duplicate manual entry: because there was no system tracking who already had an order, the same person could be entered and ticketed twice, creating cleanup work and confusing attendance numbers.
  • No single source of truth for attendance:with registration data manually maintained and disconnected from the marketing list that was supposed to drive it, the client had no confident answer to "who is actually attending this event," which matters both operationally (staffing, catering, capacity) and for post-event marketing follow-up.

This wasn't a one-off problem because the client runs events recurring, every single new event repeated this same manual risk, meaning the exposure compounded rather than being a single fixable incident.

Initial Situation

Before this project, the two systems operated independently with several concrete gaps:

  • No native sync path. Events were created and tracked in HubSpot Marketing Events, but Pretix had no built-in mechanism to read HubSpot list membership or write attendance data back. The connection between the two systems didn't exist at all.
  • Manual, filter-based list matching only. Contact-to-event matching relied on manually built HubSpot lists, filtered on a custom pretix_event_slugs property. This told you who should attend an event, but there was no automated process to convert that list membership into an actual Pretix order; a human had to do it.
  • No deduplication logic. Nothing checked whether a contact already had a Pretix order before a new one might be created, so duplicate tickets/orders were a live risk any time registration was touched more than once.
  • Manual permissioning per event. Pretix organizer/team permissions had to be configured by hand for every single event before any integration could even read or write attendee data for it. This wasn't a one-time setup, it repeated for every new event.
  • No standardized setup process. Because there was no documented procedure, every new event meant re-figuring-out and repeating the same configuration steps from scratch, with no guarantee of consistency between events or between team members doing the setup.

Solution

We built this in three parts:

‍

1. Standardized Pretix event setup and team configuration

We documented and implemented a repeatable 10-step setup process for every new event, including per-ticket required email collection using Ask and require input. Email is the join key used to match Pretix attendees back to HubSpot contacts.

The setup also requires selecting the correct organizer and granting the integration team event-level permissions. Pretix does not grant this access automatically when a new event is created.

‍

2. HubSpot–Pretix event sync

We connected Pretix events to HubSpot Marketing Events so that registration counts, participation and engagement can be viewed directly from HubSpot's Marketing Events dashboard. Teams can review attendance and no-shows without switching to Pretix for every check.

‍

3. Custom automated list-to-order workflow

The scheduled HubSpot workflow runs daily at 9:30 AM CEST. At the documented stage, it was gated to a single test contact before full rollout.

It uses two custom code actions:

  • Code 1: Pages through HubSpot Marketing Events via the API, filters events flagged uploaded_to_pretix, and extracts each event's pretix_event_slug.
  • Code 2: Retrieves the corresponding HubSpot contact list using pretix_event_slugs, loads all contacts and existing Pretix orders, then creates a new €0.00 paid order only when the contact has no existing registration.

‍

Handling pagination and preventing duplicates

HubSpot contact lists and Pretix orders can span multiple API pages. The implementation therefore uses the relevant after, offset or vidOffset cursors instead of assuming a single response contains every record.

The email-based duplicate check makes the workflow safe to run repeatedly without creating duplicate registrations.

Business Value / Outcome

Automatic event registrations from HubSpot lists, built-in duplicate prevention, and transparent sync statuses, reducing manual effort, keeping data clean, and giving the marketing team full control without developer support.