Contacts
Contacts & events
Stable IDs, ingest, and how Data reviews what you synced.
Everything downstream — audiences, journeys, campaigns, Insights — sits on people and the things they did. Get identity right early. Fixing duplicates later means untangling every segment that used them.
Identity
- `externalId` — your primary user id. Required for reliable upsert
and event linking.
- `email` — delivery address; people change it.
- `locale` — which email variant to send (
en/de).
Where data comes from
| Source | Use when |
|---|---|
| Audryo API | Your backend can send a Bearer token. Canonical schema. Recommended. |
| Inbound webhook | HMAC-only vendor or a payload that needs field mapping. |
| CSV | One-time backfill. Import. |
| Stripe / Zapier | Billing or no-code automation. Same ingest underneath. |
You do not create a webhook to use event_ingestion.
Send events
POST /v1/projects/{projectId}/event_ingestion — up to 500 events, write scope. Full contract: Events API.
curl -X POST "$AUDRYO_API_BASE/projects/$PROJECT_ID/event_ingestion" \
-H "Authorization: Bearer $AUDRYO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"events": [{
"externalId": "evt_123",
"contactExternalId": "user_42",
"name": "book_created",
"occurredAt": "2026-08-29T10:00:00Z",
"properties": { "bookId": "book_7" }
}]
}'Contacts: POST /v1/projects/{projectId}/contact_ingestion (up to 5,000). Contacts API.
Event properties on an event-triggered Journey enrollment become {{ data.* }} in that run’s emails.
Reviewing Data
Data shows fields and events with coverage, samples, and proposed/confirmed status. Details: Properties, events, and tags.
Data → Contacts: search, open a person for timeline, profile, messages received, consent history.
Consent is not a property
Do not send subscribed: true and expect marketing mail to go out. Use the consent ledger.