# Turn Eventbrite attendees into Constant Contact follow-ups

> Skip the CSV export and the manual cross-check. See who attended, who is already on your lists, and get the follow-up out from one screen.

- Workflow type: app
- Services: Constant Contact, Eventbrite
- Categories: Marketing, Operations
- Published: 2026-08-21

## What it does

- Opens on your recent and upcoming Eventbrite events with turnout counts, so you can pick the event you want to work on.
- Shows every attendee with ticket type, order date, and whether they checked in, matched against Constant Contact so you can see who is already a contact, which lists and tags they carry, and when they last opened an email from you.
- Lets you select attendees or filter to attended and no show, then create the missing contacts, add them to an event list, and tag them by ticket type or attendance without leaving the table.
- Gives every event a Draft the follow up button that hands the event to a background assistant, which writes a thank you campaign for the people who showed and a sorry we missed you campaign for the ones who did not, then posts its summary back so you can review both drafts, send yourself a test, and schedule the send.

## What you'll need

- An Eventbrite account with events you organize
- A Constant Contact account with permission to manage contacts, lists, tags, and email campaigns
- A rough idea of how you like to name your event lists and tags, the app remembers your convention after the first event

## Prompt

Build me an app that replaces the ritual I do after every event: exporting a CSV of Eventbrite attendees and hand matching it against my Constant Contact lists before I can send any follow up. I want the attendee list, the Constant Contact status of each person, the bulk actions, and the follow-up drafting all on one screen.

Home view, the event list. The app opens on my recent and upcoming Eventbrite events, pulled with List Events by Organization for my organization, sorted with the most recent past events first and upcoming events in their own section. Each event card shows the name, the date, the venue or online marker, and turnout: tickets sold, how many checked in, and the resulting attendance rate. Use Get Attendees Report for the organization-level counts where it saves round trips, and fall back to counting the attendee records for the event. Show a badge on any event that already has an event list or draft follow-up campaigns created through this app, so I can see at a glance which events I have already worked.

Event view, the attendee table. Clicking an event opens the attendee table for that event. Load the attendees with List Attendees by Event, and use Retrieve Event with expansions for the event details I need in the header. Each row shows name, email, ticket type, order date, and whether they checked in, plus an enrichment block sourced from Constant Contact: whether they are already a contact, their contact status, which lists they are on, which tags they carry, and when they last opened one of my emails.

For the enrichment, look each attendee up with List Contacts filtered by email address, and pull the last-open date with Get Contact Activity Summary for the contacts that match. Important detail: Constant Contact excludes contact subresources from responses by default, so the list memberships and taggings have to be requested explicitly through the include query parameter, otherwise those columns come back empty and the whole point of the screen is lost. Batch the lookups sensibly and respect Constant Contact rate limits, roughly four requests per second, so a two hundred person event does not stall or start failing. Show the enrichment loading per row rather than blocking the whole table, and cache the result for the event so revisiting it is instant.

Filtering and selection. Give me quick filters for attended, no show, already a contact, not yet a contact, and unsubscribed, plus a free text search on name and email, and column sorting on ticket type and order date. Rows have checkboxes with a select all that respects the active filter. Keep a persistent selection summary somewhere visible: how many attendees are selected, how many of those are new contacts, how many are existing contacts, and how many are unsubscribed and therefore excluded.

Actions on the selection. From the toolbar above the table I can do three things to the people I have selected. First, create the missing contacts using Create or Update Contact (Sign-up Form) with the name and email from the Eventbrite attendee record. Second, add the selection to an event specific list: if the list does not exist yet, create it with Create Contact List using the naming convention, then add everyone with Add List Memberships (Bulk). Third, tag the selection by ticket type or by attendance, creating the tag with Create Tag when it does not exist yet and applying it with Update Contact.

