Skip to main content
RapidDev - Software Development Agency
retool-integrationsREST API Resource

How to Integrate Retool with Eventbrite

Connect Retool to Eventbrite using a REST API Resource with a private token as Bearer authentication. Once connected, you can build event management panels that track ticket sales, manage attendee lists, process check-ins, and view event analytics — providing a real-time operations dashboard for event teams that Eventbrite's native interface cannot fully match.

What you'll learn

  • How to generate an Eventbrite private token and configure a REST API Resource in Retool
  • How to query Eventbrite events, attendees, and orders using GET requests with filter parameters
  • How to use JavaScript transformers to reshape Eventbrite's paginated API response format
  • How to build a real-time event operations dashboard with attendee tracking and ticket sale metrics
  • How to use Retool Workflows to receive Eventbrite webhook events for check-in processing
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner15 min read15 minutesOtherLast updated April 2026RapidDev Engineering Team
TL;DR

Connect Retool to Eventbrite using a REST API Resource with a private token as Bearer authentication. Once connected, you can build event management panels that track ticket sales, manage attendee lists, process check-ins, and view event analytics — providing a real-time operations dashboard for event teams that Eventbrite's native interface cannot fully match.

Quick facts about this guide
FactValue
ToolEventbrite
CategoryOther
MethodREST API Resource
DifficultyBeginner
Time required15 minutes
Last updatedApril 2026

Build a Real-Time Event Operations Dashboard with Eventbrite and Retool

Eventbrite handles ticketing and registration elegantly, but event operations teams running large conferences, festivals, or corporate events quickly need capabilities beyond what Eventbrite's Organizer app provides: custom attendee filtering for VIP badge printing, real-time check-in rate dashboards displayed on event-floor screens, bulk attendee data exports combined with hotel room block assignments, or multi-event comparison reports for post-event analysis. Retool provides this custom operations layer by connecting directly to Eventbrite's REST API.

The integration is straightforward: Eventbrite issues private API tokens that work as Bearer tokens, requiring minimal configuration in Retool's REST API Resource. From there, the full Eventbrite API is accessible — event details, ticket class inventory, attendee profiles including custom registration questions, order history, check-in tracking, and discount codes. Retool's Table and Chart components give event teams fast, filterable views that the Eventbrite Organizer app cannot provide with comparable flexibility.

For events operations teams that also manage venue logistics, catering, or hotel room blocks in separate systems, Retool's multi-resource architecture makes it possible to build a unified event command center — attendee data from Eventbrite alongside room assignments from a database, catering headcounts from a spreadsheet-connected resource, and real-time check-in metrics updating every few minutes automatically.

Integration method

REST API Resource

Eventbrite connects to Retool via a REST API Resource using a private API token passed as a Bearer token. Alternatively, Eventbrite supports OAuth 2.0 for accessing data from multiple organizer accounts. You configure the base URL and token once in Retool's Resources tab, then build queries for events, attendees, and orders. Retool proxies all requests server-side, keeping credentials off the browser.

Prerequisites

  • An Eventbrite organizer account with at least one active or upcoming event
  • A Retool account (Cloud or self-hosted) with permission to create Resources
  • An Eventbrite private API token, generated from your Eventbrite account under Account Settings → Developer Links → API Keys
  • The event IDs for the events you want to surface in Retool (visible in the Eventbrite URL or via the API)
  • Basic familiarity with Retool's query editor and component panel

Step-by-step guide

1

Generate an Eventbrite private API token

