member.joined
Fired when a new member submits the join form. Status changes from null → PENDING if approval is required, or null → APPROVED if not.
Body fields
eventType · string
Always "member.joined".
eventId · string (UUID)
Idempotency key. Mirrors X-Event-Id.
occurredAt · string (ISO 8601)
When the member joined.
community · object
The community the event belongs to — { id, name }.
member · object
The person who joined. Includes id, fullName, email, phone, linkedinUrl, companyName, companyStage.
status · object
{ old, new } showing the status transition. For joined, old is null.
questions · array | null
Onboarding form answers, if the community has an onboarding flow. Each entry is { semantic_key, question, type, answer }.
Example body
{
"eventType": "member.joined",
"eventId": "evt_50b56daed0a3486fbe8350f9",
"occurredAt": "2026-05-25T12:51:00.000Z",
"community": {
"id": "a9e2f12c-7c8d-4b3f-b9c1-2d6e3f5a8b10",
"name": "Founders Den"
},
"status": { "old": null, "new": "PENDING" },
"member": {
"id": "mem_3f8c2b1aa7d44c0e9e1f",
"fullName": "Asha Verma",
"email": "asha@acme.io",
"phone": "+91-99887-72211",
"linkedinUrl": "https://www.linkedin.com/in/asha-verma",
"companyName": "Acme Labs",
"companyStage": "seed"
},
"questions": [
{
"semantic_key": "why_joining",
"question": "Why are you joining?",
"type": "long_text",
"answer": "Looking to meet other early-stage founders."
},
{
"semantic_key": "stage",
"question": "What stage is your company?",
"type": "single_choice",
"answer": "Seed"
},
{
"semantic_key": "website",
"question": "What's your website?",
"type": "url",
"answer": "https://acme.io"
}
]
} member.approved
Fired when a pending member is approved by a moderator or admin. Status transitions from PENDING → APPROVED.
Example body
{
"eventType": "member.approved",
"eventId": "evt_b2f1a8d33e4b4f1aa4a1",
"occurredAt": "2026-05-25T13:02:00.000Z",
"community": { "id": "a9e2f12c-…", "name": "Founders Den" },
"status": { "old": "PENDING", "new": "APPROVED" },
"actor": { "id": "mem_…", "fullName": "Jorre R.", "role": "admin" },
"member": { "id": "mem_…", "fullName": "Asha Verma", "email": "asha@acme.io" }
} member.rejected
Fired when a pending member is rejected. Status transitions from PENDING → REJECTED. Includes an optional reason string.
Example body
{
"eventType": "member.rejected",
"eventId": "evt_c79122eebaa8479ea7c0",
"occurredAt": "2026-05-25T13:08:00.000Z",
"community": { "id": "a9e2f12c-…", "name": "Founders Den" },
"status": { "old": "PENDING", "new": "REJECTED" },
"actor": { "id": "mem_…", "fullName": "Jorre R.", "role": "admin" },
"member": { "id": "mem_…", "fullName": "Asha Verma", "email": "asha@acme.io" },
"reason": "Off-topic application."
} member.removed
Fired when an admin removes a member. Status transitions from APPROVED → REMOVED.
member.left
Fired when a member voluntarily leaves the community. Status transitions from APPROVED → LEFT. No actor field is included.