Two Constant Contact behaviours the handlers have to respect. Update Contact is a full PUT replacement, so the tagging handler must read the contact first, including its existing subresources, merge the new tag into the existing taggings, and write the whole object back. Anything less silently wipes the contact's other tags, lists, or custom fields. And bulk list membership activities run asynchronously: Add List Memberships (Bulk) returns an activity id rather than a finished result, so the app should show the add as pending, poll Get Activity Status until it completes, and only then mark the rows as added. Do not claim instant success and do not show a green checkmark for work that is still queued.

Rules to bake in. Never re-add anyone whose Constant Contact status is unsubscribed, not to a list, not as a new contact, not through a tag update. Mark them clearly in the table, exclude them from every bulk action even when they are inside the selection, and tell me plainly in the confirmation how many were skipped for that reason. Before I commit a bulk add, show a confirmation with a clear count of how many of the selected attendees are new contacts versus already existing, so I know what I am about to change. And remember the list and tag naming convention per event, so a recurring event series stays tidy: store the pattern I used, for example the event name plus the event date for lists and a ticket type or attendance suffix for tags, prefill it the next time, and let me edit it before anything is created.

The Draft the follow up button. Every event gets a Draft the follow up button that kicks off a background agent. The agent reads the event details from Eventbrite, works out the attended versus no show split from the attendee records, and then writes two draft campaigns into Constant Contact with Create Email Campaign: a thank you for the people who showed up, and a sorry we missed you for the ones who did not, with room for the recording link or the next event date. Before it drafts, let me give it a short brief on the screen, for example the recording URL, the next event date, and any offer I want included. When it finishes it posts its summary back into the app: what it wrote, the subject lines, the split it worked from, and links to both drafts, so the summary appears on the event view without me going hunting in Constant Contact. Show the run as in progress on the event card while it works.

Reviewing and sending. Once the drafts exist, the event view shows both of them side by side with their subject lines and preview content, read back with Get Email Campaign and Get Campaign Activity, or previewed with Preview Campaign Activity. From there I can fire a test to myself with Send Test Email, and schedule the real send with Schedule Campaign Activity, picking the date and time, without leaving the screen. Show the current state of each campaign, draft, test sent, or scheduled with its send time, and let me re-run the agent to redraft if I do not like what it wrote.

Persistence. Store per event: the list id and name created for it, the tags created and applied, the naming convention used, the draft campaign ids and their state, and the last agent run summary. That is what makes the second and third event in a series fast instead of another round of manual reconciliation.

## How to customize

- Change the naming pattern the app uses for event lists and tags, so repeat events stay grouped the way you like
- Choose which ticket types get their own tag, and whether attendance tags are applied to everyone or only to people who checked in
- Set the tone and the offer in the follow-up drafts, such as a recording link for no shows or the date of the next event, and pick which address the test email goes to

## FAQ

### Will this email my attendees automatically?

No. Nothing goes out on its own. The follow-up campaigns are created as drafts inside Constant Contact, and you review them, send yourself a test, and pick the send time before anything reaches an attendee.

### What happens to people who unsubscribed?

They are never added back. Anyone whose Constant Contact status is unsubscribed is flagged in the table and left out of every bulk add, tag, and contact creation, even if you select them by accident.

### Do I still need to export a CSV from Eventbrite?

No. The app pulls your attendee list straight from the event and matches it against your Constant Contact contacts by email address, which is the part you were doing by hand in a spreadsheet.

### Does it work if most attendees are already contacts?

Yes. Every row shows whether the person is already a contact, the lists and tags they carry, and when they last opened one of your emails. Before any bulk add you get a clear count of how many people are genuinely new, so you know exactly what you are committing to.

### Can I use it for a recurring event series?

Yes. The app remembers the list and tag naming convention you used and reuses it for the next event in the series, so your lists stay tidy instead of turning into a pile of one-off names.

### Why does adding a big group show a pending state instead of finishing instantly?

Constant Contact processes large list additions in the background, so the app shows the add as pending and updates the row once Constant Contact confirms it finished. It reports the real result rather than claiming success early.

Use this prompt in General Input: https://www.generalinput.com/prompts/turn-eventbrite-attendees-into-constant-contact-follow-ups