Circle × Metabase

How to build Circle community dashboards in Metabase

Circle is a hosted community platform for creators and brands — spaces, posts, comments, events, courses, and paid memberships under one roof, with no database of your own to query. Metabase is where you turn that activity into shared, trustworthy community dashboards. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls a scoped slice with the Circle MCP server and loads a CSV into Metabase with the Metabase CLI, and a durable pipeline route that lands Circle 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 Circle 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 Circle to Metabase?

Most teams combine both routes: quick answers through MCP and CLI uploads first, then recurring community reporting on a warehouse-backed model.

1 · MCP + CLI route (AI-assisted)

Live community answers in, quick analysis out

Pair the Circle MCP server with the Metabase CLI. Use MCP for live lookups, write a scoped result to CSV, then load it into Metabase as a ready-to-query table and model.

Best for
  • Quick questions such as "show me member growth and paid-membership mix"
  • Loading Circle 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 community dashboards with history

Land Circle 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
  • Circle dashboards the community, marketing, and support teams all trust
  • Joining community activity with product, support, and CRM data
  • Long-run trends for member growth and paid-membership mix and space-level engagement and quiet spaces
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 Circle data in Metabase?

These all come from the same core objects — members and posts, plus the spaces and space groups, comments and reactions, events and RSVPs your sync exposes:

  • Member growth and paid-membership mix
  • Space-level engagement and quiet spaces
  • Event registrations and attendance
  • Course progress and completion
  • Contributor concentration across spaces

Which Circle community dashboards should you build in Metabase?

For: Community managers

Membership

Growth and paid-membership mix.

  • New members by month (line)
  • Members active in the last 30 days (number + trend)
  • Paid vs. free membership split (bar)
  • Retention by join-month cohort (table)
For: Community team

Space engagement

Which spaces carry the community.

  • Posts and comments by space per month (stacked bar)
  • Spaces with no post in 30 days (table)
  • Comments per post by space (bar)
  • Reactions per post over time (line)
For: Programs and events

Events and courses

Whether the programming lands.

  • Event registrations by event (bar)
  • Registered vs. checked in (combo)
  • Course enrollments and completions (table)
  • Registrations per member per quarter (line)
For: Leadership

Contribution health

How many people carry the conversation.

  • Top contributors across spaces (table)
  • Share of posts from the top 10 members (number + trend)
  • First-time posters per month (line)
  • Members active in more than one space (number)

How do you use the Circle MCP server with the Metabase CLI?

Pair the Circle MCP server with the Metabase CLI for fast, hands-on analysis. MCP is useful for scoped lookups and summarized exports; the Metabase CLI's upload command loads CSV data into Metabase and creates a ready-to-query table and model.

Example workflow

  • Ask the MCP server for members and posts for the trailing 90 days summarized by space and month, rather than a row-by-row dump of the member list.
  • 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

  • MCP lookups 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.
  • Trends need several months of posts and joins, and Circle's monthly request quota makes repeated full pulls expensive. Sync incrementally by updated timestamp and keep the history you have already landed.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

How do you set up Circle MCP and the Metabase CLI?

Circle MCP serverofficial

Transport
Vendor-hosted remote MCP over HTTP
Auth
OAuth through your MCP client; community admins only
Best for
Live scoped lookups and summarized 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)
MCPExample MCP client config
{
  "mcpServers": {
    "circle": {
      "type": "http",
      "url": "https://app.circle.so/api/mcp"
    }
  }
}

Circle's own hosted server (GA April 2026), available on Business plans and above. Choose Read only at connect time — write tools are then hidden from the client entirely, which is what you want for analytics. Two separate limits apply: 2,000 requests per five minutes per IP, and a monthly request quota that MCP calls count against (5,000 on Business), tracked under Settings → Developers. A chatty agent can exhaust a month's quota in an afternoon, so pull summarized exports rather than looping over members. Not to be confused with the unrelated MCP server from Circle Internet Financial (circle.com, the USDC company).

TerminalLoad a Circle 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 members-and-posts export — creates a table AND a model
mb upload csv --file circle-members-and-posts.csv --collection root

# Refresh that same table later from a new export
mb upload replace <table-id> --file circle-members-and-posts.csv

Can you generate a Circle dashboard with AI?

Yes. Use the prompt below with any assistant that can run the Circle MCP server and the Metabase CLI. It works end to end: if Circle 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 Circle Community Overview dashboard
Create a polished Metabase dashboard for Circle community 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 member growth and paid mix, space-level engagement, event and course participation, and contributor concentration from Circle data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for circle tables and
  models). If durable Circle 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 with the Circle MCP server:
  members and posts, plus spaces and space groups, comments and reactions, events and RSVPs.
  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
  Circle — 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: Circle Community Overview

Sections:
1. Executive summary: New members this month; Active members (30 days,
   stated on the card); Posts per month; Paid membership share;
   Event registrations.
2. Membership: New members by month; paid vs. free; join-month cohorts.
3. Spaces: Posts and comments by space; quiet spaces; comments per post.
4. Programs: Event registrations and check-ins; course completions.
5. Contribution: Top contributors; top-10 share of posts; first-time posters.

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 Circle data into a database or warehouse?

