Export Analytics Data
Why export analytics data
Section titled “Why export analytics data”Optimizely Analytics provides dashboards and reports inside the platform, but many organizations need analytics data outside of Optimizely. Leadership reviews performance in Tableau. Data science teams build models in Python notebooks. Engineering teams feed metrics into internal monitoring dashboards. Finance teams correlate experiment results with revenue data in their ERP system.
Exporting data lets you use Optimizely’s measurement capabilities while keeping your existing reporting infrastructure as the single pane of glass for business intelligence.
What you will do
Section titled “What you will do”- Choose an export method based on your use case
- Set up API access for programmatic data extraction
- Connect a BI tool for visual reporting
- Configure data warehouse sync for enterprise analytics
Choose your export method
Section titled “Choose your export method”| Method | Best for | Update frequency | Technical effort |
|---|---|---|---|
| CSV export | Ad-hoc analysis, sharing with non-technical stakeholders | Manual (on demand) | None |
| Analytics API | Custom dashboards, automated reporting, application integration | Real-time or scheduled | Medium |
| BI tool connector | Tableau, Looker, Power BI dashboards | Scheduled (hourly/daily) | Low |
| Data warehouse sync | Cross-system analysis, ML pipelines, enterprise BI | Scheduled (configurable) | High |
Start with the simplest method that meets your needs. CSV export requires no setup. API access requires credentials and code. Data warehouse sync requires infrastructure coordination.
CSV export
Section titled “CSV export”The quickest way to get data out. Open any report or dashboard in Optimizely Analytics, select the export icon, and download a CSV file.
Limitations:
- Manual process — no automation
- Exports the current view only (date range, filters, dimensions you have selected)
- Not suitable for large datasets or recurring needs
Use CSV export for one-time analyses or when sharing a specific data snapshot with someone who does not have Optimizely access.
API export
Section titled “API export”The Analytics API provides programmatic access to metrics, dimensions, and experiment results. Use it to build automated reporting pipelines or integrate analytics data into custom applications.
Authentication
Section titled “Authentication”API requests require an API token. Generate one in Optimizely One > Settings > API Access.
curl -H 'Authorization: Bearer YOUR_API_TOKEN' \
'https://api.optimizely.com/analytics/v1/metrics' const response = await fetch(
'https://api.optimizely.com/analytics/v1/metrics',
{
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
}
);
const data = await response.json(); Query metrics
Section titled “Query metrics”Request specific metrics for a date range, with optional dimensional breakdowns and filters.
curl -X POST \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"metrics": ["page_views", "sessions", "conversion_rate"],
"dimensions": ["traffic_source"],
"date_range": {
"start": "2026-03-01",
"end": "2026-03-24"
},
"filters": {
"device": ["mobile", "desktop"]
}
}' \
'https://api.optimizely.com/analytics/v1/query' Query experiment results
Section titled “Query experiment results”Retrieve experiment results including conversion rates, statistical significance, and variation performance.
curl -H 'Authorization: Bearer YOUR_API_TOKEN' \
'https://api.optimizely.com/analytics/v1/experiments/EXP_ID/results' import requests
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN'
}
response = requests.get(
'https://api.optimizely.com/analytics/v1/experiments/EXP_ID/results',
headers=headers
)
results = response.json()
for variation in results['variations']:
print(f"{variation['name']}: {variation['conversion_rate']:.2%}") Rate limits and pagination
Section titled “Rate limits and pagination”The API enforces rate limits to protect system stability:
- 100 requests per minute per API token
- Maximum 10,000 rows per query response
- Use
offsetandlimitparameters for pagination when results exceed 10,000 rows
For large data pulls, use pagination to retrieve data in batches rather than requesting everything at once.
BI tool integration
Section titled “BI tool integration”Optimizely provides connectors for popular BI tools. These connectors handle authentication, data refresh, and schema mapping so you can build dashboards without writing API code.
Supported BI tools
Section titled “Supported BI tools”| Tool | Connector type | Setup |
|---|---|---|
| Tableau | Native connector | Install the Optimizely connector from Tableau Exchange, enter API credentials |
| Looker | LookML block | Import the Optimizely LookML block, configure database connection |
| Power BI | Custom connector | Download the Optimizely Power BI connector, authenticate with API token |
| Google Data Studio | Community connector | Add via the Data Studio connector gallery |
Connect Tableau (example)
Section titled “Connect Tableau (example)”- Open Tableau Desktop and select Connect > More > Web Data Connector
- Search for “Optimizely” in the connector marketplace
- Enter your Optimizely API token when prompted
- Select the datasets you want to import (web analytics, experiment results, commerce data)
- Choose the refresh schedule (live connection or extract with scheduled refresh)
- Build dashboards using the imported data
Best practices for BI integration
Section titled “Best practices for BI integration”- Use extracts, not live connections — Live connections query the API on every dashboard interaction, which is slow and consumes rate limits. Schedule extract refreshes instead.
- Start with pre-built templates — Most connectors include starter dashboards. Customize them rather than building from scratch.
- Align date granularity — If your BI dashboard uses weekly data, configure the connector to aggregate at the weekly level to reduce data volume.
Data warehouse sync
Section titled “Data warehouse sync”For enterprise analytics, sync Optimizely data directly to your data warehouse. This enables cross-system joins, historical analysis, and integration with ML pipelines.
Supported warehouses
Section titled “Supported warehouses”| Warehouse | Sync method |
|---|---|
| Snowflake | Optimizely-managed data share or ETL pipeline |
| BigQuery | Scheduled export via API or Optimizely connector |
| Amazon Redshift | ETL pipeline using API extraction |
| Azure Synapse | ETL pipeline using API extraction |
Configure a warehouse sync
Section titled “Configure a warehouse sync”The general process for setting up a warehouse sync:
- Create a destination — Set up a database and schema in your warehouse to receive Optimizely data
- Configure credentials — In Optimizely, navigate to Settings > Data Export and enter your warehouse connection details
- Select data tables — Choose which datasets to sync:
analytics_events— Raw event data (page views, clicks, conversions)experiment_results— Aggregated experiment metrics by variationvisitor_sessions— Session-level data with traffic source attributioncommerce_transactions— Purchase events with product and revenue data
- Set sync frequency — Choose how often data is refreshed (hourly, every 6 hours, or daily)
- Test the connection — Run a test sync to verify data flows correctly and schema mapping is accurate
Data schema considerations
Section titled “Data schema considerations”When synced data arrives in your warehouse, consider how it will join with existing tables:
- Visitor identity — Optimizely uses cookie-based visitor IDs. If you need to join with authenticated user data, pass a user ID with analytics events so it appears in the exported data.
- Event timestamps — All timestamps are in UTC. Convert to your local timezone in your warehouse queries or BI layer.
- Data volume — High-traffic sites can generate millions of events per day. Plan your warehouse storage and query costs accordingly.
- Historical backfill — Initial sync includes historical data based on your Optimizely retention period. Subsequent syncs are incremental.
Troubleshooting
Section titled “Troubleshooting”| Issue | Cause | Resolution |
|---|---|---|
| API returns 401 Unauthorized | Invalid or expired token | Generate a new token in Settings > API Access |
| API returns 429 Too Many Requests | Rate limit exceeded | Implement backoff logic, reduce request frequency |
| BI connector shows stale data | Extract refresh failed | Check connector logs, verify API token is still valid |
| Warehouse sync missing recent data | Sync job delayed or failed | Check sync status in Settings > Data Export, re-trigger manually |
| Data volume is unexpectedly large | Raw event export on high-traffic site | Switch to aggregated exports or filter to specific event types |