Eventbrite provides private API tokens for accessing data from your own organizer account without requiring end users to authorize via OAuth. To generate a token, log into your Eventbrite account at eventbrite.com. Navigate to Account Settings (click your avatar in the top-right corner, then Account Settings). In the left sidebar, scroll down to find 'Developer Links' or navigate directly to eventbrite.com/platform/api-keys. On the API keys page, you will see your existing applications and the option to create new ones. Click 'Create API Key' or find an existing key. Each API key has a 'Private Token' — this is what you use as a Bearer token in Retool for accessing your own organizer data. Copy the private token value and store it securely. Private tokens provide full access to your Eventbrite organizer account — treat them like a password. For accessing data across multiple organizer accounts (for event agencies managing many clients), you would use Eventbrite's OAuth 2.0 flow to obtain account-specific access tokens. However, for most use cases involving a single organizer account, the private token is sufficient and significantly simpler to configure. Note that Eventbrite's private tokens do not expire automatically, but you can revoke them from the API keys page if credentials are compromised.

Pro tip: Eventbrite's private token is shown on the API keys page next to your app. If you cannot see it, look for a 'Show' button or 'Private Token' label — it may be hidden by default.

Expected result: An Eventbrite private token is copied and stored securely, ready to configure as a Bearer token in Retool.

2

Create a REST API Resource in Retool

In Retool, navigate to the Resources tab and click '+ Create new'. Select 'REST API' from the connector list. In the Name field, enter 'Eventbrite API'. For the Base URL, enter https://www.eventbriteapi.com/v3. For Authentication, select 'Bearer token' and paste your Eventbrite private token into the token field. Click 'Save resource'. Retool saves the configuration and makes it available to all apps in your organization. All requests are proxied server-side through Retool's backend, so the Bearer token is never transmitted to browser clients and CORS is not an issue. Once saved, test the connection by creating a quick GET query to /users/me/ — if it returns your Eventbrite account information, the token is working correctly. If your organization manages events across multiple Eventbrite accounts, create a separate REST API resource for each account with its corresponding private token, and name resources clearly (e.g., 'Eventbrite - Main Account', 'Eventbrite - Partner Account'). For production apps where token security is critical, store the private token as a secret configuration variable in Retool (Settings → Configuration Variables, mark as secret) and reference it in the resource using {{ retoolContext.configVars.EVENTBRITE_TOKEN }}.

Pro tip: Test your resource immediately after saving by creating a GET query to /users/me/ — this validates both the base URL and the Bearer token before you invest time building queries.

Expected result: A saved REST API Resource named 'Eventbrite API' appears in Retool's Resources list. A test query to /users/me/ returns your Eventbrite organizer account details.

3

Write queries to fetch events and attendees

Open your Retool app or create a new one. In the Code panel, click '+ New query' and select your Eventbrite API resource. Create a query to list all events for your organization: Method GET, path /organizations/{organization_id}/events/ — you can find your organization ID from the /users/me/ response (look for the 'organizations' array). Add URL parameters: status set to live,started,ended,complete for a broad view or just live for upcoming-only, time_filter set to current_future for events happening now or in the future, order_by set to start_asc, and page_size set to 50. Name this query getEvents. Create an attendees query: Method GET, path /events/{{ eventsTable.selectedRow.id }}/attendees/. Add parameters: page_size set to 100, page set to {{ attendeesTable.paginationOffset / 100 + 1 || 1 }}, and status set to attending for only confirmed attendees. Name this query getAttendees. Create a ticket classes query: Method GET, path /events/{{ eventsTable.selectedRow.id }}/ticket_classes/. Name this query getTicketClasses. Run each query to inspect the response structure — Eventbrite uses a pagination object with page_count, page_number, page_size, and object_count alongside the data array named after the resource type (events, attendees, ticket_classes).

query-config.json
1{
2 "method": "GET",
3 "path": "/organizations/YOUR_ORG_ID/events/",
4 "params": {
5 "status": "live,started",
6 "time_filter": "current_future",
7 "order_by": "start_asc",
8 "page_size": "50",
9 "expand": "ticket_availability"
10 }
11}

Pro tip: Add 'expand=ticket_availability' to the events query to get ticket sold/remaining counts included directly in the event response, avoiding a separate ticket_classes query for the list view.

Expected result: The getEvents query returns a JSON object with a 'events' array and a 'pagination' object. The getAttendees query returns attendees for the selected event. Both display data in the query result panel.

