Overview
The Event Ingestion API accepts structured events from the AppDNA SDKs. Events are batched on the client, sent to the ingestion endpoint, and processed through the analytics pipeline for querying and dashboards.Endpoints
Ingest Events
x-api-key header)
Accepts a batch of events from the SDK. Each event follows the envelope schema defined below.
Request body:
A batch of 1 to 500 events under the batch key:
HTTP 202 Accepted
errors array is included when one or more events are rejected.
PII in properties: an event whose top-level properties has a PII-shaped key or an e-mail- or phone-shaped string value is rejected (listed in errors). A key is PII-shaped when it names an e-mail, a phone or mobile number, a first, last or full name, an address, street, zip or postal code, a password, secret, API key or token, a social security number, a card number, CVV or IBAN, or a date of birth (for example email, user_phone, first_name, push_token); a plain name key is not. An all-digit value under an id- or time-shaped key (for example transaction_id, purchased_at_ms) is not treated as a phone number. Inside nested maps and arrays, at any depth, such keys, values and array elements are removed instead and the rest of the event is accepted.
Identify User
x-api-key header)
Links an anonymous device to a known user ID. Call this when the user logs in or creates an account.
Request body:
anon_id, user_id, and ts_ms (Unix timestamp in milliseconds) are required. traits is an optional object of user attributes. privacy is optional:
- Without
privacy(absent,nullor{}): the user profile, theuser.identifiedwebhook, journeys and e-mail triggers still run, but nothing reaches analytics. privacy.consent.analytics: trueis required for analytics and identity-graph linking. PII-shaped traits (the same keys and values as for event properties above — e-mail, phone, first or last name, …; a plainnametrait is not one) are kept on the user profile and in your webhook, but removed from the analytics copy.- An explicit
privacy.consent.analytics: falseruns only the user profile and the webhook.
202 in every consent state.
Health Check
Event Envelope Schema
Every event sent to the ingestion API must conform to theEventSchema envelope:
Field Reference
Auto-Tracked Events
The AppDNA SDKs automatically track the following events without any additional code. These events are fired across all four SDKs (iOS, Android, Flutter, React Native):Session Events
Push Notification Events
Purchase Events
Onboarding Events
Paywall and Experiment Events
Other Events
Batching Behavior
The SDK batches events on the client to minimize network overhead:Events are also flushed when the app goes to the background or returns to the foreground. Queued events are kept on disk until they are sent or dropped; see When Events Are Dropped.
Webhook Triggers
Certain ingestion events automatically trigger webhooks if configured on your account:Webhook delivery is asynchronous and does not affect ingestion latency. See the Webhooks documentation for payload format and retry policy.

