---
title: Creating events
description: Send events to Project-scoped Channels with metadata and attribution.
sidebar:
  order: 2
---

`client.events.create()` takes a Channel name and a title, with an optional
description, icon, tags, source, user attribution, `notify` flag, and JSON
metadata.

```typescript
await client.events.create({
  channelName: 'signups',
  title: 'New user signed up',
  userId: 'user_123',
  tags: ['signup'],
  metadata: { plan: 'free', source: 'organic' },
});
```

Channel names are [normalized](/concepts/events) and unique within the
Project bound to the API key. The Channel is created on first use.

`userId` can be your canonical user ID or one of its aliases; EmitKit resolves
an alias when it records the event. `notify` (default `true`) sends a
[push notification](/concepts/notifications). A stored event is limited to
16 KB across its fields.

For the complete schema, see the
[Create Event reference](/reference/events/create-event).
