Community Manager

Sign in to access your admin panel

🎭 Demo Mode — data is fake and resets every 24 h. Log in as demo_admin / demo1234 to explore.
Seeded

⌘K
Searching…
🔍
No results for
↑↓ navigate go Esc close
Two-Factor Auth
Loading… Updated

Select events to bulk approve or reject.

📭

No pending events — you're all caught up!

No events found.
/
Title
Hosted By
Type
Date & Time
End Time
Location
Seats
Description
Images
🗂 Topic scheduled — bot will create it at:
🗂 Forum Topic  
Scheduled to open at
✏️ Edit Event
Update title, date, location, description, or images.
📣 Recruit Staff
No open shifts yet — add some from the Schedule tab first.
⛔ Cancel Event
All confirmed and waiting registrants will be notified via their preferred method. The event will also be removed from the calendar.
This event has been cancelled
✓ Confirmed: ⏳ Waiting: 💺 seats
+ Add Registration Manually
Name Email Telegram Notif. Status Actions
No registrations yet.
📧 Sends an email with a one-click cancellation link. Removing a confirmed registration auto-promotes the next waiting person.
Registered: ✓ Attended: No-show: 🚶 Walk-ins:
Name Email Attended Checked in Method
No registrations for this event.
🚶 Checked in without a registration
Name Checked in Method
📁 Topic Archive
🔗 Public Archive Link
🔍

            
No messages archived yet. Messages sent in the event's Telegram topic will appear here while the topic is open.
To backfill past messages use ⟳ Sync from Telegram above.
No messages match your search.
📁 Archive Requests
Auto-updates every 60s
Event Requester Reason Requested Status Actions
No requests found.
Auto-updates every 60s
User Status TOS Version Joined CAS Strikes Admin Role Actions
No Telegram users found.
Auto-updates every 60s
UserJoinedStrikesStatusActions
No members found.
/
Loading…
📋

No warning history for this member.

DateIssued ByReasonMuteStatus
📋

No audit entries for this member.

TimeActorActionDetails
Add note
📝

No notes for this member.

DateAdminNote
💚

Health score not yet calculated for this member.

💚 Member Health Dashboard
Loading health data…
💚

No health score data available yet. Scores are calculated automatically.

Member Grade Score Strikes Last Active Flags
🏷️ Interest Tags

Interest tags let members opt-in to topics they care about. Admins define the available tags here. Members can then select their interests from their profile or via the /interest bot command.

Add a new tag
🏷️

No interest tags defined yet.

TagDescriptionMembers opted in
🏆 Referral Leaderboard
🥈
referrals
🥇
referrals
🥉
referrals
🏆

No referral data yet. Members earn referral credits when they invite others to the group.

#MemberReferralsStreakJoined
UserStatusTOS VersionVerifiedOpenedCASFailsActions
No members.
UserTypeRolesScopeDepartment2FALast LoginActions
No users.
🔍
🛡️ ABAC Policy Guide
What is ABAC?

Attribute-Based Access Control lets you define fine-grained rules for who can do what. Each policy has a subject (who), an action (what), an object (on what), and an effect (allow or deny). Policies are checked in priority order (lowest number first). A single Deny overrides any number of Allows.

Policy Fields
Priority Lower = evaluated first. Use 10, 20, 30… to leave room.
Subject Who — filter by role, department, or leave {} to match everyone.
Object Resource type: event, tg_member, admin_user, setting, warning, registration, archive, schedule, audit_log, gdpr, or * for all.
Actions JSON array of actions, or ["*"] for all. See list on the right →
Effect allow grants access. deny blocks it — even if another policy allows it.
Available Actions
Example Policies
Moderators can warn & mute
Subject: {"role":"moderator"}
Object: tg_member
Actions: ["warn","mute","unmute"]
Effect: allow
Admins get full access
Subject: {"role":"admin"}
Object: *
Actions: ["*"]
Effect: allow
Block settings on weekends
Subject: {} (everyone)
Object: setting
Actions: ["configure"]
Effect: deny + time condition
💡 Tips
  • Start with a high-priority allow everything policy for super admins (priority 1).
  • Use deny sparingly — one deny blocks all lower-priority allows for that action.
  • Subject JSON keys: role, department, or any field on the admin user record.
  • Leave Subject as {} to match all logged-in admins regardless of role.
  • The Simple view shows human-readable summaries; Advanced shows raw JSON for debugging.
  • Scope lets you restrict a policy to a specific Group, Organisation, or Tenant — useful for granting extra permissions only in one group. Global policies always apply everywhere.
