Luma × Metabase

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.

Heads up: Metabase connects to databases and warehouses — it does not ship a native Luma connector, and it never calls a SaaS API directly. The good news: members, posts, and registrations are ordinary tabular data. Land them in a database, define "active member" and "attended" once, and every dashboard downstream inherits the same definitions.

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.

1 · API + CLI route (AI-assisted)

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.

Best for
  • 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
Trade-offs
  • 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
2 · Pipeline route (warehouse-backed)

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.

Best for
  • 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
Trade-offs
  • 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?

For: Event and community teams

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)
For: Event ops

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)
For: Community team

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)
For: Leadership

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 csv to 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 replace or 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 csv needs 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)
TerminalExport event guests from the Luma Public API
# 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.csv

There 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.

TerminalLoad a Luma CSV with the Metabase CLI
# 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.csv

Can 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.

Prompt for creating a Luma Event Overview dashboard
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

TableGrainKey columns
community_eventsone row per eventevent_id, calendar_id, name, starts_at, ends_at, location_type, capacity, is_paid
event_registrationsone row per guest per eventregistration_id, event_id, guest_id, approval_status, registered_at, checked_in_at, ticket_type
community_membersone row per known guest across eventsguest_id, email_hash, first_seen_at, event_count, last_attended_at

Modeling advice

  • Build a clean event_registrations model 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?

MetricDefinitionNotes
RSVP-to-attendance conversionGuests checked in over approved registrations.Pending and declined guests do not belong in the denominator.
Member growth rateNew unique guests per period over the audience you had.Match guests across events before trusting the number.
Conversion rateRegistrations 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.

RSVP-to-attendance conversion by eventPostgreSQL

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;
Registration pacing before the eventPostgreSQL

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;
Repeat attendees across the seriesPostgreSQL

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?

Reporting an active member count without saying what active means.→ Thirty days or ninety? Posted, reacted, or merely logged in? Each choice produces a different number, and none of them is a standard. Put the window and the action in the card title, and keep the definition in one model.
Reading a null check-in as a no-show.→ Luma records a check-in only when someone actually runs check-in at the door. Events where nobody did produce an all-null column, not a 0% attendance rate. Exclude them and show how many you excluded.
Planning around the Airbyte lu.ma source without checking its shape.→ It has two streams — events and event-guests — and both are full-refresh only, so there is no cheap incremental guest sync. If you need ticket types or hosts, script the public API instead, and remember keys are issued per calendar.
Building dashboards from one-off exports only.→ A scripted export is a snapshot. Schedule it, land the results in a database, and let history accumulate — pacing, repeat attendance, and year-over-year views all need it.

Related analytics

Related dashboards

Related integrations

FAQ

Does Metabase connect natively to Luma?
No. Metabase reads databases and warehouses. Land Luma data in a database first — via connector, scheduled API pulls, or a replica of the underlying database — or upload a CSV with the Metabase CLI, then build Metabase models and dashboards on top.
Should Metabase replace Luma?
No — they answer different questions. Luma is where the community or the event actually happens, and its built-in reporting is fine for a quick look. Metabase is where you build governed, shareable reporting for the whole company, and join community and event activity with product usage, support tickets, and CRM data.
Do I need a paid Luma plan to get data out?
Yes. Luma's public API requires a Luma Plus subscription; without it there is no programmatic access at all, only manual CSV guest exports from each event page. If you are evaluating this cluster on a free plan, budget for that before designing a pipeline around it.
Is there a Luma MCP server?
Not from the vendor (verified July 2026). Community projects exist, but they are small, independently maintained, and wrap the same public API you can call directly — which is why this guide leads with a scripted export. Watch for a name collision while you search: 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.