For AI agents: a documentation index is available at /llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.
Data Warehouse Exports
Export Statsig events, exposures, and metric data into your cloud data warehouse on a schedule for downstream BI, modeling, and custom analysis.
How data warehouse exports work
You can export your data from Statsig to your data warehouse using a data connection. The data connection lets you send exposures and events directly to your warehouse for further analysis. Statsig supports connections to Snowflake, Redshift, S3, BigQuery, and Databricks.
Data Warehouse Exports are an Enterprise-only feature. If you're on the Developer or Pro tiers and want to upgrade to Enterprise, contact the Statsig team or Statsig support.
Set up a data warehouse export
- Go to Statsig Console.
- Navigate to the Help and Tools Section on the side navigation bar.
- Go to "Exports List".

On the Exports page, you find an Export History tab and a Scheduled tab. The Export History tab lists all previous experimentation exports triggered from the Experiment Results page. To export one-off experimentation results, refer to Experiment Result Exports.
Under the Scheduled tab, set up a data warehouse connection. Configure the connection with the necessary credentials and grant Statsig Read, Write, and Delete permissions. The warehouse-specific tabs below show the fields Statsig requires and example SQL you can use to create each export table yourself.

Export table schema
Statsig can export both Exposures and Events to your destination. The exported columns are logically the same across SQL warehouses, but the physical types vary by warehouse. S3 is a file destination rather than a SQL table destination.
Setup summary
Configure:
- BigQuery Project ID
- BigQuery Dataset ID
- one destination table name per export type
Permissions:
- Grant the Statsig service account
BigQuery Userat the project level. - Grant the same service account
BigQuery Data Editoron the target dataset.
Statsig uses this access to create the table if needed and validate the connection by inserting and deleting a test row.
If you prefer to create the export tables yourself, you can use SQL like this:
CREATE TABLE IF NOT EXISTS `PROJECT_ID.DATASET_ID.EXPOSURES_TABLE` (
company_id STRING,
unit_id STRING,
unit_type STRING,
exposure_type STRING,
name STRING,
rule STRING,
experiment_group STRING,
first_exposure_utc TIMESTAMP,
first_exposure_pst_date DATE,
as_of_pst_date DATE,
percent FLOAT64,
rollout BIGINT,
user_dimensions STRING,
inserted_at TIMESTAMP,
rule_name STRING,
group_id STRING,
non_analytics BOOLEAN
);
CREATE TABLE IF NOT EXISTS `PROJECT_ID.DATASET_ID.EVENTS_TABLE` (
user_id STRING,
stable_id STRING,
custom_ids JSON,
timestamp TIMESTAMP,
event_name STRING,
event_value STRING,
user_object JSON,
statsig_metadata JSON,
company_metadata JSON
);
Exposures
By default, Statsig doesn't export exposures from rules that are 0%/100%. See Why a day is missing for the exception.
| Field name | Type | Mode |
|---|---|---|
| company_id | STRING | NULLABLE |
| unit_id | STRING | NULLABLE |
| unit_type | STRING | NULLABLE |
| exposure_type | STRING | NULLABLE |
| name | STRING | NULLABLE |
| rule | STRING | NULLABLE |
| experiment_group | STRING | NULLABLE |
| first_exposure_utc | TIMESTAMP | NULLABLE |
| first_exposure_pst_date | DATE | NULLABLE |
| as_of_pst_date | DATE | NULLABLE |
| percent | FLOAT64 | NULLABLE |
| rollout | BIGINT | NULLABLE |
| user_dimensions | STRING | NULLABLE |
| inserted_at | TIMESTAMP | NULLABLE |
| rule_name | STRING | NULLABLE |
| group_id | STRING | NULLABLE |
| non_analytics | BOOLEAN | NULLABLE |
Events
| Field name | Type | Mode |
|---|---|---|
| user_id | STRING | NULLABLE |
| stable_id | STRING | NULLABLE |
| custom_ids | JSON | NULLABLE |
| timestamp | TIMESTAMP | NULLABLE |
| event_name | STRING | NULLABLE |
| event_value | STRING | NULLABLE |
| user_object | JSON | NULLABLE |
| statsig_metadata | JSON | NULLABLE |
| company_metadata | JSON | NULLABLE |
Monitor your export status
Statsig reports warehouse export status through notifications, the Statsig Console, the Console API, and Statsig MCP. Use notifications for failures. Use the Console, the API, or MCP when you need to check a specific export run.
Export notifications
By default, a failed export sends an in-app bell notification and an email to members with the Admin role and the member who configured the integration. If the integration has an explicit subscriber list, Statsig notifies those subscribers instead. Statsig doesn't resend a notification for the same failure on the same day.
Each recipient can turn export failure emails off or back on under Settings > My Account > Notifications > Email Notifications. Click Edit, then use Alerts ("Import, export, and health check failures"). This setting is per user. Turning Alerts off doesn't stop in-app notifications.
Successful exports don't send notifications by default. Contact Statsig support to enable success notifications for your project.
Check export status in the Statsig Console
For scheduled data warehouse exports, go to Help and Tools > Exports List > Scheduled and find the connection card. The Exposures and Events charts show recent export runs.
For Warehouse Native forwarded data, go to Settings > Data Connection > Export. Use the Export Exposures History and Export Events History charts.
Rows insertedorFile createdindicates a successful export.ErrororInternal server errorindicates a failed export.- Hover over a day to view the latest run's status, row count, and report time for that day. For a failed export, the tooltip also shows the failure reason.
Check export status with the Console API
Send a GET request to /console/v1/exports/status with a Console API key. startDate and endDate are required (YYYY-MM-DD, UTC, inclusive). The range can be at most 90 days. dataset is optional: exposures, events, or omit it to return both. status is optional: success or failed. page and limit page the results. limit can be at most 100. Statsig returns the newest rows first. Without limit, a page holds your project's default page size, usually 100.
An invalid date, a start date after the end date, or a range longer than 90 days returns HTTP 400. A missing or invalid Console API key returns HTTP 401. A range with no matching rows returns HTTP 200 and an empty data array.
status is success or failed. status_code is the underlying code, such as ROWS_INSERTED, FILE_CREATED, ERROR, EXPORT_ERROR, or INTERNAL_SERVER_ERROR. message is a human-readable description of the run. It can be one or more sentences or null, and for a failure it may include the reported warehouse error. rows_exported is present when Statsig recorded a row count.
The older GET /console/v1/ingestion/status endpoint still works with dataset=export_exposures or dataset=export_events. Prefer /console/v1/exports/status.
curl --get 'https://statsigapi.net/console/v1/exports/status' \
--header 'STATSIG-API-KEY: console-example-key' \
--data-urlencode 'startDate=2026-09-17' \
--data-urlencode 'endDate=2026-09-30' \
--data-urlencode 'dataset=exposures' \
--data-urlencode 'status=failed'
{
"message": "Export statuses listed successfully.",
"data": [
{
"date": "2026-09-21",
"dataset": "exposures",
"destination": { "type": "bigquery" },
"status": "failed",
"status_code": "ERROR",
"message": "Your BigQuery export_exposures export for 2026-09-21 failed. Missing GET permission on table my_project:my_dataset.exposures",
"reported_at": "2026-09-22T09:14:22.000Z"
}
],
"pagination": {
"itemsPerPage": 100,
"pageNumber": 1,
"totalItems": 1,
"nextPage": null,
"previousPage": null
}
}
Ask about export status with Statsig MCP
Statsig MCP lets an AI assistant read export status for projects the connected account can access. Set it up in Claude, ChatGPT, or Codex.
Paste a prompt like one of these:
- I think our export failed sometime in the last two weeks. Can you check the reason?
- Did yesterday's exposures export succeed?
- Why did my events export fail on 2026-09-21?
- Which days in the last two weeks have no successful export?
A typical answer names the dates, the dataset, and the warehouse error. For example: event exports failed on two dates because the exporting identity has no GET access to my_project:my_dataset.events, and exposure exports failed on two dates for my_project:my_dataset.exposures. A later exposure export for one date succeeded and wrote 120 rows. Check that identity's table access and the destination row counts before you ask Statsig to replay those days.
The export-status operation in Statsig MCP is read-only. It reports status and may include the reported warehouse error, but it can't grant warehouse permissions or replay exports. Keep each question to a short date range. The API accepts up to 90 days.
If the message says access is missing, restore the identity's Read, Write, and Delete permissions, then contact Statsig support if you need a replay.
Why a day is missing
Statsig exports exposures daily. For scheduled data warehouse exports, events also export daily. For Warehouse Native forwarded data, events export hourly. A missing status alone can't tell you whether the job ran or whether data reached the destination. Check the destination for the expected rows, and contact Statsig support if you expected data but can't confirm a successful export.
By default, Statsig doesn't export exposures from feature gates with 0% or 100% rollout, and it never exports exposures from experiment variants with 0% or 100% traffic allocation. Support can enable exports for 0% and 100% feature gates.
Resolve common export failures
| Failure cause | What to do |
|---|---|
| Missing warehouse permissions | Restore the configured identity's Read, Write, and Delete permissions for the destination. |
| Destination table was dropped or renamed | Restore the table or update the export configuration to use the new table name. |
| Credentials were rotated or disabled | Update the data connection with active credentials. |
| Network policy blocks Statsig | Add the Statsig IP ranges to your allow list. |
| Warehouse has insufficient capacity | Resume the warehouse or increase its available compute capacity. |
If the export continues to fail after you check these causes, contact Statsig support.
Reliable exports matter, and so does knowing their status. If you need more visibility into your exposure or event exports than this page covers, contact Statsig Support or post in the Slack community. Statsig uses that feedback to keep improving export observability.
Was this helpful?