Role Description Type
No roles.
No rules match.
Pri Name / Subject Object Scope Actions
No rules match.
💬
Group settings —
Bot token, group IDs and cross-post destinations are specific to this group. Switch groups in the topbar to configure another.
🌐
Platform-wide settings
Applies to the entire installation — all tenants, organisations and groups inherit these values unless overridden at a lower scope.
🏢
Organisation settings —
TOS content and configuration applies to all groups in this organisation. Groups share a single set of terms.
🏢
Organisation settings —
Data retention and GDPR policies apply to all groups in this organisation.
Loading…
🗑️ GDPR Deletion Requests

No pending GDPR deletion requests.

SubmittedEmailStatusVerifiedExecuted
Auto-updates every 60s
Active Now
shifts in progress
Today
This Week
Mon – Sun
This Month
Pending Swaps
awaiting approval
Today's Shifts
No shifts scheduled for today.
📎 = linked to event Automate reminders: POST /api/schedule/notify
Total Staff
staff accounts
Event Managers
receive submission DMs
Missing TG ID
event mgrs without Telegram ID
🔍
Staff & Event Managers Toggle Event Manager to control who receives event submission DMs
Name Type Department Telegram ID Roles Event Manager Actions
No staff found.
Events per Month
Approved events created
No data yet
Attendees per Month
Total confirmed registrations
No data yet
Month Events Total Attendees Unique Members Avg per Event
Registration Funnel
Drop-off at each stage
No funnel data yet
Member Retention Cohorts
% of each join-month cohort still active at 3 / 6 / 12 months
Join Month Joined 3 Months 6 Months 12 Months
Activity Heatmap
Check-ins + registrations by hour and day of week
No heatmap data for this period
📧 Weekly Digest
Monday morning summary email — events, registrations, expiring cards, pending items.
Last run
📥 Export Reports
Download current data as CSV for external analysis.
🔄 Rebuild Analytics Snapshots
Pre-computes attendance data for faster chart loading. Run this if charts show stale data.
Loading usage data…
🔐 Two-Factor Authentication
Status
TOTP codes via Google Authenticator, Authy, or any compatible app.
🔑 Passkeys
No passkeys registered. Passkeys require HTTPS or localhost.
🔍
Time Actor Action Resource IP Details
No entries match the current filters. No log entries.
💻 Active Admin Sessions
No active sessions found.
🚨 Suspicious Login Alerts
No unacknowledged login alerts.
👥 Pending Approval Requests (4-Eyes)
No pending approval requests.

Commands the bot listens for and replies to automatically. Supports {first_name} {username} {group_name} {command_list} {event_list} placeholders. Enable Random from array to make the bot pick a random reply each time.

Loading commands…
🤖
No commands yet
Create your first bot command to get started.
Command Description Scope Parse Mode Order Enabled Actions
📖 Placeholder Reference
{first_name}
User's first name
{username}
@username (falls back to first name)
{group_name}
Your Telegram group name
{command_list}
Auto-generated list of all enabled commands
{event_list}
Next 7 upcoming events — includes seat count and a register link
🎲 Random mode
Toggle in the editor. Bot picks one reply at random each time
Configuring modules for group: Configuring org-level defaults — applies to all groups in this organisation
Settings cascade: group overrides org, org overrides global. Disabling a module hides it from the sidebar for that context.
Feature Modules
Enable or disable each feature for the current group context Set default module availability for all groups in this organisation
📅 Events
Event submissions, approvals, registrations, public event pages and archive access requests.
⚠️ Moderation
Telegram member list, warnings, bans, mutes and the housekeeping task.
📝 Terms of Service
TOS member status tracking, acceptance queue, revision bumping and message queue.
🗓 Schedule
Staff shift management, calendar view and upcoming-shift notifications.
📁 Archive
Event topic archive, access request approvals and Telethon message sync.
📱 Member App
PWA install card and member self-service portal (events, shifts, member card). Configure in Settings → WordPress Integration.
🤖 Bot Commands
Custom slash commands served by the bot in this group.
📣 Social Media
Cross-post approved events to Mastodon and other social platforms.
🪪 ID Cards
Member ID cards with QR check-in, RFID, digital wallet and WooCommerce sync.
💬
Group Context
Switching & scoping
🛡️
Permissions
ABAC roles & policies
🧩
Modules
Enable / disable features
🔌
WordPress Plugin
Install, embed & API keys
💬 Group Context & Switching

