What is community engagement rate?
Definition
Community engagement rate is the share of members who did something in a period — posted, replied, or reacted — divided by the members who could have. It is really two metrics wearing one name: the participation ratio (how many people took part) and intensity (how many actions each of them took). Report both, because a community where ten people post constantly looks identical to a healthy one in an intensity-only view.
What data do you need?
- Activity events — posts, replies, reactions — with member IDs and timestamps
- A membership table with join dates, to build the denominator honestly
- A staff flag, so team activity can be excluded from community engagement
- A written list of which actions qualify as engagement
- Category or channel labels, if engagement is compared across spaces
SQL pattern
WITH months AS (
SELECT generate_series(
date_trunc('month', CURRENT_DATE - INTERVAL '12 months'),
date_trunc('month', CURRENT_DATE - INTERVAL '1 month'),
INTERVAL '1 month'
)::date AS month
), eligible AS (
-- Denominator: members who had already joined by the start of the month.
SELECT
m.month,
COUNT(*) AS eligible_members
FROM months m
JOIN community_members cm ON cm.joined_at < m.month
GROUP BY m.month
), engaged AS (
SELECT
date_trunc('month', p.created_at)::date AS month,
COUNT(DISTINCT p.member_id) AS engaged_members,
COUNT(*) AS actions
FROM community_posts p
JOIN community_members cm ON cm.member_id = p.member_id
WHERE NOT cm.is_staff
GROUP BY 1
)
SELECT
e.month,
e.eligible_members,
COALESCE(g.engaged_members, 0) AS engaged_members,
ROUND(
100.0 * COALESCE(g.engaged_members, 0)
/ NULLIF(e.eligible_members, 0), 2
) AS engagement_rate_pct,
ROUND(
1.0 * COALESCE(g.actions, 0) / NULLIF(g.engaged_members, 0), 1
) AS actions_per_engaged_member
FROM eligible e
LEFT JOIN engaged g USING (month)
ORDER BY e.month;Common pitfalls
Where does this metric apply?
This metric commonly uses data from Discourse, Circle, Discord, Slack, Bettermode, plus any warehouse models built on exported community and event records at the same grain.