4

Transform responses and build the event operations dashboard

Eventbrite's API responses contain nested objects for dates, costs, venue, and custom form responses that need flattening before binding to Retool components. In the getEvents query editor, click 'Advanced' → toggle 'Transform results'. Write a transformer that maps each event in data.events to a flat row. Key fields: id, name.text for the event title, start.local for the local start time, end.local for the end time, status, capacity, and ticket_availability.quantity_sold if you used the expand parameter. For attendees, write a transformer on getAttendees that maps each attendee to a flat row: name, email, ticket class name, answers to custom questions (answers array where each item has question and answer fields), and checked_in boolean. Custom questions are stored in answers[n].answer — you need to know which question index corresponds to which question for your event's registration form. After writing transformers, drag two Table components onto the canvas. Set the first to {{ getEvents.data }} for the events list. Set the second to {{ getAttendees.data }} for the attendee list, configured to load when an event is selected. Enable server-side pagination on the attendees table with total row count from {{ getAttendees.rawData.pagination.object_count }}. Add KPI Text components above the attendees table showing total sold, total checked in, and check-in percentage calculated from the attendee data. For large event check-in tracking across multiple venues or time slots, and integration with badge printing or registration kiosks, RapidDev's team can help build a comprehensive Retool event operations solution.

transformer.js
1// Transformer: flatten Eventbrite attendees
2const attendees = data.attendees || [];
3return attendees.map(att => {
4 // Extract custom question answers
5 const answers = {};
6 (att.answers || []).forEach(a => {
7 answers[a.question.replace(/\s+/g, '_').toLowerCase()] = a.answer;
8 });
9 return {
10 attendee_id: att.id,
11 name: `${att.profile.first_name || ''} ${att.profile.last_name || ''}`.trim(),
12 email: att.profile.email,
13 company: att.profile.company || 'N/A',
14 job_title: att.profile.job_title || 'N/A',
15 ticket_class: att.ticket_class_name || att.ticket_class_id,
16 checked_in: att.checked_in,
17 check_in_time: att.checked_in
18 ? new Date(att.barcodes?.[0]?.changed || att.created).toLocaleString()
19 : 'Not checked in',
20 order_id: att.order_id,
21 ...answers
22 };
23});

Pro tip: Custom registration question answers are spread into the flat row using the question text as the key (normalized to snake_case). This makes all custom fields directly accessible as columns without knowing field IDs in advance.

Expected result: The events Table displays all upcoming events with ticket sales and capacity data. The attendees Table shows all registrants for the selected event with check-in status. KPI cards show real-time check-in metrics.

5

Add auto-refresh and Workflow-based webhook processing

For a production event operations dashboard, implement automatic data refresh and webhook-based real-time updates. For automatic refresh, select the getAttendees query in the Code panel, click the 'Advanced' tab, and enable 'Run query on a schedule'. Set the interval to 60000 ms (1 minute) for near-real-time check-in tracking during events. Also enable it on getEvents at 300000 ms (5 minutes) since events change less frequently. Add a manual 'Refresh Now' Button component at the top of the dashboard wired to trigger both queries simultaneously. For real-time webhook processing, create a Retool Workflow with a Webhook trigger. In Eventbrite's developer settings, configure webhooks to POST to your Retool Workflow's webhook URL for the 'attendee.checked_in' event type. The Workflow receives the payload and can write check-in data to a Retool Database table or trigger a notification to a connected Slack Resource. Bind a Table component in your Retool app to this Retool Database table to show a live stream of check-ins without relying on API polling. Add a Line Chart component showing check-in rate over time using the timestamped database records — this provides an event-floor display that shows check-in velocity trending up or plateauing during the event.

Pro tip: Configure Eventbrite webhooks for 'attendee.checked_in' events in addition to 'order.placed' to get real-time updates both when registrations occur and when attendees arrive at the venue.

