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.
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.
<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>.parquetPostbacks, 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

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

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.
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);
}The same reports as the dashboard
Common query: from, to (in the app timezone), platform, media_source, campaign, country, format=json|csv|parquet.
| Endpoint | Returns |
|---|---|
/reports/aggregate | Any metrics grouped by any dimensions; JSON, CSV or Parquet |
/reports/cohort | Retention, revenue or events by install cohort (day 0, 1, 3, 7, 14, 30…) |
/reports/owned-channels | Clicks, installs, deep-link opens, events, revenue and DDL rate by source × channel |
/reports/skan | Postbacks by fidelity, null rate, decoded events, revenue range |
/reports/fraud | Rejected and flagged installs, excluded clicks, purchase validation |
/reports/web-to-app | Web visitors, banner and link clicks, installs from web, stitched users |
/reports/ddl | Deferred-deep-link delivery rate by platform and environment |
/raw/{installs|events|clicks|skan_postbacks} | Pull API for up to 7 days of raw rows |
Parquet straight from the API
API keys are least-privilege: admin, read (GET only) or s2s (only the S2S events API).
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.parquetIs 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.
More of the platform
- AttributionInstalls and revenue credited to the right touchpoint.
- Deep linkingShort links, QR and deferred deep links that survive in-app browsers.
- Web-to-appSmart banners and a smart script that carry ad clicks into the app.
- iOS privacySKAdNetwork 4, AdAttributionKit and ATT, measured honestly.
- Fraud protectionSigned SDK traffic and public reason codes. Included.
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.