The group context controls which group's data you see in every page — events, members, shifts and settings all filter by the currently selected group.


1
Click the group name in the top bar to open the group switcher.
2
Select a group from the list. Your permissions and visible modules reload automatically for that context.
3
The selected group is remembered across browser sessions via localStorage.
💡 If you can't see certain pages after switching groups, check that the module is enabled for that group under Settings → Modules and that your ABAC role grants access in that scope.

Context hierarchy: Group → Organisation → Tenant. Settings, modules and ABAC policies cascade — a group override takes precedence over the org, which takes precedence over global.

🛡️ Permissions & ABAC

Community Manager uses Attribute-Based Access Control (ABAC). Policies are evaluated in priority order — the first matching policy wins.


Policy fields:

ResourceWhat is being accessed (e.g. event, tg_member, setting)
Actionread · write · delete · approve · any
RoleThe admin user role this policy matches (or any)
Effectallow or deny
PriorityLower numbers are evaluated first
Scopeglobal · tenant · org · group — limits where the policy applies

Roles are assigned per admin user. A user can have multiple roles. Roles are free-form strings that you create — there are no hardcoded role names except super, which bypasses all policy checks.

💡 To give a user read-only access to Events: create a role events-viewer, add a policy resource=event, action=read, role=events-viewer, effect=allow, then assign that role to the user.
⚠️ Super users bypass ABAC entirely and see all platform data regardless of scope. Only assign this role to fully trusted administrators.
🧩 Module Toggles

Each feature module can be independently enabled or disabled per group, organisation, or globally. Disabled modules are hidden from the sidebar and their API endpoints return 403 for the relevant context.


Available modules:

📅 EventsEvent submissions, approvals, registrations, public event pages
⚠️ ModerationTelegram member list, warnings, bans, mutes, housekeeping
📝 Terms of ServiceTOS member tracking, acceptance queue, revision bumping
🗓 ScheduleStaff shift management, calendar view, shift notifications
📁 ArchiveEvent topic archive, access requests, Telethon message sync
🤖 Bot CommandsCustom slash commands served by the bot in this group

Go to Settings → Modules to change the toggles for the current group context. The cascade means: if a module is disabled at the org level, all groups in that org inherit the disabled state unless they explicitly override it.

⚙️ Settings

Settings are scoped — group-level settings override org-level, which override global. Changes here only affect the current group context unless you are editing at org or global level.


🌐 GlobalTimezone, display preferences, time format, authentication methods (Entra SSO, Telegram login, local login visibility)
🤖 TelegramBot token, group ID, forum topic ID, crosspost targets, moderation webhook URL
📅 EventsRegistration limits, image collage, submission message template, calendar sync URL
📜 TOSTOS content or URL, revision string, verification portal URL, Cloudflare Turnstile keys, max failures, timeout
🗓 ScheduleShift notification lead time, bot message template
📲 PWA (Staff App)Toggle Telegram / Email / Entra / Local login methods for the staff app, Entra External ID tenant & client credentials
🔒 GDPR & RetentionMember data retention period, GDPR report generation, remove specific member data
🤖 Bot CommandsDefine custom slash commands the bot responds to in this group
🧩 ModulesEnable or disable feature modules for the current group context
🏠 Dashboard

The dashboard shows a live overview of activity for the current group context. It auto-refreshes every 30 seconds (toggle with the Auto checkbox).


Customising the layout:

1
Click ⊞ Edit Layout in the top-right of the dashboard.
2
Drag widgets to reorder. Toggle visibility with the eye icon. Resize with the width selector.
3
Click ✓ Done to save the layout. Use ↺ Reset to restore the default.

