Raw data & APIs

Raw data you own, delivered every hour

Installs, events, clicks and SKAN postbacks land in your own bucket or warehouse as typed Parquet — written straight from our database. Plus real-time webhooks, partner postbacks and APIs for everything else.

Raw data & APIs: what’s included

  • Hourly Parquet exports

    Typed files for installs, events, clicks and SKAN postbacks, partitioned by date and hour.

  • Your warehouse

    Amazon S3 (and S3-compatible storage), Google Cloud Storage, BigQuery or Snowflake.

  • Real-time webhooks

    Installs, re-attributions, sessions, events, purchases and deep-link opens — signed and retried.

  • Partner postbacks

    URL templates with macros and event mapping, retried with backoff and logged per attempt.

  • Reporting API

    Aggregate, cohort, owned-channel, SKAN, fraud, web-to-app and deferred-deep-link reports in JSON, CSV or Parquet.

  • Delivery you can see

    Each export shows its lag and the share of hours delivered on time over the last 7 days.

File layout

Predictable paths, typed schemas

Files are written hourly by ingest time. Delivery is at-least-once: de-duplicate on event_id or click_id. BigQuery loads stage through GCS; Snowflake loads stage through S3 and run COPY INTO.

Export layoutText
<prefix><table>/dt=YYYY-MM-DD/hour=HH/<app_id>-<run id>.parquet

s3://northwind-raw/appvero/installs/dt=2026-10-10/hour=09/app_7f3k9q2m-<run id>.parquet
s3://northwind-raw/appvero/events/dt=2026-10-10/hour=09/app_7f3k9q2m-<run id>.parquet
s3://northwind-raw/appvero/clicks/dt=2026-10-10/hour=09/app_7f3k9q2m-<run id>.parquet
s3://northwind-raw/appvero/skan_postbacks/dt=2026-10-10/hour=09/app_7f3k9q2m-<run id>.parquet
Integrations

Postbacks, webhooks and exports in one place

Configure partner postbacks with macros like {partner_click_id}, {gaid} and {revenue}, see a preview with sample values, and map your events to the partner’s names. Webhooks and exports live next door, each with a delivery log.

  • Retries with exponential backoff for up to 24 hours
  • Per-partner rate limits
  • Query values redacted in delivery logs
AppVero partner postback editor: install postback URL template with highlighted macros and a sample preview.
Exports

Point it at your bucket. Rows arrive every hour.

Pick Amazon S3 (or S3-compatible storage), Google Cloud Storage, BigQuery or Snowflake, choose the tables, and add credentials that can write to one prefix. Each destination reports its lag and on-time delivery.

  • Tables: installs, events, clicks, skan_postbacks
  • Write-only credentials, encrypted at rest
  • Manual re-runs for any hour
AppVero “Add export destination” dialog with Google Cloud Storage selected: table selection, bucket and prefix, and the resulting file layout.
Webhooks

Verify every delivery

Each webhook is a JSON POST with X-AV-Webhook-Signature: t=<unix s>,v1=<hex HMAC-SHA256(secret, t + "." + body)> and an X-AV-Event-Id header.

verify.tsTypeScript
import { createHmac, timingSafeEqual } from "node:crypto";

// Header: X-AV-Webhook-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256(secret, t + "." + body)>
export function verifyAppVeroWebhook(rawBody: string, header: string, secret: string) {
  const parts = Object.fromEntries(header.split(",").map((kv) => kv.split("=") as [string, string]));
  const expected = createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
  const fresh = Math.abs(Date.now() / 1000 - Number(parts.t)) < 300;
  const a = Buffer.from(expected), b = Buffer.from(parts.v1 ?? "");
  return fresh && a.length === b.length && timingSafeEqual(a, b);
}
Reporting API

The same reports as the dashboard

Common query: from, to (in the app timezone), platform, media_source, campaign, country, format=json|csv|parquet.

EndpointReturns
/reports/aggregateAny metrics grouped by any dimensions; JSON, CSV or Parquet
/reports/cohortRetention, revenue or events by install cohort (day 0, 1, 3, 7, 14, 30…)
/reports/owned-channelsClicks, installs, deep-link opens, events, revenue and DDL rate by source × channel
/reports/skanPostbacks by fidelity, null rate, decoded events, revenue range
/reports/fraudRejected and flagged installs, excluded clicks, purchase validation
/reports/web-to-appWeb visitors, banner and link clicks, installs from web, stitched users
/reports/ddlDeferred-deep-link delivery rate by platform and environment
/raw/{installs|events|clicks|skan_postbacks}Pull API for up to 7 days of raw rows
Example

Parquet straight from the API

API keys are least-privilege: admin, read (GET only) or s2s (only the S2S events API).

Aggregate reportShell
curl "https://api.appvero.ai/v1/apps/app_7f3k9q2m/reports/aggregate?\
from=2026-10-01&to=2026-10-07&group_by=media_source,campaign&\
metrics=installs,non_organic_installs,revenue,validated_revenue&format=parquet" \
  -H "Authorization: Bearer avk_<id>_<secret>" -o installs.parquet
Questions

Raw data & APIs, answered

Something else? [email protected]

Is raw data included in my plan?

Hourly raw-data exports and webhooks are included on every paid plan.

Do exports pass through AppVero’s application servers?

No. Files are written straight from the analytics database to the storage you choose.

See your own data in AppVero

Bring a campaign, a link or an app build. We’ll walk through attribution, deep links and raw data with your team, on data that looks like yours.