Eventbrite Refund and Cancellation Handler
When an Eventbrite order is refunded or cancelled, the flow updates the CRM registration record, frees capacity (so a waitlist automation can react), removes the contact from event reminder lists, notifies the organizer in Teams, and logs the reason. Keeps attendance data accurate and capacity optimized after cancellations.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow keeps registration data accurate when an Eventbrite order is refunded or cancelled. It watches the order feed for a monitored event, and when an order moves into a cancelled state it updates the matching CRM registration record (marking it Cancelled, which frees the seat for the waitlist, and flagging the attendee out of reminder lists), writes an audit row capturing the reason, and notifies the organizers in Microsoft Teams.
Why it matters: Cancellations that aren't reflected everywhere lead to stale reminder lists, wasted sends, and unfilled seats. Automating the cleanup keeps attendance data accurate and capacity optimized.
Ships Off (demo) with Flow Checker 0 errors / 0 warnings - going live needs only connection authorization and environment-variable values.
Use Case
An events team running registrations on Eventbrite wants refunds and cancellations to ripple through the CRM, the reminder lists, the waitlist, and organizer visibility automatically - without anyone manually reconciling cancelled orders.
Flow Architecture
When an Eventbrite order is added or changed
Eventbrite OnOrderChangedV2 (splitOn body)Fires per changed order on the monitored event; polls every 5 minutes
Initialize variables
Initialize Variable x6Correlation id (guid), cancelled-status list, and captured order status/id/attendee email/name
Get Organization Events
Eventbrite GetOrganizationEventsRetrieves the org events to resolve the friendly event name
Filter Matching Event
Filter ArrayNarrows to the monitored event by id
Compose Event Name
ComposeFriendly event name with a generic fallback
Check If Order Is Cancelled
IfProcesses only orders whose status is in the cancelled list
List Existing Registrations
Dataverse ListRecordsFinds the CRM registration for this order id
Check If Registration Exists
IfIdempotency guard - only update when a record exists
Update Registration Record
Dataverse UpdateRecordSets status Cancelled (frees capacity) and opts the attendee out of reminders
Create Cancellation Log Record
Dataverse CreateRecordAudit row with order, attendee, status, reason, and timestamp
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_EventbriteOrgId | String | (set per tenant) | Eventbrite organization whose events are monitored |
| flowlibs_EventbriteEventId | String | (set per tenant) | The monitored event whose orders the trigger watches |
| flowlibs_EventbriteEventStatus | String | live | Status filter for GetOrganizationEvents |
| flowlibs_CancelledOrderStatuses | String | refunded,deleted | Order statuses treated as a cancellation (comma-separated) |
| flowlibs_EventRegistrationTable | String | flowlibs_eventregistrations | Registration table for ListRecords |
| flowlibs_CancellationLogTable | String | flowlibs_eventcancellationlogs | Audit log table (documentation/config) |
| flowlibs_TeamsGroupId | String | <your-team-id> | Organizer Team (group) id |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Organizer channel id |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Eventbrite | shared_eventbrite | OnOrderChangedV2 GetOrganizationEvents |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords UpdateRecord CreateRecord |
| Microsoft Teams | shared_teams | PostMessageToConversation |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- What counts as a cancellation
- Edit flowlibs_CancelledOrderStatuses (e.g. add transferred) without touching flow logic.
- Monitor a different event
- Change flowlibs_EventbriteEventId (and flowlibs_EventbriteOrgId).
- Refund analytics
- The cancellation log rows (reason + timestamp + correlation id) feed trend analysis and Power BI reporting.
- Win-back
- Extend the True branch to email the canceller a discount on a future event.
- Marketing sync
- Extend to untag the contact from the event audience (e.g. Mailchimp).
- Poll frequency
- Adjust the trigger recurrence (default 5 minutes).
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Is this a cancellation?
Order status is in the cancelled set
EXPR.02Find the registration ($filter)
OData filter by order id
EXPR.03Idempotency guard
True when a registration exists
EXPR.04Resolve event name
Friendly event name with fallback
EXPR.05Registration update (whole-object bind)
UpdateRecord body bound as a single composed object
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.