> ## Documentation Index
> Fetch the complete documentation index at: https://social-b97141fb-feat-user-history-moderation-detail.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Events & Activities

> Create structured events with RSVP, attendance tracking, event discovery, and calendar integration.

> [!NOTE]
>
> **SDK v7.x** · Last verified March 2026 · iOS · Android · Web

> **Speed run — just the code**
>
> ```typescript theme={null}
> // 1. Create an event
> const { data: event } = await EventRepository.createEvent({
>   title: 'Community Meetup', description: 'Monthly gathering',
>   startDate: '2026-04-01T18:00:00Z', endDate: '2026-04-01T20:00:00Z',
>   targetType: 'community', targetId: 'communityId',
> });
>
> // 2. RSVP — called on the event linked object
> const rsvp = await event.createRSVP(AmityEventResponseStatus.Going);
>
> // 3. Query upcoming events
> EventRepository.getEvents({ status: 'upcoming', limit: 10 },
>   ({ data }) => { /* render */ }
> );
> ```
>
> Full walkthrough below ↓

> [!TIP]
>
> **Platform note** — code samples below use TypeScript. Every method has an equivalent in the iOS (Swift), Android (Kotlin), and Flutter (Dart) SDKs — see the linked SDK reference in each step.

Events give communities and users a way to organize real-world and virtual activities. social.plus supports three event types — **livestream**, **external link** (virtual), and **in-person** — each with RSVP tracking, attendee lists, and push notification reminders.

> **Livestream**
>
> Go live directly within the app — attendees watch and chat in real time.

> **Virtual (External Link)**
>
> Redirect attendees to Zoom, Google Meet, or any external URL.

> **In-Person**
>
> Physical gatherings with an address field and map support.

This guide covers creating events, managing RSVPs, querying attendees, admin console management, and building an event discovery experience.

```mermaid theme={null}
graph TD
    A[User creates event] --> B[Event published to community]
    B --> C[Members see event in feed or calendar]
    C --> D{Member response}
    D -->|Going| E[RSVP: going]
    D -->|Not going| F[RSVP: not_going]
    D -->|Interested| G[RSVP: interested]
    E & G --> H[Attendee list grows]
    H --> I[Event creator sees attendance stats]
    B --> J[Push notification to community members]

    classDef action fill:#e1f5fe,stroke:#0288d1,color:#01579b
    classDef decision fill:#fff8e1,stroke:#f9a825,color:#f57f17
    classDef process fill:#f3e5f5,stroke:#7b1fa2,color:#4a148c
    classDef outcome fill:#e8f5e9,stroke:#388e3c,color:#1b5e20

    class A action
    class D decision
    class B,C,E,F,G,J process
    class H,I outcome
```

> [!NOTE]
>
> **Prerequisites**: SDK installed and authenticated. A `communityId` is required — events are always attached to a community.
>
> **Also recommended:** Complete [Community Platform](/use-cases/social/community-platform.md) first — events live inside communities.

> [!NOTE]
>
> **After completing this guide you'll have:**
>
> * Event creation with title, description, date/time, and location
> * RSVP (going / not going) flow with attendee list
> * Events discoverable in community feeds and a dedicated events list

***

## Quick Start: Create an Event

```typescript TypeScript theme={null}
import {
  AmityEventOriginType,
  AmityEventType,
  EventRepository,
} from '@amityco/ts-sdk';

const { data: event } = await EventRepository.createEvent({
  title: 'Community Workshop',
  description: 'A live workshop for community members.',
  type: AmityEventType.Virtual,
  startTime: '2026-08-01T09:00:00.000Z',
  endTime: '2026-08-01T10:00:00.000Z',
  originType: AmityEventOriginType.Community,
  originId: communityId,
  externalUrl: 'https://example.com/live',
  tags: ['workshop'],
  metadata: { timezone: 'UTC' },
});

showSuccessMessage(event.eventId);
```

***

## Step-by-Step Implementation

**1. Query events in a community**

Query events for a specific community, filtered by status and sort order. Results are returned as a live collection.

```typescript TypeScript theme={null}
import { EventRepository, AmityEventOriginType, AmityEventSortOption, AmityEventOrderOption } from '@amityco/ts-sdk';

const unsubscribe = EventRepository.getEvents(
  {
    originType: AmityEventOriginType.Community,
    originId: 'community-123',
    sortBy: AmityEventSortOption.StartTime,
    orderBy: AmityEventOrderOption.Ascending,
  },
  ({ data: events, loading }) => {
    if (events) {
      events.forEach(event => console.log(event.title, event.startTime));
    }
  },
);
```

