Skip to main content

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

Authentication: SDK Key (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:
Response: HTTP 202 Accepted
An 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

Authentication: SDK Key (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, null or {}): the user profile, the user.identified webhook, journeys and e-mail triggers still run, but nothing reaches analytics.
  • privacy.consent.analytics: true is 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 plain name trait is not one) are kept on the user profile and in your webhook, but removed from the analytics copy.
  • An explicit privacy.consent.analytics: false runs only the user profile and the webhook.
The response is 202 in every consent state.

Health Check

Authentication: None (public) Returns the health status of the ingestion service.

Event Envelope Schema

Every event sent to the ingestion API must conform to the EventSchema envelope:

Field Reference

Events where privacy.consent.analytics is false are accepted but not processed into analytics pipelines. They are retained only for audit purposes.

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.