For dashboards that need history and reliability, land Circle 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 Circle Admin API v2 for control over grain, fields, and refresh cadence.
  • MCP + CSV — use this for quick exploration and one-off slices.

No managed connector exists — neither Airbyte nor Fivetran has a Circle source. Schedule Admin API v2 pulls (members, posts, comments, events, and space membership) with an admin API token and land them in your warehouse. Watch the same monthly request quota the MCP route consumes: paginate at the largest page size the endpoint allows, and sync incrementally by updated timestamp rather than re-reading the whole community.

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 member, space, post, parent-post, joined-at, and created-at fields.

How should you model Circle data in Metabase?

Core tables

TableGrainKey columns
community_membersone row per community membermember_id, email_hash, joined_at, last_active_at, plan, space_count, is_admin
community_postsone row per post or commentpost_id, space_id, member_id, parent_post_id, created_at, comment_count, like_count
community_spacesone row per spacespace_id, space_group, name, visibility, member_count, created_at

Modeling advice

  • Build a clean community_posts 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 Circle community metrics should you track in Metabase?

MetricDefinitionNotes
Member growth rateNet new members per period over members at the start of it.Removed members drop out of the current list — snapshot it.
Engagement rateMembers who posted, commented, or reacted over total members.Joining a space is not engagement. Count actions.
RSVP-to-attendance conversionMembers checked in over members registered for an event.Only meaningful for events where check-in was used.
Conversion rateFree members who convert to a paid membership.Needs the plan field kept as history, not just current state.

What SQL powers Circle community 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.

New members and growth rate by monthPostgreSQL

Signups per month against the members you already had.

SELECT
  date_trunc('month', joined_at) AS month,
  COUNT(*) AS new_members,
  ROUND(
    100.0 * COUNT(*) / NULLIF(
      SUM(COUNT(*)) OVER (
        ORDER BY date_trunc('month', joined_at)
        ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
      ), 0
    ), 1
  ) AS growth_rate_pct
FROM community_members
GROUP BY 1
ORDER BY 1;
Active member ratio over a stated windowPostgreSQL

Members who posted in 30 days, with the window declared.

-- "Active" here means: posted at least once in the trailing 30 days.
-- That window is a choice. Put it on the dashboard card.
WITH active AS (
  SELECT DISTINCT member_id
  FROM community_posts
  WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT
  COUNT(DISTINCT m.member_id) AS total_members,
  COUNT(DISTINCT a.member_id) AS active_members,
  ROUND(
    100.0 * COUNT(DISTINCT a.member_id)
    / NULLIF(COUNT(DISTINCT m.member_id), 0), 1
  ) AS active_member_pct
FROM community_members m
LEFT JOIN active a ON a.member_id = m.member_id
WHERE NOT m.is_bot;
Engagement by space, with quiet spaces visiblePostgreSQL

Posts, comments, contributors, and last activity per space.

SELECT
  s.name AS space,
  COUNT(p.post_id) FILTER (WHERE p.parent_post_id IS NULL) AS posts,
  COUNT(p.post_id) FILTER (WHERE p.parent_post_id IS NOT NULL) AS comments,
  COUNT(DISTINCT p.member_id) AS contributors,
  MAX(p.created_at) AS last_activity_at
FROM community_spaces s
LEFT JOIN community_posts p
  ON p.space_id = s.space_id
 AND p.created_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY s.name
ORDER BY posts DESC;

What are common mistakes when analyzing Circle 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.
Looping an agent over the member list.→ Circle counts MCP and Admin API calls against the same budget, including a monthly quota. Pull summarized exports and sync incrementally by updated timestamp instead of re-reading the whole community on every run.
Treating space membership as engagement.→ Joining a space costs one click and means almost nothing. Count posts, comments, and reactions, and keep a standing list of spaces with no activity in 30 days.
Building dashboards from live MCP lookups only.→ MCP is useful for exploration; durable community dashboards need a database-backed model with history behind them.

Related analytics

Related dashboards

Related integrations

FAQ

Does Metabase connect natively to Circle?
No. Metabase reads databases and warehouses. Land Circle 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 Circle?
No — they answer different questions. Circle 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.
Which Circle is this guide about?
Circle the community platform at circle.so — spaces, posts, courses, and paid memberships. It is unrelated to Circle Internet Financial (circle.com), the USDC stablecoin company, which also publishes developer tooling under the same name.
Is there a managed connector for Circle?
No. Neither Airbyte nor Fivetran has a Circle source, so the pipeline is yours to build: schedule Admin API v2 pulls for members, posts, comments, events, and space membership with an admin API token, and land them in your warehouse. Sync incrementally by updated timestamp rather than re-reading the whole community each run.
Does the Circle MCP server count against my API quota?
Yes — MCP calls consume the same request budget as the Admin API. Two limits apply: 2,000 requests per five minutes per IP, and a monthly request quota (5,000 on Business) tracked under Settings → Developers. Choose Read only when you connect the server, and pull summarized exports rather than looping an agent over the member list.