Deploy WhatsApp Group Analytics Dashboard
Self-hosted engagement analytics for WhatsApp groups you admin
Whatsapp Group Monitor
Just deployed
/app/data
Deploy and Host WhatsApp Group Analytics on Railway
WhatsApp Group Analytics is a self-hosted dashboard that turns the groups you administer into engagement data — message volume over time, active and dormant members, peak activity hours, and growth trends. It connects to your own Evolution API instance, stores everything in your own PostgreSQL database, and sends nothing to a third party.
Built for community managers who run WhatsApp groups the way others run Discord servers, and who want the same reporting.
What This Template Deploys
| Service | Purpose |
|---|---|
| Analytics Dashboard | Web UI for charts, member cohorts, and CSV export on port 3000 |
| Event Collector | Receives Evolution API webhooks and writes aggregate counters |
| PostgreSQL | Event store, rollups, and dashboard state |
The collector and dashboard talk over Railway's private network. Postgres is never exposed publicly.
Requires an Evolution API instance. If you don't have one, deploy the Evolution API template first and point this template's webhook at it.
About Hosting WhatsApp Group Analytics
WhatsApp gives group admins no reporting whatsoever. You can see a member list and scroll history — that's the entire toolset. Anyone running a paid community, a cohort-based course, or client groups on behalf of an agency ends up counting messages by hand or exporting chats into a spreadsheet.
The hosted alternatives ask you to hand your group data to someone else's servers. That is usually a non-starter for anyone with a compliance obligation, and it's a poor trade for data you can just keep.
This template runs the whole pipeline on infrastructure you control. Evolution API delivers group events by webhook, the collector aggregates them into PostgreSQL, and the dashboard reads from that. Raw message bodies are never persisted — only counters, timestamps, and member identifiers.
Typical cost: ~$5–10/month on Railway's Hobby plan for all services, flat regardless of group size or message volume.
What It Measures — and What It Doesn't
Scope is deliberate. This is a group reporting tool, not a surveillance tool.
Measured, in aggregate:
- Messages per day, week, and month per group
- Active, occasional, and dormant member cohorts
- Peak activity by hour and weekday
- Member joins and exits over time
- Top contributors by message count
- Media versus text share
- Response latency to admin announcements
Deliberately not collected:
- Message content — bodies are counted, then discarded, never written to disk
- Online, offline, or last-seen presence for any individual
- Private or direct messages of any kind
- Contact list or phone number export
- Any data from groups the connected account does not administer
If you need per-person presence tracking, this is not that tool and won't become it.
Deploy in Under 5 Minutes
- Click Deploy on Railway and wait for the services to build (~3 minutes)
- Set
EVOLUTION_API_URLandEVOLUTION_API_KEYto point at your Evolution API instance - Copy the collector's public URL and register it as a webhook in the Evolution Manager dashboard
- Open the dashboard URL and sign in with the admin credentials you set
- Select the groups you administer — data begins accumulating from that moment forward
Historical data before setup is not available. WhatsApp does not expose it, and no tool can retroactively reconstruct it.
Common Use Cases
- Paid community reporting — show subscribers and stakeholders that the group is active, with month-over-month engagement charts instead of anecdotes
- Cohort-based course operations — identify students who have gone quiet in week three, before they churn, and reach out
- Agency client reporting — export per-group CSVs for clients whose WhatsApp communities you manage under contract
- Community health monitoring — catch the slow decline in daily messages that precedes a group dying, while there's still time to act
- Announcement effectiveness — measure how quickly and how widely members respond after an admin post
- Moderation capacity planning — see which hours generate the most traffic and staff coverage accordingly
Configuration
| Variable | Required | Description |
|---|---|---|
EVOLUTION_API_URL | Required | Base URL of your Evolution API instance |
EVOLUTION_API_KEY | Required | Evolution API authentication key |
EVOLUTION_INSTANCE | Required | Instance name whose groups you want to report on |
DATABASE_URL | Auto-injected | PostgreSQL connection string via Railway reference variable |
ADMIN_EMAIL | Required | Dashboard login |
ADMIN_PASSWORD | Required | Dashboard password — use a strong value |
SESSION_SECRET | Auto-generated | Signs dashboard session cookies |
TRACKED_GROUPS | Optional | Comma-separated group JIDs; leave empty to prompt in the UI |
RETENTION_DAYS | Optional | Days of event-level data to keep before rolling up (default 90) |
STORE_MESSAGE_CONTENT | Pre-set | false — leave it off unless you have explicit member consent |
TIMEZONE | Optional | Reporting timezone, e.g. Asia/Kolkata (default UTC) |
EXPORT_ENABLED | Optional | Set to false to disable CSV export |
RETENTION_DAYSis a compliance control, not a storage setting. Shorter retention means less personal data held. Set it to the shortest window your reporting actually needs.
Dependencies for WhatsApp Group Analytics Hosting
- Railway account — Hobby plan (~$5–10/month) covers all services
- A running Evolution API instance with a connected WhatsApp account
- Admin rights on the groups you intend to report on
- Optional: S3-compatible storage for scheduled CSV export archives
Deployment Dependencies
Implementation Details
The collector subscribes to Evolution API's group event webhooks and processes each event into counters keyed by group and member identifier. Message bodies pass through memory and are discarded — STORE_MESSAGE_CONTENT defaults to false and the schema has no column for them.
Event-level rows are rolled up into daily aggregates and pruned according to RETENTION_DAYS, so the database stays small even for high-traffic groups. The dashboard reads exclusively from the rollup tables, which keeps queries fast as history accumulates.
Group selection is explicit. The collector ignores events from any group not listed in TRACKED_GROUPS or selected in the UI, and drops events from groups where the connected account is not an administrator.
Frequently Asked Questions
Do group members know they're being counted? Not automatically — that's your responsibility as the admin. Post a notice in the group before you deploy. In jurisdictions with data protection statutes, including India's DPDP Act and the GDPR, you are the data controller for your members' information and the notice obligation is yours, not the tool's.
Can I track a group I'm not an admin of? No. The collector drops events from groups where the connected account lacks admin rights. This is a deliberate constraint, not an oversight.
Can I see when a specific person is online? No. Presence and last-seen data is not collected, stored, or displayed. The tool reports on group activity in aggregate, not on individuals' availability.
Are message contents stored? No, by default. Messages are counted and discarded. STORE_MESSAGE_CONTENT exists for teams with a documented consent basis and an actual need to archive; leave it off otherwise.
Will I see data from before I deployed? No. Reporting starts the moment the webhook is registered. WhatsApp exposes no historical group event API, so no tool can backfill this.
Does this risk my WhatsApp account? Any unofficial integration carries risk. This template only reads events from groups you administer and sends no messages, which is a considerably lower-risk profile than bulk messaging — but it is not zero. Use an account you can afford to lose, and read Evolution API's guidance before connecting a primary number.
How large a group can it handle? A single Postgres instance comfortably handles several groups in the thousands of members. Raise RETENTION_DAYS downward and rely on daily rollups if event volume grows.
Why Deploy WhatsApp Group Analytics on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying WhatsApp Group Analytics on Railway you get community reporting without handing your members' data to a third-party service — private networking between every service, automatic HTTPS, persistent Postgres, and retention controls you set yourself. Run it alongside your Evolution API instance and keep the entire pipeline on infrastructure you own.
Template Content
Whatsapp Group Monitor
marinaglancy/whatsapp-group-monitorADMIN_PASSWORD
Password for web access