How to build Luma event dashboards in Metabase
Luma is the events platform behind much of the AI and startup meetup scene — calendars, events, guest lists, ticket types, and RSVPs, with a clean public API sitting behind a paid plan. Metabase is where you turn that activity into shared, trustworthy event dashboards. This guide covers two complementary paths: a lightweight API + CLI route that pulls a scoped slice via the Luma Public API and loads a CSV into Metabase with the Metabase CLI, and a durable pipeline route that lands Luma data in a database so you can build dashboards anyone can read.
How do you connect Luma to Metabase?
Most teams combine both routes: quick answers through API exports and CLI uploads first, then recurring event reporting on a warehouse-backed model.
One caveat shapes everything on this page: Luma's public API requires a Luma Plus subscription. Without it there is no programmatic access at all — only manual CSV guest exports from the event page.
Live event answers in, quick analysis out
No vendor MCP server exists, so this route leads with a scripted export against the Luma Public API: write the result to CSV, then load it into Metabase as a ready-to-query table and model.
- Quick questions such as "show me registrations by event and calendar"
- Loading Luma exports into Metabase in seconds
- Spot-checks and one-off questions without pipeline work
- Great for exploration, not the weekly community or event report
- Use read-only credentials or scoped API keys wherever supported
- CSV uploads are snapshots — refresh or move to the pipeline for history
Durable event dashboards with history
Land Luma data in a database or warehouse — via connector, scheduled API pulls, or a replica of the underlying database — then point Metabase at it.
- Luma dashboards the community, marketing, and support teams all trust
- Joining community activity with product, support, and CRM data
- Long-run trends for registrations by event and calendar and rsvp-to-attendance conversion from check-in data
- You own the refresh schedule and the grain
- Define "active member" once, in the model layer, and state the window
- Identity matching across tools caps how far member-level analysis goes
What can you analyze from Luma data in Metabase?
These all come from the same core objects — event guests, plus the events and calendars, ticket types, check-ins your sync exposes:
- Registrations by event and calendar
- RSVP-to-attendance conversion from check-in data
- Repeat attendees across the event series
- Ticket mix and paid vs. free registration
- Registration pacing in the days before an event
Which Luma event dashboards should you build in Metabase?
Registrations
Signups by event and calendar.
- Registrations by event (bar)
- Registrations by calendar per month (stacked bar)
- Approval status mix: approved, pending, declined (bar)
- Capacity fill rate by event (table)
Attendance
Check-in data, where it exists.
- RSVP-to-attendance conversion by event (bar)
- No-show rate by event (line)
- Events with no check-ins recorded (table)
- Check-ins over the first hour (line)
Audience
Who keeps coming back.
- Repeat attendees across the series (number + trend)
- First-time vs. returning guests per event (stacked bar)
- Guests who attended more than three events (table)
- Gap between a guest's events (bar)
Pacing and mix
How registrations build before the door opens.
- Registrations by days before the event (line)
- Paid vs. free registrations (bar)
- Ticket type mix (stacked bar)
- Attendance trend across the calendar (line)
How do you export Luma data and load it with the Metabase CLI?
There is no vendor MCP server for Luma, so pair a scripted export against the Luma Public API with the Metabase CLI. The export gives you a CSV; the CLI's upload command loads it into Metabase and creates a ready-to-query table and model.
Example workflow
- Ask the API for event guests for each event in the calendar, one row per guest with approval status, registered_at, and checked_in_at.
- Export the result as CSV, keeping stable IDs, timestamps, and the category, space, channel, or event keys you group by.
- Run
mb upload csvto load it into Metabase as a table and model, then build questions and dashboards on top.
Be honest about the limits
- Scripted API exports are excellent for exploration, not scheduled reporting.
- A CSV upload is a snapshot; refresh it with
mb upload replaceor move to the pipeline for real history. - Registration pacing and repeat-attendee views need every past event in the calendar exported once and kept — the API returns current state, not a history of it.
mb upload csvneeds an uploads database configured under Admin → Settings → Uploads.
How do you set up the Luma Public API export and the Metabase CLI?
Luma Public APIofficial
- Transport
- HTTPS REST API, called from your own script
- Auth
- Luma API key (`x-luma-api-key`), scoped per calendar
- Best for
- Scoped guest, attendee, and event exports
Metabase CLIofficial
- Install
npm install -g @metabase/cli- Auth
mb auth login- Load data
mb upload csv --file data.csv- Requires
- An uploads database (Admin → Settings → Uploads)
# No vendor MCP server exists. Export directly from the API instead:
curl -s "https://public-api.luma.com/v1/event/get-guests?event_api_id=$EVENT_ID" \
-H "x-luma-api-key: $LUMA_API_KEY" \
| jq -r '.entries[] | [.guest.api_id, .guest.approval_status,
.guest.registered_at, .guest.checked_in_at] | @csv' \
> luma-event-guests.csvThere is no vendor-published Luma MCP server (verified July 2026). Community projects exist, but they are small, independently maintained, and wrap the same public API you can call directly — so this guide leads with a scripted export. Beware a name collision: luma-api-mcp from Luma Labs belongs to Luma AI, the video and image generation company, and has nothing to do with lu.ma events. If Luma ships an official server later, only route 1's export step changes; the warehouse model below stays the same.
# Install the Metabase CLI
npm install -g @metabase/cli
# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com
# Load a event-guests export — creates a table AND a model
mb upload csv --file luma-event-guests.csv --collection root
# Refresh that same table later from a new export
mb upload replace <table-id> --file luma-event-guests.csvCan you generate a Luma dashboard with AI?
Yes. Use the prompt below with any assistant that can run shell commands (for the API export) and the Metabase CLI. It works end to end: if Luma tables already exist in Metabase it analyzes those; otherwise it pulls scoped, summarized data, loads it with mb upload csv, then builds the dashboard and caveats any metric that needs missing history.
Create a polished Metabase dashboard for Luma event analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.
Goal: Help community, marketing, and support leaders understand registrations by event and calendar, RSVP-to-attendance conversion, repeat attendance, and registration pacing from Luma data.
Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for luma tables and
models). If durable Luma data is already present — a warehouse sync, a
database replica, or an earlier upload — use it and skip to Step 2.
- If nothing is there, pull a scoped, summarized export by scripting the Luma Public API:
event guests, plus events and calendars, ticket types, check-ins.
Prefer summarized rollups by month, category, space, channel, or event over raw
message and post bodies. Write each result to a CSV, then load it with the
Metabase CLI — run "mb upload csv --file <export>.csv" so each upload creates a
table and a ready-to-query model. Use "mb upload replace <table-id> --file
<export>.csv" to refresh an existing table instead of creating duplicates.
Step 2 — Inspect before querying:
Do not assume exact table or column names. Inspect available fields, categories,
spaces or channels, events, and date ranges before creating trend cards.
Important:
- Build on whatever data is present; don't claim Metabase connects natively to
Luma — it reads a database or CLI-uploaded tables.
- Every "active member" card must state its window and its action (posted?
logged in?) in the card title or description. There is no standard definition.
- Deleted and anonymized accounts disappear from the current member list, which
silently rewrites historical member counts. Prefer daily snapshots over
recomputing history.
- Attendance is unknowable without check-in data. Exclude events where nobody
checked anyone in rather than scoring them as 0% attendance.
- A single CSV is a point-in-time snapshot: only build trend cards if there is
a usable date column or multiple periods have been uploaded.
Dashboard title: Luma Event Overview
Sections:
1. Executive summary: Registrations this period; Attendance rate
(check-in data only); Approved share; Repeat attendees;
Events with no check-in data.
2. Registrations: By event and calendar; approval status mix; capacity fill.
3. Attendance: Conversion by event; no-show rate; check-ins in the first hour.
4. Audience: First-time vs. returning guests; guests by events attended.
5. Pacing: Registrations by days before the event; paid vs. free; ticket mix.
Filters: Date range, Category or Space or Channel, Event, Member segment,
Ticket type.
Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. Include caveats for any metric
that cannot be calculated from the available data.How do you sync Luma data into a database or warehouse?
For dashboards that need history and reliability, land Luma data in a database first, then connect Metabase to that database.
Connector options
- Managed connector or database replica — use a connector when one genuinely covers the objects you need, or replicate the underlying database when you host it yourself.
- Custom pipeline — use the Luma Public API for control over grain, fields, and refresh cadence.
- API + CSV — use this for quick exploration and one-off slices.
Airbyte publishes a lu.ma source, but know its shape before you plan around it: it's a Marketplace (community-supported) connector with just two streams — events and event-guests — and both are full-refresh only, so there is no cheap incremental guest sync. For anything richer, script the public API: keys are issued per calendar (organization-wide keys exist separately), and rate limits run to 200 requests per minute per calendar, 500 per minute per organization.
Notes
- Decide the grain first (one row per post, message, or registration; daily rollups on top) — it drives every trend card.
- Land raw tables first, then build clean Metabase models on top of them.
- Normalize event, calendar, guest, approval-status, registered-at, and checked-in-at fields.
How should you model Luma data in Metabase?
Core tables
| Table | Grain | Key columns |
|---|---|---|
community_events | one row per event | event_id, calendar_id, name, starts_at, ends_at, location_type, capacity, is_paid |
event_registrations | one row per guest per event | registration_id, event_id, guest_id, approval_status, registered_at, checked_in_at, ticket_type |
community_members | one row per known guest across events | guest_id, email_hash, first_seen_at, event_count, last_attended_at |
Modeling advice
- Build a clean
event_registrationsmodel with common columns across forums, community platforms, chat servers, and event tools, so multi-source dashboards don't fork definitions. - Snapshot member counts daily into a table you own. Deleted and anonymized accounts vanish from the live member list, which changes last quarter's numbers every time you refresh.
- Keep the definition of "active member" — the window and the action — in the model layer, and surface it in card titles. There is no standard.
- Treat attendance as missing, not zero, when no check-in was recorded. Flag those events explicitly so conversion cards can exclude them.
- Hash or drop email addresses at the pipeline boundary and join members across tools on a stable ID wherever you have one.
Which Luma event metrics should you track in Metabase?
| Metric | Definition | Notes |
|---|---|---|
| RSVP-to-attendance conversion | Guests checked in over approved registrations. | Pending and declined guests do not belong in the denominator. |
| Member growth rate | New unique guests per period over the audience you had. | Match guests across events before trusting the number. |
| Conversion rate | Registrations over visitors to the event page. | Not in the events export — join your web analytics. |
What SQL powers Luma event dashboards in Metabase?
These assume a cleaned analytical model in a warehouse (PostgreSQL dialect). Adjust table and column names to match your pipeline — the modeled names above rarely survive a sync unchanged.
Approved guests vs. check-ins, with no-check-in events null.
-- Approved guests are the denominator; pending and declined are not.
-- Events with no check-ins return NULL, not 0%.
SELECT
e.name AS event,
e.starts_at::date AS event_date,
COUNT(*) FILTER (WHERE r.approval_status = 'approved') AS approved,
COUNT(r.checked_in_at) AS checked_in,
CASE
WHEN COUNT(r.checked_in_at) = 0 THEN NULL
ELSE ROUND(
100.0 * COUNT(r.checked_in_at)
/ NULLIF(COUNT(*) FILTER (WHERE r.approval_status = 'approved'), 0), 1
)
END AS attendance_pct
FROM community_events e
JOIN event_registrations r ON r.event_id = e.event_id
WHERE e.starts_at < CURRENT_DATE
GROUP BY 1, 2
ORDER BY 2 DESC;How signups build over the days before the doors open.
SELECT
e.name AS event,
(e.starts_at::date - r.registered_at::date) AS days_before_event,
COUNT(*) AS registrations
FROM event_registrations r
JOIN community_events e ON e.event_id = r.event_id
WHERE r.registered_at <= e.starts_at
GROUP BY 1, 2
ORDER BY 1, 2 DESC;How many guests came once, twice, or kept coming back.
WITH attended AS (
SELECT
guest_id,
COUNT(DISTINCT event_id) AS events_attended
FROM event_registrations
WHERE checked_in_at IS NOT NULL
GROUP BY guest_id
)
SELECT
events_attended,
COUNT(*) AS guests
FROM attended
GROUP BY events_attended
ORDER BY events_attended;What are common mistakes when analyzing Luma in Metabase?
Related
Related analytics
Related dashboards
Related integrations
FAQ
Does Metabase connect natively to Luma?
Should Metabase replace Luma?
Do I need a paid Luma plan to get data out?
Is there a Luma MCP server?
luma-api-mcp comes from Luma Labs, the Luma AI video and image generation company, and has nothing to do with lu.ma events. If Luma publishes an official server later, only the export step changes; the warehouse model stays the same.