Full reference → [Manage Events](/social-plus-sdk/social/events/manage-events.md)

**2. RSVP to an event**

Let users respond with `going`, `not_going`, or `interested`. Users can change their RSVP at any time before the event starts.

```typescript TypeScript theme={null}
import { EventRepository, AmityEventResponseStatus } from '@amityco/ts-sdk';

const unsubscribe = EventRepository.getEvent(
  'event-123',
  async ({ data: event }) => {
    if (event) {
      const rsvp = await event.createRSVP(AmityEventResponseStatus.Going);
      console.log('RSVP:', rsvp?.status);
    }
  },
);
```

Full reference → [Event RSVP](/social-plus-sdk/social/events/event-rsvp.md)

**3. Query event attendees**

Query the list of attendees filtered by RSVP status. Use this to show who's going, display an attendee count, or build an attendee list screen.

```typescript TypeScript theme={null}
import { EventRepository, AmityEventResponseStatus } from '@amityco/ts-sdk';

const unsubscribe = EventRepository.getEvent('event-123', ({ data: event }) => {
  if (event) {
    event.getRSVPs(
      { status: AmityEventResponseStatus.Going },
      ({ data: responses }) => {
        if (responses) {
          responses.forEach(rsvp => console.log('Attendee:', rsvp.user?.displayName));
        }
      },
    );
  }
});
```

Full reference → [Event RSVP](/social-plus-sdk/social/events/event-rsvp.md)

**4. Update and delete events**

Event creators and community moderators can update event details (title, description, time, location) or delete events entirely.

```typescript TypeScript theme={null}
import { EventRepository } from '@amityco/ts-sdk';

// Update an event
const { data: updated } = await EventRepository.updateEvent('event-123', {
  title: 'Updated Event Title',
  description: 'New details for the event',
  startTime: '2025-04-20T15:00:00Z',
});

// Delete an event
await EventRepository.deleteEvent('event-123');
```

Full reference → [Manage Events](/social-plus-sdk/social/events/manage-events.md)

***

## Admin Console: Manage & Monitor Events

Admins can create, view, and manage all events across communities from **Admin Console → Events**.

### Events Dashboard

