> ## Documentation Index
> Fetch the complete documentation index at: https://memberpulseptyltd.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# UJ-C-012: Create Event

> Client staff creates a new event with all configuration options

## Journey Overview

| Attribute      | Value                                  |
| -------------- | -------------------------------------- |
| **Journey ID** | UJ-C-012                               |
| **Actor**      | Client Admin / Staff                   |
| **Goal**       | Create a new event for members         |
| **Trigger**    | Organization needs to host an event    |
| **Outcome**    | Event created and optionally published |

## Preconditions

* Staff has ROLE\_CLIENT\_ADMIN permission
* Event categories configured
* Ticket types defined (if paid)

## Journey Flow

```mermaid theme={null}
flowchart TD
    A[Navigate to Events] --> B[Click Create Event]
    B --> C[Enter basic details]
    C --> D[Set date and time]
    D --> E[Configure location]
    E --> F[Add tickets]
    F --> G[Add speakers]
    G --> H[Configure CPD]
    H --> I[Set visibility]
    I --> J{Save as?}
    J -->|Draft| K[Save as draft]
    J -->|Publish| L[Publish event]
    K --> M[Event saved]
    L --> M
```

## Detailed Steps

<Steps>
  <Step title="Access Event Creation">
    Navigate to Events:

    * Client Portal → Events
    * Click "Create Event" or "+"
  </Step>

  <Step title="Basic Information">
    Enter event details:

    ```
    ┌─────────────────────────────────────────────────────────────┐
    │ Create Event                                                │
    ├─────────────────────────────────────────────────────────────┤
    │                                                             │
    │ Step 1: Basic Information                                   │
    │ ─────────────────────────                                   │
    │                                                             │
    │ Event Title *                                               │
    │ [________________________________________________]         │
    │                                                             │
    │ Short Description *                                         │
    │ [________________________________________________]         │
    │ Used in event cards and emails                              │
    │                                                             │
    │ Full Description *                                          │
    │ ┌─────────────────────────────────────────────────────────┐ │
    │ │ [Rich text editor with formatting]                      │ │
    │ │                                                         │ │
    │ │                                                         │ │
    │ └─────────────────────────────────────────────────────────┘ │
    │                                                             │
    │ Event Type *              Category *                        │
    │ [○ Live ○ Online ○ Hybrid] [Select Category ▼]             │
    │                                                             │
    │ Featured Image                                              │
    │ [📷 Upload Image] Recommended: 1200x630px                  │
    │                                                             │
    │ [Next: Date & Time →]                                       │
    └─────────────────────────────────────────────────────────────┘
    ```
  </Step>

  <Step title="Date and Time">
    Configure event schedule:

    | Field      | Description                 |
    | ---------- | --------------------------- |
    | Start Date | Event start date            |
    | Start Time | Event start time            |
    | End Date   | Event end date              |
    | End Time   | Event end time              |
    | Timezone   | Event timezone              |
    | All Day    | Toggle for all-day events   |
    | Multi-day  | Toggle for multi-day events |

    **Options:**

    * Single day event
    * Multi-day event (conference)
    * Recurring event (series)
    * Schedule for later publishing
  </Step>

  <Step title="Location Configuration">
    **For Live Events:**

    ```
    ┌─────────────────────────────────────────────────────────────┐
    │ Location (Live Event)                                       │
    ├─────────────────────────────────────────────────────────────┤
    │                                                             │
    │ Venue Name *                                                │
    │ [Convention Center                              ]           │
    │                                                             │
    │ Address *                                                   │
    │ [123 Main Street                                ]           │
    │                                                             │
    │ City *              State *         Postcode                │
    │ [Sydney        ]   [NSW ▼]         [2000    ]              │
    │                                                             │
    │ [🗺️ Preview on Map]                                        │
    │                                                             │
    │ Parking Information                                         │
    │ [________________________________________________]         │
    │                                                             │
    │ Access Instructions                                         │
    │ [________________________________________________]         │
    │                                                             │
    └─────────────────────────────────────────────────────────────┘
    ```

    **For Online Events:**

    ```
    ┌─────────────────────────────────────────────────────────────┐
    │ Online Event Configuration                                  │
    ├─────────────────────────────────────────────────────────────┤
    │                                                             │
    │ Meeting Platform                                            │
    │ [○ Zoom (Auto-generate) ○ Manual Link]                     │
    │                                                             │
    │ If Zoom Auto-generate:                                      │
    │ Meeting will be created automatically when event is saved.  │
    │                                                             │
    │ If Manual:                                                  │
    │ Meeting Link                                                │
    │ [https://zoom.us/j/...                           ]         │
    │                                                             │
    │ Access Password (optional)                                  │
    │ [________]                                                  │
    │                                                             │
    │ Join Instructions                                           │
    │ [________________________________________________]         │
    │                                                             │
    └─────────────────────────────────────────────────────────────┘
    ```
  </Step>

  <Step title="Ticket Configuration">
    Set up ticket types:

    ```
    ┌─────────────────────────────────────────────────────────────┐
    │ Tickets                                                     │
    ├─────────────────────────────────────────────────────────────┤
    │                                                             │
    │ ☐ Free Event (no tickets required)                          │
    │                                                             │
    │ Ticket Types:                                               │
    │ ┌─────────────────────────────────────────────────────────┐ │
    │ │ Name: [Member Ticket        ]                           │ │
    │ │ Price: [$99.00  ] Quantity: [100    ]                   │ │
    │ │ Description: [Standard member admission     ]           │ │
    │ │ Available: [Start Date    ] to [End Date    ]           │ │
    │ │ [🗑️ Remove]                                              │ │
    │ └─────────────────────────────────────────────────────────┘ │
    │                                                             │
    │ ┌─────────────────────────────────────────────────────────┐ │
    │ │ Name: [Non-Member Ticket    ]                           │ │
    │ │ Price: [$149.00 ] Quantity: [50     ]                   │ │
    │ │ Description: [Non-member admission          ]           │ │
    │ │ [🗑️ Remove]                                              │ │
    │ └─────────────────────────────────────────────────────────┘ │
    │                                                             │
    │ [+ Add Ticket Type]                                         │
    │                                                             │
    │ Early Bird Settings:                                        │
    │ ☐ Enable early bird pricing                                 │
    │ Discount: [20  ]% until [Date        ]                     │
    │                                                             │
    └─────────────────────────────────────────────────────────────┘
    ```
  </Step>

  <Step title="Add Speakers">
    Add event speakers:

    | Field           | Required    |
    | --------------- | ----------- |
    | Name            | Yes         |
    | Title/Role      | Yes         |
    | Company         | No          |
    | Bio             | Yes         |
    | Photo           | Recommended |
    | Is Main Speaker | Toggle      |

    **Options:**

    * Add new speaker
    * Select from speaker library
    * Import from LinkedIn
  </Step>

  <Step title="CPD Configuration">
    Set CPD points:

    ```
    ┌─────────────────────────────────────────────────────────────┐
    │ CPD Points                                                  │
    ├─────────────────────────────────────────────────────────────┤
    │                                                             │
    │ ☑ Award CPD points for attendance                           │
    │                                                             │
    │ CPD Category: [Professional Development ▼]                  │
    │ Points: [6      ]                                           │
    │                                                             │
    │ ☐ Auto-award on check-in                                    │
    │ ☐ Require minimum attendance (online)                       │
    │   Minimum: [80  ]% of event duration                        │
    │                                                             │
    └─────────────────────────────────────────────────────────────┘
    ```
  </Step>

  <Step title="Visibility and Publishing">
    Set event visibility:

    | Setting      | Description                |
    | ------------ | -------------------------- |
    | Public       | Visible to all, searchable |
    | Members Only | Requires login             |
    | Draft        | Not visible                |
    | Private      | Invite only                |

    **Publishing Options:**

    * Publish immediately
    * Schedule publishing date/time
    * Save as draft
  </Step>

  <Step title="Review and Create">
    Review all settings and create event.

    On creation:

    * Event record saved
    * Zoom meeting created (if enabled)
    * Event indexed for search
    * Notifications sent (if configured)
  </Step>
