Skip to content

Export Analytics Data

⏱ 25 minutes intermediate
📜CoreAnalytics

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.

  1. Choose an export method based on your use case
  2. Set up API access for programmatic data extraction
  3. Connect a BI tool for visual reporting
  4. Configure data warehouse sync for enterprise analytics
MethodBest forUpdate frequencyTechnical effort
CSV exportAd-hoc analysis, sharing with non-technical stakeholdersManual (on demand)None
Analytics APICustom dashboards, automated reporting, application integrationReal-time or scheduledMedium
BI tool connectorTableau, Looker, Power BI dashboardsScheduled (hourly/daily)Low
Data warehouse syncCross-system analysis, ML pipelines, enterprise BIScheduled (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.

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.

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.

API requests require an API token. Generate one in Optimizely One > Settings > API Access.

Authenticate with the Analytics API
bash
curl -H 'Authorization: Bearer YOUR_API_TOKEN' \
  'https://api.optimizely.com/analytics/v1/metrics'
javascript
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();

Request specific metrics for a date range, with optional dimensional breakdowns and filters.

Query page views by traffic source
bash
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'

Retrieve experiment results including conversion rates, statistical significance, and variation performance.

Get experiment results
bash
curl -H 'Authorization: Bearer YOUR_API_TOKEN' \
  'https://api.optimizely.com/analytics/v1/experiments/EXP_ID/results'
python
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%}")

The API enforces rate limits to protect system stability:

  • 100 requests per minute per API token
  • Maximum 10,000 rows per query response
  • Use offset and limit parameters 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.

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.

ToolConnector typeSetup
TableauNative connectorInstall the Optimizely connector from Tableau Exchange, enter API credentials
LookerLookML blockImport the Optimizely LookML block, configure database connection
Power BICustom connectorDownload the Optimizely Power BI connector, authenticate with API token
Google Data StudioCommunity connectorAdd via the Data Studio connector gallery
  1. Open Tableau Desktop and select Connect > More > Web Data Connector
  2. Search for “Optimizely” in the connector marketplace
  3. Enter your Optimizely API token when prompted
  4. Select the datasets you want to import (web analytics, experiment results, commerce data)
  5. Choose the refresh schedule (live connection or extract with scheduled refresh)
  6. Build dashboards using the imported data
  • 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.

For enterprise analytics, sync Optimizely data directly to your data warehouse. This enables cross-system joins, historical analysis, and integration with ML pipelines.

WarehouseSync method
SnowflakeOptimizely-managed data share or ETL pipeline
BigQueryScheduled export via API or Optimizely connector
Amazon RedshiftETL pipeline using API extraction
Azure SynapseETL pipeline using API extraction

The general process for setting up a warehouse sync:

  1. Create a destination — Set up a database and schema in your warehouse to receive Optimizely data
  2. Configure credentials — In Optimizely, navigate to Settings > Data Export and enter your warehouse connection details
  3. Select data tables — Choose which datasets to sync:
    • analytics_events — Raw event data (page views, clicks, conversions)
    • experiment_results — Aggregated experiment metrics by variation
    • visitor_sessions — Session-level data with traffic source attribution
    • commerce_transactions — Purchase events with product and revenue data
  4. Set sync frequency — Choose how often data is refreshed (hourly, every 6 hours, or daily)
  5. Test the connection — Run a test sync to verify data flows correctly and schema mapping is accurate

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.
IssueCauseResolution
API returns 401 UnauthorizedInvalid or expired tokenGenerate a new token in Settings > API Access
API returns 429 Too Many RequestsRate limit exceededImplement backoff logic, reduce request frequency
BI connector shows stale dataExtract refresh failedCheck connector logs, verify API token is still valid
Warehouse sync missing recent dataSync job delayed or failedCheck sync status in Settings > Data Export, re-trigger manually
Data volume is unexpectedly largeRaw event export on high-traffic siteSwitch to aggregated exports or filter to specific event types