💡 Layout is saved per browser via localStorage — each user can have their own dashboard arrangement.
🔐 Account & Security

Click your username in the top-right to access account and security settings.


🔑 PasskeysRegister a WebAuthn passkey (fingerprint, Face ID, hardware key) for passwordless login.
📱 2FA / TOTPEnable a time-based one-time password authenticator (Google Authenticator, Authy, etc.).
🔒 Change PasswordUpdate your local admin password.

The Audit Log (System → Audit Log) records all admin actions with timestamps, actor, category and detail — filterable by keyword, category and time period.

⚠️ Sessions expire after the configured idle timeout. You will see a warning modal 2 minutes before expiry with an option to extend.
🔌 WordPress Plugin

The Community Manager WordPress plugin embeds public-facing pages (events, schedule, archive, ID card wallet) into any WordPress site via Gutenberg blocks or shortcodes.


Install steps:

1
In the admin panel go to Settings → Modules → WordPress Plugin (or download the .zip from the API Keys page).
2
In WordPress go to Plugins → Add New → Upload Plugin and upload community-manager.zip.
3
Click Install Now then Activate.
4
Go to Settings → Community Manager in WordPress and paste in your API Base URL and API Key.
5
Save — the plugin verifies the connection and shows a green confirmation.

💡 The plugin requires WordPress 5.8+ and works with both classic and block themes. PHP 7.4+ is needed on the WordPress server.

The plugin authenticates to Community Manager using an API Key scoped to a specific group.


1
In Community Manager go to Settings → API Keys.
2
Click + Create Key, give it a name (e.g. WordPress site) and set scope to Group.
3
Copy the key immediately — it is shown only once.
4
Paste the key into the WordPress plugin settings (Settings → Community Manager → API Key).

Scope: GroupThe key is tied to a specific Telegram group. The plugin can only read data for that group.
Scope: OrgThe key can access all groups in an organisation — useful for multi-group sites.
RevokeDelete the key in API Keys at any time to immediately block all plugin requests.
⚠️ Never commit API keys to version control or expose them publicly. The WordPress plugin stores the key in the WordPress options table (encrypted at rest if you have a secrets plugin).

The plugin provides Gutenberg blocks for the block editor and equivalent shortcodes for classic editor / page builders.


Events blockShows the upcoming events list. Shortcode: [cm_events]
Schedule blockRenders the public shift schedule. Shortcode: [cm_schedule]
Archive blockLinks to the topic archive index. Shortcode: [cm_archive]
ID Card blockWallet / check-in embed. Shortcode: [cm_id_card]
Map blockLeaflet map of event locations. Shortcode: [cm_map]
Open ShiftsList of unclaimed volunteer shifts, single-event or multi-event grid mode. Shortcode: [cm_open_shifts]
Member PortalTabbed member portal (orders, ID card, Volunteer tab with open shifts). Shortcode: [cm_portal]

Block options (set in block sidebar in Gutenberg):

HeightIframe height in pixels (default: 600)
Themedark (default) or light
Group overrideOverride the default group for this specific block
💡 All blocks render as iframes pointing to the Community Manager public pages. The auto-resize script is included automatically to fit the content height.

Each block embeds a public page from Community Manager inside a responsive iframe. The iframe auto-resizes to fit content height via a postMessage script.


Public pages available for embedding:

/pages/events.htmlUpcoming event list with registration links
/pages/schedule.htmlStaff / volunteer shift calendar
/pages/archive.htmlTopic archive index (access-gated)
/pages/schedule-app.htmlFull schedule SPA with week/month view
/pages/id-card-wallet.htmlMember's own ID card wallet (token-authenticated)
/pages/id-card-checkin.htmlStaff check-in scanner page

All pages accept a ?theme=light query parameter. Append &embedded=1 to remove the standalone page chrome when inside an iframe.

💡 You can also embed pages manually with a standard HTML <iframe> tag — include embed-resize.js from the CM public folder to enable auto-height.

The ID Card block ([cm_id_card]) embeds the member wallet page. Because it is token-authenticated, the flow works as follows:


1
Member visits your WordPress page containing the ID Card block.
2
The block renders a login prompt asking for their Telegram ID or a magic link.
3
The member authenticates — Community Manager issues a short-lived wallet token.
4
The iframe loads their card with a live rotating QR code, check-in button and print link.