![Admin Console events management table showing event titles, types, communities, creators, dates, and status](https://mintcdn.com/social-b97141fb-feat-user-history-moderation-detail/EuQgtDswnsuEu3tu/images/analytics-and-moderation/console-events-management.png?fit=max\&auto=format\&n=EuQgtDswnsuEu3tu\&q=85\&s=3ba1c2cbf833ab15d3735cd03a1a26a0)

Events management — view all events with status, type, creator, attendee count, and dates

The dashboard shows all events at a glance with filtering by **creator** and **status** (Upcoming, Ongoing, Ended). Columns include event title, type, community, creator, start/end dates, status, and attendee count.

### Create Events from Console

Click **Create event** to build events directly from the console — useful for official community events or marketing campaigns.

![Admin Console create event form with community selector, event name, thumbnail upload, and scheduling fields](https://mintcdn.com/social-b97141fb-feat-user-history-moderation-detail/EuQgtDswnsuEu3tu/images/analytics-and-moderation/console-events-create.png?fit=max\&auto=format\&n=EuQgtDswnsuEu3tu\&q=85\&s=c3c78052ff8bfd7b2c7922603135b381)

Create event form — select community, set event name, thumbnail, description, dates, and type

The creation form covers:

* **Feed & account** — target community and creator identity
* **Event details** — name (60 chars), description (1,000 chars), optional 16:9 thumbnail
* **Schedule** — timezone-aware start and end date/time pickers
* **Event type** — Livestream, External Link (URL), or In-Person (address)

### Event Detail View

Click any event to see its detail page with three tabs:

![Admin Console event detail page with Activities tab showing post count and status badges](https://mintcdn.com/social-b97141fb-feat-user-history-moderation-detail/EuQgtDswnsuEu3tu/images/analytics-and-moderation/console-events-detail.png?fit=max\&auto=format\&n=EuQgtDswnsuEu3tu\&q=85\&s=ca40826e8d886931b80ed8d5646f0490)

Event detail — Activities tab showing posts created within the event context

| Tab | What it shows |
| - | - |
| **Activities** | Posts and engagement tied to the event |
| **Attendees** | Users who RSVP'd — going, interested, not going |
| **Details** | Full event config (community, schedule, type, address/link) — editable |

![Admin Console event detail Details tab showing community, name, thumbnail, timezone, dates, and event type fields](https://mintcdn.com/social-b97141fb-feat-user-history-moderation-detail/EuQgtDswnsuEu3tu/images/analytics-and-moderation/console-events-detail-tab.png?fit=max\&auto=format\&n=EuQgtDswnsuEu3tu\&q=85\&s=2e9968aa2a40273a3ad9e7639889427b)

Event detail — Details tab with editable event configuration

### Push Notification Configuration

Enable event-related push notifications in **Admin Console → Settings → Push notifications → Community event**.

![Admin Console push notification settings for community events showing toggles for post, reaction, approval, and review notifications](https://mintcdn.com/social-b97141fb-feat-user-history-moderation-detail/EuQgtDswnsuEu3tu/images/console-push-notifications-community-events.png?fit=max\&auto=format\&n=EuQgtDswnsuEu3tu\&q=85\&s=e2ae07614fe36e3e21bae3f89dbbf87c)

Push notification settings — toggle community event notifications (post created, reactions, approvals)

> **Webhook: event lifecycle**
>
> Receive `event.created`, `event.updated`, `event.rsvp.created`, and `event.rsvp.updated` webhook events to sync attendance data with an external calendar system, CRM, or trigger reminder emails.
>
> → [Webhook Events](/analytics-and-moderation/social+-apis-and-services/webhook-event.md)

> **Push notification: event reminders**
>
> Use webhooks to send reminder push notifications to RSVP'd attendees before an event starts. Trigger this from your backend when `event.startAt - 24h` is reached.
>
> → [Notifications guide](/use-cases/social/notifications-and-engagement.md)

> **Events management reference**
>
> Full console documentation for events management including all field descriptions, event types, and status lifecycle.
>
> → [Console: Events Management](/analytics-and-moderation/console/management/events-management.md)

***

## Common Mistakes

> [!WARNING]
>
> **Creating events without an end date** — Events without `endDate` appear as ongoing indefinitely. Always set both `startDate` and `endDate` for a clear timeline.

> [!WARNING]
>
> **Displaying event times without timezone conversion** — The API stores dates in UTC. Always convert to the user's local timezone before rendering, or display the timezone label.
>
> ```typescript theme={null}
> // ❌ Bad — raw UTC string
> <span>{event.startDate}</span>
>
> // ✅ Good — localized
> <span>{new Date(event.startDate).toLocaleString()}</span>
> ```

> [!WARNING]
>
> **Not refreshing RSVP counts after changes** — After a user RSVPs, other attendees' counts are stale. Use Live Collections or re-query after RSVP actions to keep counts accurate.

## Best Practices

> **Event discovery UX**
>
> * Show upcoming events prominently in the community feed — pin an event post in the week before it starts
> * Add filtering: "This week", "This month", "Past events"
> * Show a map preview for in-person events with a location field
> * Display the RSVP counts prominently ("42 going · 18 interested") to create social proof
>
> ![Mobile past events list with thumbnails, virtual and in-person badges, dates, and brand names](https://mintcdn.com/social-b97141fb-feat-user-history-moderation-detail/x8DjzIl7SM9fvUVd/images/past-event-page.png?fit=max\&auto=format\&n=x8DjzIl7SM9fvUVd\&q=85\&s=4df3dec2ff1fee4ba176cad0806f8354)
>
> Past events page — mobile UI showing thumbnails, event types, and dates

> **RSVP workflow**
>
> * Send a confirmation in-app notification when a user RSVPs to an event
> * Allow users to change their RSVP up until the event starts
> * Send a reminder push notification 24h and 1h before the event to "going" attendees
> * After the event ends, ask attendees to leave a review or reaction

> **Timezone handling**
>
> * Always store event times in UTC and convert to local time for display
> * Show the timezone explicitly on event details (e.g., "3:00 PM PDT") to avoid confusion
> * For virtual events, show the time in both the creator's and viewer's timezone

***

> [!TIP]
>
> **Dive deeper**: [Events API Reference](/social-plus-sdk/social/events/overview.md) has full parameter tables, method signatures, and platform-specific details for every API used in this guide.

## Next Steps

> **[Your next step → Notifications & Engagement](/use-cases/social/notifications-and-engagement.md)**
>
> Events are live — now set up notifications so members get alerted about new events and RSVP reminders.

Or explore related guides:

> **[Community Platform](/use-cases/social/community-platform.md)**
>
> Events are typically hosted within communities

> **[Notifications & Engagement](/use-cases/social/notifications-and-engagement.md)**
>
> Send event reminders and RSVP notifications

> **[Build a Social Feed](/use-cases/social/build-a-social-feed.md)**
>
> Surface upcoming events in the community feed


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.