# Custom events

Send things that happen in your own app (a sign-up, a purchase, a login) and see them in Hubzone.

Define an event under Data management > Event management: a name and typed properties (text, number, yes/no, date). Each event has its own key, shown once. Your system sends every occurrence to that key with the e-mail address of the person. The occurrence is tied to the contact with that address and shows up on the Occurrences and Analyze tabs.

```bash
curl -X POST https://hubzone.app/api/public/events/hze_your_event_key \
  -H "content-type: application/json" \
  -d '{"email":"person@example.com","properties":{"plan":"pro","seats":5},"occurredAt":"2026-11-10T09:30:00Z"}'
```

```json
{ "id": "1b7e0c52-6f0e-4c7a-9a43-2d5e9d1f0a77", "linkedToContact": true }
```

| Field | Meaning |
| --- | --- |
| email | Required. The person; matched to the contact with this address (case does not matter). |
| properties | Optional. Only the properties you defined, each of its type. |
| occurredAt | Optional. When it happened, within the last 90 days; the default is now. |

- The key is the only credential: keep it on your server. A new key can be made at any time (the old one stops working at once).
- An address with no contact is still stored (linkedToContact: false).
- Up to 600 calls a minute per address.