PrintMembers can print their card directly from the wallet page — opens a browser print dialog with the card formatted at ID-1 size.
Guest passIf enabled, members can generate a single-use guest pass QR code from the wallet page.
RenewalAn expiry countdown and renewal link are shown on the wallet when the card is within the reminder window.
💡 For the best experience, place the ID Card block on a dedicated WordPress page (e.g. /my-card) and link to it from your main menu.

Common issues and fixes:


Blank iframeCheck that the API Base URL in WordPress plugin settings ends without a trailing slash and matches the CM installation URL exactly.
Connection refusedVerify the API Key is valid (not revoked) and scoped to the correct group. Use the Test Connection button in plugin settings.
CORS errors in consoleThe CM server must include the WordPress domain in its CORS allowed-origins. Check the server's .htaccess or nginx config.
Iframe height not auto-sizingEnsure the embed-resize.js script is loading. Check for Content Security Policy headers blocking postMessage on either domain.
Events not showingConfirm the Events module is enabled for the group tied to the API Key and that at least one approved event exists.
ID Card block shows "Unauthorized"The wallet token expires — the member should refresh the page to re-authenticate. If it persists, check that ?token= query string fallback is enabled in CM (Request.php bearerToken method).
⚠️ If the WordPress site is on HTTPS and Community Manager is on HTTP, browsers will block mixed-content iframes. Both must use HTTPS in production.
🧭 Navigation & Search (v2.3)
‹ / › Collapse sidebarButton at the bottom of the sidebar collapses it to a 56 px icon strip. Hover any icon to see its label. State is remembered in localStorage.
★ Pin favouritesHover any sidebar link to reveal a ★ button. Pinned pages appear in a Pinned group at the top of the nav. Pins are stored in localStorage.
Sidebar filterThe search box at the top of the expanded sidebar filters all nav links in real-time. Press Escape to clear.
Breadcrumb trailThe topbar shows the section (e.g. EVENTS) above the page title when inside a nav group.
⌘K global searchThe topbar search returns both page results and data results — events, members, ID cards, audit entries and mod tickets — simultaneously. Use ↑↓ and Enter to jump to any result.
💡 Data results respect ABAC permissions — you only see records you are authorised to access.
📈 Platform Analytics (v2.3)

Found under System → Analytics in the sidebar.


📊 AttendanceMonthly bar charts for event count and total attendees (up to 24 months).
🏗 FunnelDrop-off at each registration stage: Viewed → Registered → Confirmed → Checked In.
🔁 RetentionCohort table: % of each join-month still active at 3, 6 and 12 months.
🔥 HeatmapHour × weekday grid of combined check-in and registration activity.
📧 Weekly DigestTrigger the Monday summary email manually. Normally runs via php manage.php run-jobs or WP-cron.
📥 CSV ExportsDownload events, registrations, members, ID cards or check-ins as CSV.
🔄 Rebuild SnapshotsPre-computes monthly attendance data for faster chart loads.
📡 Usage MeteringSuper-admin only. Current-month counts for events, members, check-ins, DMs.
🔐 Security — Sessions & Approvals (v2.3)

Extended sections on the Security page (user menu → Security Settings):


💻 Active SessionsAll active admin sessions with IP and last-seen time. Click Revoke to immediately invalidate a session.
🚨 Login Alerts — New IPTriggered on first login from any unrecognised IP address. An email is sent to the account holder automatically. Click Acknowledge once reviewed.
🖥 Login Alerts — New DeviceTriggered when the browser/OS combination has not been seen before for that admin account (device fingerprint from User-Agent). Email sent only if the IP was already known, to avoid duplicate alerts.
👥 4-Eyes ApprovalWhen security.FOUR_EYES_ENABLED is on, destructive actions need a second admin to approve. Pending requests list here.
💡 Login alert checks run on every login path: password, 2FA completion, and Microsoft SSO. Enable/disable via security.LOGIN_ALERT_ENABLED in Global Settings.
Loading…
No tenants found.
Name Slug Plan Orgs Status Actions
Loading…
No organisations found.
Name Tenant Slug Groups Status Actions
Loading…
No groups found.
Name Organisation Telegram ID Token Override Status Actions
🔑
API Keys
API keys let external sites (e.g. WordPress) read events without admin credentials. Keys are scoped to a group, organisation or tenant — shown only once at creation.
Create New API Key
Key Name
Scope
Existing Keys
Usage