</Steps>

## Related Entities

* [`Event`](/entities/core/event)
* [`Event Ticket`](/entities/core/event-ticket)
* [`CPD Category`](/entities/core/cpd-category)

## Related Journeys

* [UJ-C-013](/client/journeys/configure-tickets)
* [UJ-C-014](/client/journeys/assign-sponsors)
* [UJ-C-017](/client/journeys/clone-event)

## Acceptance Criteria

### Frontend

* [ ] Multi-step event creation wizard
* [ ] Rich text editor for description
* [ ] Image upload with preview
* [ ] Date/time pickers with timezone
* [ ] Location configuration (live/online)
* [ ] Ticket type management
* [ ] Speaker management
* [ ] CPD configuration
* [ ] Visibility/publishing options
* [ ] Draft saving

### Backend

* [ ] `POST /api/events` - Create event
* [ ] `POST /api/events/{id}/tickets` - Add tickets
* [ ] `POST /api/events/{id}/speakers` - Add speakers
* [ ] Zoom integration for online events
* [ ] Event validation

### Permissions

* [ ] ROLE\_CLIENT\_ADMIN can create events

### Business Rules

* [ ] End date after start date
* [ ] At least one ticket type (or free)
* [ ] Zoom meeting created on publish
* [ ] CPD rules validated

### Error Handling

* [ ] Validation errors displayed
* [ ] Zoom creation failure handling
* [ ] Image upload errors
