# Join (/api/events/members/join)



## Event Type [#event-type]

```ts
"member.join"
```

## Description [#description]

This event is triggered whenever a member joins your server. Bots are ignored.

## Payload Structure [#payload-structure]

<TypeTable
  type="{
  userId: {
    description: 'Discord user ID of the member who joined',
    type: 'string',
  },
  username: {
    description: 'Username of the member who joined',
    type: 'string',
  },
  joinedAt: {
    description: 'ISO 8601 timestamp when the member joined',
    type: 'string',
  },
  memberCount: {
    description: 'Total member count after the member joined',
    type: 'number',
  },
}"
/>

## Example Payload [#example-payload]

```json
{
  "type": "member.join",
  "payload": {
    "userId": "713115896805064856",
    "username": "johndoe",
    "joinedAt": "2024-01-18T15:30:00.000Z",
    "memberCount": 1250
  }
}
```

## Example Usage [#example-usage]

```ts
app.post('/webhook', (req, res) => {
  const { type, payload } = req.body;

  if (type === 'member.join') {
    console.log(`Member joined: ${payload.username}`);
    console.log(`User ID: ${payload.userId}`);
    console.log(`Member count: ${payload.memberCount}`);

    // Update member records in your database
    await recordMemberJoin({
      userId: payload.userId,
      username: payload.username,
      joinedAt: payload.joinedAt,
    });

    // Trigger onboarding workflows
    await startOnboarding(payload.userId);
  }

  res.status(200).send('OK');
});
```

## Use Cases [#use-cases]

* Sync new members to an external CRM or database
* Track growth and join rates over time
* Trigger custom onboarding or outreach workflows
* Log member joins for analytics and auditing
* Notify external systems when your community grows