Use your API key to fetch public events from any site:

GET /api/public/events?api_key=cm_xxxxxxxxxxxx

Or pass it as a header:

X-Api-Key: cm_xxxxxxxxxxxx

Optional filters:

  • from=2025-01-01 — events on or after this date
  • to=2025-12-31 — events on or before this date

In WordPress, add the key in Settings → Community Manager and use the [cm_map] shortcode.

CARD # MEMBER TIER / TYPE STATUS EXPIRES VISITS

Issue ID Card

Member (Telegram username or ID) *
Card tier
Card type
Expires
Holder name (optional override)
Holder email
Notes

Import Cards from CSV

CSV columns: telegram_username, card_tier, card_type, expires_at, holder_name, holder_email
🪪
Group settings —
ID card configuration is per-group. Switch groups in the topbar to configure another.
General
Module enabled
Show ID Cards section in this group's admin panel
Card number prefix
Prepended to all generated card numbers, e.g. CM → CM-20241001-A1B2
Default expiry (days)
How many days from issue date until a card expires if no explicit date is set
Daily check-in limit
Max check-ins per card per day. Set 0 for unlimited.
Require approval
New cards start as pending and must be approved by an admin before activation
Check-in notification
Send the member a Telegram message each time their card is scanned
Tiers & Types
Card tiers
Comma-separated list, e.g. Standard, Silver, Gold, Staff
Card types
Comma-separated list, e.g. Member, Volunteer, Staff, Guest
QR Code
Token lifetime (seconds)
QR auto-rotates when less than 20% remains. Recommended: 300 (5 min)
Print Layout
Card template
Choose a visual template designed in the Card Designer. Selecting one applies its colours and logo to printed and wallet cards.
No templates yet — create one in the Card Designer first.
Layout
Physical card orientation when printing
Logo URL
Shown on the printed card. Leave blank to use the logo from the selected template.
Custom colours — overridden by template
Custom colours
Background colour
Accent colour
Telegram Bot
Bot token
Dedicated bot for ID card messages (/mycard, check-in alerts, renewal links). Falls back to the event bot token if left blank.
Admin alert Telegram ID
Numeric user ID to receive alerts when a card is denied check-in
Wallet base URL
Base URL of this app, used to build wallet and renewal links sent via Telegram
Renewal
Self-renewal enabled
Allow members to renew their card via a Telegram link without admin involvement
Reminder days
Send renewal reminders this many days before expiry. Comma-separated.
WooCommerce Sync
Sync member name, tier and expiry from WooCommerce subscriptions and orders. Leave blank to disable.
Site URL
Your WooCommerce store URL
Consumer key
WooCommerce REST API consumer key (ck_…)
Consumer secret
WooCommerce REST API consumer secret
Tier meta key
Order/subscription meta key that holds the membership tier value
Webhook secret
Secret for verifying incoming WooCommerce webhooks (HMAC-SHA256)
Test connection
Verify the API credentials are working
Bulk re-sync
Pull latest name, tier and order data from WooCommerce for all active and expired cards
Cross-Group
Accept visitor cards
Allow cards from other groups to check in here (configure rules in RFID Readers → Cross-Group)
Wallet Passes
Members can save their ID card to Apple Wallet or Google Wallet directly from the wallet page. Configure the relevant platform(s) below. Both are optional and independent.
Require photo approval
When enabled, photos uploaded by members from the wallet page must be approved by an admin before going live.
Apple Wallet
Pass Type Identifier
From Apple Developer Portal, e.g. pass.com.yourorg.idcard
Team ID
Your 10-character Apple Team ID
Pass Certificate (PEM)
Pass Type ID certificate exported from Keychain as PEM (include -----BEGIN CERTIFICATE----- headers)
Private Key (PEM)
Private key matching the certificate
Key Passphrase
Leave blank if the key has no passphrase
Google Wallet
Issuer ID
From Google Pay & Wallet Console → Your business → Issuer ID
Service Account JSON
Full contents of the service account key JSON file downloaded from Google Cloud Console
Check-in Heatmap
Less More
Expiring Soon
CARD MEMBER EXPIRES
Activity Leaderboard
# MEMBER SCORE VISITS
First & Last Check-in
MEMBER FIRST SEEN LAST SEEN VISITS
Register New Reader
Saving…
✓ Reader registered — copy the API token below. It will not be shown again.
Cross-Group Acceptance Rules
Allow cards from other groups to check in here. You can restrict by tier.
VISITOR GROUP ALLOWED TIERS STATUS
📥 CSV Import / Bulk Issue
Upload a CSV file to issue cards in bulk. Required columns: telegram_id, holder_name. Optional: holder_email, card_tier, card_type, expires_at, notes
📄
Drag & drop CSV file here, or click to browse
# telegram_id holder_name tier type expires_at
Created
Skipped
🔄 Bulk Renew
Extend expiry for selected cards. Enter card IDs comma-separated, or paste from a CSV export.
✓ Renewed card(s)
⏱ Set Expiry for Tier
Set a new expiry date for all active/pending cards of a given tier.
✓ Updated card(s)
🔍 Duplicate Detection
Scan for members with more than one active card in this group and flag them.
Cards awaiting admin review before activation.
CARD # MEMBER TIER / TYPE REQUESTED NOTES