Expected result: The attendees table automatically refreshes every minute during the event. A Retool Workflow receives Eventbrite check-in webhook events and logs them to Retool Database. The check-in rate chart updates in near real-time as attendees arrive.

Common use cases

Build a real-time attendee check-in dashboard

Your event operations team needs to monitor check-in rates by ticket type, identify no-shows, and track capacity per session or venue area in real time during the event. A Retool dashboard queries the Eventbrite attendees endpoint filtered to checked-in status, displays overall check-in rate as a KPI widget, and breaks down attendance by ticket class in a Bar Chart.

Retool Prompt

Build a real-time check-in dashboard for a specific Eventbrite event that shows total tickets sold, total checked in, and check-in rate as percentage KPI cards at the top. Add a Bar Chart comparing check-in counts by ticket class (General Admission, VIP, Speaker). Add an auto-refresh Table at the bottom showing the last 50 attendees who checked in, sorted by check-in time descending.

Copy this prompt to try it in Retool

Create a multi-event ticket sales analytics panel

Your events marketing team wants to compare ticket sales velocity across all upcoming events — how quickly tickets are selling relative to the event date, which price tiers are performing best, and which events need additional promotion. A Retool app queries all upcoming Eventbrite events, fetches their ticket class data, and displays a sortable Table and trend charts.

Retool Prompt

Build a ticket sales analytics dashboard that lists all upcoming Eventbrite events with columns for event name, date, total capacity, tickets sold, revenue to date, and days until event. Add a Bar Chart showing tickets remaining by event. Include a click handler that loads a ticket class breakdown for the selected event showing sales per tier.

Copy this prompt to try it in Retool

Build a VIP attendee management panel

For a corporate conference, your team needs to identify VIP attendees by ticket type, view their registration answers (company, role, dietary requirements), print badge information, and add personal notes. A Retool panel fetches attendees filtered to VIP ticket classes, displays their registration data with full custom question answers, and allows adding notes via a connected internal database.

Retool Prompt

Build a VIP attendee panel that fetches all attendees with ticket class 'VIP' for a selected event. Display a Table with columns for name, email, company, job title, dietary requirement (from custom registration questions), and check-in status. Add a detail panel that shows all registration answers and a text area for adding internal notes saved to a Retool Database table.

Copy this prompt to try it in Retool

Troubleshooting

Query returns 401 Unauthorized

Cause: The private token in the Retool resource has been revoked or is invalid. Eventbrite tokens can be revoked from the API keys page, or the token may have been copied incorrectly (with extra whitespace).

Solution: Navigate to eventbrite.com/platform/api-keys, verify the token is active, and re-copy the private token value. Update the Bearer token in your Retool resource configuration (Resources tab → select Eventbrite resource → click the token field, clear and re-paste the token → Save). Test with a GET query to /users/me/ to confirm the token works.

Events query returns empty results despite having active events

Cause: The organization ID in the API path is incorrect, or the status filter is excluding your events. Events that are 'draft' or 'canceled' are excluded by the status filters.

Solution: Retrieve your organization ID by querying /users/me/ and looking at the 'organizations' array in the response — copy the 'id' field. Update your events query path to use this correct organization ID. Try removing the status filter parameter temporarily to see all events regardless of status.

Attendees transformer returns empty 'name' fields for some attendees

Cause: Some Eventbrite attendees may have registered using a company billing account where individual attendee names are not separately captured, or the profile.first_name and profile.last_name fields are empty.

Solution: Add a fallback in the transformer for empty names: use the profile.name field (which combines first and last) as a fallback, or display the email address when the name is empty. Also check att.profile.name as an alternative field that sometimes contains the full name directly.

typescript
1name: [att.profile.first_name, att.profile.last_name].filter(Boolean).join(' ')
2 || att.profile.name
3 || att.profile.email
4 || 'Name not provided',

Webhook events are not arriving in the Retool Workflow

