Skip to main content

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

  1. Open the workflow editor, add an Eventbrite trigger or action, and click Connect on the node.
  2. Sign in to the Eventbrite account that owns the organization you want to wire up, and approve the requested access.
  3. 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-placed when an order is placed against an event.
  • eventbrite/order-updated when an existing order changes.
  • eventbrite/order-refunded when an order is refunded.
  • eventbrite/attendee-updated when an attendee record changes.
  • eventbrite/attendee-checked-in when an attendee's barcode is scanned in.
  • eventbrite/attendee-checked-out when an attendee's barcode is scanned out.
  • eventbrite/event-created when a new event is created under the organization.
  • eventbrite/event-updated when an event changes.
  • eventbrite/event-published when a draft event goes live.
  • eventbrite/event-unpublished when a live event is taken down.
  • eventbrite/ticket-class-created, eventbrite/ticket-class-updated and eventbrite/ticket-class-deleted on ticket class changes.
  • eventbrite/organizer-updated when an organizer profile changes.
  • eventbrite/venue-updated when 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-limit header 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 answer 429 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, or start_date and end_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, live or ended, and is the way to report across the whole organization without naming ids.
  • List Event Orders accepts only all for status. Eventbrite rejects the other values its documentation implies, including placed and refunded, 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 - INVALID for 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 an RRULE: line, as in DTSTART:20270403T180000Z followed by RRULE:FREQ=WEEKLY;COUNT=3. A bare FREQ=... or a lone RRULE: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.
Was this helpful?