Check-in Log

All check-in events across active cards

⬇ Export CSV
Date / Time Card Holder Method Result Reject Reason Reader / IP Actions
A member's card auto-uses the template matching their tier; falls back to the default template otherwise.
Live Preview
Sample Member Name

Preview at 85.6 × 54 mm (ID-1). Click Front / Back to preview each face. Changes reflect immediately.

Saved Templates
📤 Outbound Webhooks
Push CM events to external URLs
📥 Inbound Webhooks
Receive HMAC-verified payloads from external systems
📅 Google Calendar
Enable Google Calendar Sync
Approved events are pushed to Google Calendar and removed when cancelled
Service Account JSON
Paste the full contents of your GCP service account key file
Calendar ID
e.g. abc123@group.calendar.google.com
✉️ Mailchimp
Enable Mailchimp Sync
Members are subscribed to your list on first registration or card activation
API Key
Audience / List ID
Tag Prefix
Applied to member tags e.g. "cm-" → "cm-member"
💳 Stripe Ticketing
Enable Stripe Ticketing
Events with a ticket price require payment before registration is confirmed
Secret Key
Webhook Secret
From your Stripe webhook endpoint settings
Currency
Success URL
Redirect after successful payment
Cancel URL
Redirect if payment is abandoned
🎫 Eventbrite Import
Enable Eventbrite Import
Fetch events from Eventbrite and import them as pending events in CM
API Key
Organisation ID
💼 LinkedIn Events
Enable LinkedIn Events
Events with "Post to LinkedIn" enabled will be created as LinkedIn Events on approval
Organisation URN
e.g. urn:li:organization:123456
Access Token
LinkedIn OAuth2 access token with r_events_w scope
📱 SMS Alerts (Twilio)
Enable SMS Alerts
Send SMS notifications for event cancellations to registrants who provided a phone number
Account SID
Auth Token
From Number
Your Twilio phone number in E.164 format
📄 Event Templates
Save pre-filled event forms to reuse when creating new events
🔗 Event Series
Group related events into named series (e.g. Monthly Meetup 2026)
Tip: To assign an event to a series, open the event in All Events, click Edit, and use the Event Series dropdown in the Details section.
🗳 Voting / Polls
Send Telegram polls to the group for events or any topic
🎤 Speaker Profiles
Manage speaker bios and links — tag speakers to events from the event editor
🤖 Auto-mod Rules
Keyword and regex patterns that trigger automatic moderation actions on incoming messages
Actions: log = record only  ·  notify = send chat message only  ·  warn = delete + send warning  ·  delete = delete message  ·  mute = restrict for duration  ·  ban = remove from group
🏆 Member Leaderboard
Opt-in ranking by check-ins and activity — top 50 members
🎟 Guest Pass Dashboard
All issued guest passes across all members — status, issuer, expiry
Community Manager — Web App
Installed
Latest
📋 Release Notes
Loading…