- Documentation
- Integrations
- Apps
- Eventbrite integration
Eventbrite integration
Trigger workflows on orders, check-ins, and event changes, and manage the full Eventbrite organization surface on behalf of your clients.
What it does
The Eventbrite integration lets your agency act the moment a client's event sells a ticket, and manage their whole Eventbrite footprint without leaving TaskJuice. Connect an Eventbrite account once and your workflows can create and publish events, build ticket classes and inventory tiers, run discounts and ticket groups, manage venues and organizer profiles, shape the registration questions attendees answer, pull sales and attendee reports, and read orders and attendees as they arrive.
TaskJuice registers the Eventbrite webhook for you. When you publish a workflow whose trigger is an Eventbrite event, TaskJuice creates the subscription on the organization you selected and tears it down when the workflow is unpublished. There is nothing to configure in the Eventbrite dashboard.
Connect an Eventbrite account
- Open the workflow editor, add an Eventbrite trigger or action, and click Connect on the node.
- Sign in to the Eventbrite account that owns the organization you want to wire up, and approve the requested access.
- Pick the organization on the node. Every Eventbrite trigger and most actions are scoped to one organization, and the picker lists the ones your connected account belongs to.
Eventbrite has no scopes model: a token carries the same permissions as the user who granted it. Make sure the account you connect has the Webhooks permission on the organization, or TaskJuice cannot register triggers for it.
To revoke access, open Eventbrite, go to Account Settings then App Management, and remove the TaskJuice authorization.
Triggers
Each trigger fires on one Eventbrite webhook action.
eventbrite/order-placedwhen an order is placed against an event.eventbrite/order-updatedwhen an existing order changes.eventbrite/order-refundedwhen an order is refunded.eventbrite/attendee-updatedwhen an attendee record changes.eventbrite/attendee-checked-inwhen an attendee's barcode is scanned in.eventbrite/attendee-checked-outwhen an attendee's barcode is scanned out.eventbrite/event-createdwhen a new event is created under the organization.eventbrite/event-updatedwhen an event changes.eventbrite/event-publishedwhen a draft event goes live.eventbrite/event-unpublishedwhen a live event is taken down.eventbrite/ticket-class-created,eventbrite/ticket-class-updatedandeventbrite/ticket-class-deletedon ticket class changes.eventbrite/organizer-updatedwhen an organizer profile changes.eventbrite/venue-updatedwhen a venue changes.
A delivery is a notification, not the record
This is the most important thing to know when building on these triggers. Eventbrite does not send the object that changed. The delivery body is only api_url and config, where api_url addresses the changed record on the Eventbrite API — so a trigger tells you that something happened and where to read it, never what it now says.
To work with the record itself, follow the trigger with the matching read action: Get Order after Order Placed, Order Updated or Order Refunded; Get Attendee after Attendee Checked In, Attendee Checked Out or Attendee Updated; Get Event after any of the event triggers; Get Ticket Class after a ticket class trigger.
An Eventbrite delivery carries api_url and config, and nothing else — there are no id fields alongside them. So you extract the id from api_url yourself with an expression, and map that into the read action's field.
api_url is a plain REST URL with a trailing slash, so the id is the last non-empty path segment:
$split($trigger.api_url, "/")[$ != ""][-1]For https://www.eventbriteapi.com/v3/orders/991538817/ that yields "991538817" — drop it into Get Order's Order ID field and Order Placed → Get Order is done.
Mind the trailing slash. $split($trigger.api_url, "/")[-1] looks right and returns an empty string, because splitting on / leaves a final empty segment. The [$ != ""] filter is what makes it correct.
Get Attendee needs two ids, and both are in the same URL — .../v3/events/1234567890/attendees/9876543210/. Count from the end:
$split($trigger.api_url, "/")[$ != ""][-1] /* attendee_id — 9876543210 */
$split($trigger.api_url, "/")[$ != ""][-3] /* event_id — 1234567890 */The same last-segment expression serves Get Event after an event trigger, Get Organizer after Organizer Updated, and Get Venue after Venue Updated.
Reading the id out of the URL is the pattern today because a trigger's declared output is exactly what the provider POSTs — TaskJuice does not fetch the record for you before the next node runs. Eventbrite is not alone in this: it is one of a group of providers that notify with a pointer rather than a payload, and closing that gap platform-wide is a design question that has not been settled yet.
Eventbrite does not sign its deliveries and does not let a subscription carry a caller-chosen header, so there is no signature to verify. Provenance rests on the unguessable ingress URL TaskJuice generates, plus the fact that hydrating api_url requires your own connection token. This matches how Zapier and Make handle the same provider.
Actions
Events. Create Event, Update Event, Get Event, Publish Event, Unpublish Event, Copy Event, Cancel Event, Delete Event, List Organization Events, List Venue Events, List Series Events, Get Event Series, Get Event Description, Create Event Schedule.
Tickets and inventory. Create Ticket Class, Update Ticket Class, Get Ticket Class, List Ticket Classes, List Ticket Classes For Sale, plus the full Inventory Tier set for events that use tiered capacity.
Orders and attendees. Get Order, List Event Orders, List Organization Orders, List User Orders, Get Attendee, List Event Attendees, List Organization Attendees.
Discounts and ticket groups. Create, Update, Get, Search and Delete Discount; Create, Update, Get, List and Delete Ticket Group; Add Ticket Class To Ticket Groups.
Registration questions. Custom questions and Eventbrite's built-in default questions, each with list, get, create and delete.
Event settings. Display Settings, Capacity Tier, Ticket Buyer Settings and Structured Content, each with a read and a write.
Organization. List Organizations, List Organization Members, List Organization Roles, List Organizers, Get Default Organizer, Create Organizer, Update Organizer, Create Venue, Update Venue, Get Venue, List Organization Venues, Get and Create Text Overrides, List Seat Maps, Create Seat Map.
Reporting and reference. Get Sales Report, Get Attendee Report, List Fee Rates, Calculate Price, List Categories, List Subcategories, List Formats and their single-record variants, Get Media, Get Media Upload, Get User.
Webhooks. List Webhooks, Create Webhook and Delete Webhook, for managing registrations that point at third-party endpoints. TaskJuice manages its own registrations for published workflow triggers, so you do not need these for ordinary use.
Known limitations
- Rate limit. Eventbrite's default limit is 2,000 calls per hour, budgeted separately
for the OAuth token and the API key. Every response carries an
x-rate-limitheader giving the calls used out of 2,000 and the seconds until the window resets, per lane — so a workflow can see how much budget is left rather than waiting to be refused. Over the limit, calls answer429 HIT_RATE_LIMIT. Note Eventbrite's API Terms of Use still print an older figure of 1,000; the live header and the API reference both say 2,000. High-volume backfills should be paced. - An event needs more than a draft before it can be published. Publish Event requires the event to carry a name and description, an organizer, at least one ticket class, and valid payment options; a series parent additionally requires every occurrence to be publishable. Create Event produces a draft, so add a ticket class before you publish. Publish answers argument errors naming the fields that failed.
- Reports take a period or a date range, never both. Supply either
period, as an integer number of days, orstart_dateandend_date. - Reports also need to know which events to cover. Supply either Event ids or Event status; Eventbrite refuses a report call carrying neither. Event status accepts
all,liveorended, and is the way to report across the whole organization without naming ids. - List Event Orders accepts only
allfor status. Eventbrite rejects the other values its documentation implies, includingplacedandrefunded, as invalid choices. - Create Discount requires a discount type. Eventbrite rejects a create that omits it, though its reference marks the field optional.
- A repeating event has to be created as one. Create Event Schedule works only on an event created with Is series switched on; Eventbrite answers
event_id - INVALIDfor an ordinary event, and will not convert one afterwards. - A recurrence rule is a full iCalendar block. Create Event Schedule wants a
DTSTART:line, a newline, then anRRULE:line, as inDTSTART:20270403T180000Zfollowed byRRULE:FREQ=WEEKLY;COUNT=3. A bareFREQ=...or a loneRRULE:FREQ=...is rejected. - Updating a venue replaces its whole address. Eventbrite requires City and Country on every venue update, including a rename, and clears any address field you leave blank, so restate the parts you want to keep.
- Image upload is not available as an action. Eventbrite issues an upload token and then expects a multipart upload to a storage host it names at runtime, which is outside what a declarative action can express. Get Media Upload returns the token and instructions.