Cause: The Eventbrite webhook URL is not configured correctly, or the webhook endpoint was not enabled for the specific event type. Eventbrite webhooks must be configured per-event or at the organization level.

Solution: In your Eventbrite account, navigate to the specific event → Webhooks section, or at the account level under Account Settings → Webhooks. Verify the Retool Workflow webhook URL is registered and the 'attendee.checked_in' action is selected. Confirm the Retool Workflow is published (not in draft mode) — unpublished Workflows do not process incoming webhooks.

Best practices

  • Store your Eventbrite private token as a secret configuration variable in Retool (Settings → Configuration Variables, marked as secret) and reference it in the resource using {{ retoolContext.configVars.EVENTBRITE_TOKEN }} rather than pasting the token directly.
  • Enable automatic query refresh on the attendees query during live events (1-minute interval) and disable it outside of event hours to avoid unnecessary API calls — use a Toggle component in the Retool app to let event staff control the refresh rate.
  • Use the 'expand' query parameter when fetching events (expand=ticket_availability) to include ticket sales data in the events list without a separate API call per event — this significantly reduces total API request volume.
  • Implement server-side pagination for the attendees table using Eventbrite's page and page_size parameters — large events with thousands of attendees will time out if you attempt to fetch all records in a single request.
  • Add a confirmation modal before triggering any POST operations that modify attendee status or create/cancel orders — accidental changes to event registrations are difficult to reverse and may affect attendee experience.
  • Create Retool Workflows with webhook triggers for Eventbrite 'order.placed' and 'attendee.checked_in' events to receive real-time data updates, rather than relying solely on polling intervals for time-sensitive event-floor displays.
  • For multi-event organizations, build the app with an event selector at the top that dynamically scopes all attendee and ticket queries — avoid hardcoding event IDs in query paths, which requires app edits for every new event.

Alternatives

Frequently asked questions

Does Retool have a native Eventbrite connector?

No. Eventbrite does not have a dedicated native connector in Retool. You connect via a generic REST API Resource using Eventbrite's REST API v3 and a private token. This provides full access to all organizer-level endpoints — events, attendees, orders, ticket classes, discount codes, and check-in data — covering everything needed to build a comprehensive event operations dashboard.

Can I check in attendees from Retool?

The Eventbrite API does not expose a direct 'check in attendee' write endpoint for updating checked_in status via REST API as of 2026. Check-in is typically handled through Eventbrite's Organizer app or official check-in integrations. However, you can use Retool to build a read-only check-in monitoring dashboard that tracks check-ins as they happen (via API polling or webhooks), even if the actual check-in action occurs through Eventbrite's own interface.

How do I access custom registration question answers in Retool?

Custom registration question answers are included in the attendee response in an 'answers' array. Each answer object contains a 'question' field (the question text) and an 'answer' field (the registrant's response). In your JavaScript transformer, iterate over the answers array and extract the values you need by matching question text or position. Spread these into the flat row object so they appear as columns in the Retool Table.

Can I export Eventbrite attendee data to a CSV from Retool?

Yes. Retool has a built-in CSV export feature on Table components — click the Table → Settings → enable 'Allow CSV download'. When clicked, this exports all visible rows (including the current page) to a CSV file. For a full export of all attendees across all pages, build a JavaScript query that loops through all pages of the Eventbrite attendees endpoint, collects all records, and triggers a CSV download using Retool's utils.exportDataToCSV() utility.

How do I handle Eventbrite OAuth 2.0 for accessing multiple organizer accounts?

For agency use cases where you manage events for multiple organizer accounts, you need Eventbrite's OAuth 2.0 flow. Each organizer must authorize your application through the standard OAuth redirect flow, resulting in per-account access tokens. Configure Retool to handle OAuth 2.0 with Eventbrite's authorization URL (https://www.eventbrite.com/oauth/authorize), token URL (https://www.eventbrite.com/oauth/token), and required scopes. Create separate Retool resources per organizer with their respective tokens.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Retool integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.