Skip to main content

Overview

Data export allows you to download all your project data in CSV or JSON format. Available exclusively on the Scale tier ($299/month).
Export Features:
  • CSV and JSON formats
  • Configurable date ranges
  • Select specific data types
  • Progress tracking
  • Secure download links

What Can You Export?

Metrics Data

Time series data from all connected integrations:
  • Metric ID and name
  • Values and units
  • Timestamps
  • Service source
  • Data quality indicators
  • Metadata

Integration Connections

Information about connected services:
  • Service name and type
  • Connection status
  • Last sync timestamp
  • Account information
  • Configuration settings
Security: Encrypted credentials (API keys, OAuth tokens) are never included in exports.

Dashboards

Dashboard configurations and layouts:
  • Dashboard names and types
  • Widget configurations
  • Layout positions
  • Visibility settings
  • Creation dates

Creating an Export

1

Navigate to Data Export

  1. Go to SettingsData Export
  2. Click Create Export
2

Configure Export

Select your export settings:Format:
  • JSON - Structured data with full metadata
  • CSV - Spreadsheet-compatible format
Date Range:
  • Last 7 days
  • Last 30 days
  • Last 90 days
  • Last year
  • All time
Data Types:
  • ☑️ Metrics data
  • ☑️ Integration connections
  • ☑️ Dashboards and widgets
3

Start Export

Click Create ExportThe export job will:
  1. Queue for processing
  2. Collect selected data
  3. Generate export file
  4. Provide download link
Estimated time: 2-5 minutes
4

Download File

When complete:
  1. Click Download button
  2. Save file to your computer
  3. Download link expires in 24 hours

Export Formats

JSON Format

Structured data with complete metadata:
{
  "exportedAt": 1678901234000,
  "dateRange": {
    "startDate": 1676309234000,
    "endDate": 1678901234000
  },
  "project": {
    "id": "j57abc123",
    "name": "My SaaS App",
    "slug": "my-saas-app",
    "createdAt": 1670000000000
  },
  "metrics": [
    {
      "id": "m_abc123",
      "metricId": "stripe_mrr",
      "metricName": "Monthly Recurring Revenue",
      "value": 15000,
      "unit": "USD",
      "timestamp": 1678901234000,
      "service": "stripe",
      "metadata": {
        "currency": "usd",
        "interval": "month"
      },
      "dataQuality": "synced",
      "createdAt": 1678901234000
    }
  ],
  "connections": [
    {
      "id": "conn_abc123",
      "service": "stripe",
      "serviceName": "Stripe",
      "category": "payment",
      "authType": "oauth",
      "status": "active",
      "accountInfo": {
        "accountId": "acct_123",
        "accountName": "My Company"
      },
      "lastSyncedAt": 1678901234000,
      "totalSyncsCompleted": 42,
      "createdAt": 1670000000000
    }
  ],
  "dashboards": [
    {
      "id": "dash_abc123",
      "name": "Revenue Dashboard",
      "slug": "revenue",
      "type": "custom",
      "category": "payment",
      "isDefault": false,
      "createdAt": 1670000000000,
      "updatedAt": 1678901234000,
      "widgets": [
        {
          "id": "widget_abc123",
          "type": "metric-card",
          "title": "MRR",
          "position": { "x": 0, "y": 0, "w": 4, "h": 2 },
          "visible": true,
          "config": {
            "metricId": "stripe_mrr",
            "aggregation": "latest"
          },
          "createdAt": 1670000000000
        }
      ]
    }
  ],
}
Best For:
  • Programmatic processing
  • Data analysis with Python/R
  • Importing into databases
  • Preserving complete metadata

CSV Format

Flattened data for spreadsheet applications:
Type,ID,Name,Value,Unit,Timestamp,Service,Status,Created At
Metric,m_abc123,Monthly Recurring Revenue,15000,USD,2024-03-15T10:30:00Z,stripe,,2024-03-15T10:30:00Z
Connection,conn_abc123,Stripe,,,,,active,2023-12-01T00:00:00Z
Dashboard,dash_abc123,Revenue Dashboard,5,widgets,,,custom,2023-12-01T00:00:00Z
Best For:
  • Excel or Google Sheets analysis
  • Quick data review
  • Simple reporting
  • Non-technical users

Export Limits

Concurrency

  • 1 export at a time per project
  • Wait for current export to complete before starting another

File Size

  • No size limit on exports
  • Large exports (100k+ records) may take longer

Retention

  • Download links expire in 24 hours
  • Export history retained for 30 days
  • Re-export if you need the data again

Rate Limits

  • No limit on number of exports
  • Recommended: Export weekly or monthly for backups

Use Cases

1. Data Backup

Regular backups of your project data:
# Weekly backup script
curl -X POST https://api.dashtray.com/api/v1/exports \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "format": "json",
    "dateRange": "all_time",
    "includeAll": true
  }'

2. Custom Analysis

Export for analysis in Python, R, or Excel:
import pandas as pd
import json

# Load JSON export
with open('dashtray-export.json') as f:
    data = json.load(f)

# Convert metrics to DataFrame
df = pd.DataFrame(data['metrics'])

# Analyze MRR growth
mrr_data = df[df['metricId'] == 'stripe_mrr']
mrr_growth = mrr_data['value'].pct_change()

3. Data Migration

Move data to another system:
  • Import into data warehouse
  • Load into BI tools
  • Migrate to another analytics platform

4. Compliance

Meet data retention requirements:
  • Export for regulatory compliance
  • Provide data to auditors
  • Maintain historical records

5. Reporting

Create custom reports:
  • Monthly board reports
  • Quarterly business reviews
  • Annual summaries

Automation

Using the API

Automate exports with the Dashtray API:
// Create export
const response = await fetch('https://api.dashtray.com/api/v1/exports', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    format: 'json',
    dateRange: {
      startDate: Date.now() - (30 * 24 * 60 * 60 * 1000), // 30 days ago
      endDate: Date.now()
    },
    includeMetrics: true,
    includeConnections: true,
    includeDashboards: true
  })
});

const { exportJobId } = await response.json();

// Poll for completion
const checkStatus = async () => {
  const status = await fetch(
    `https://api.dashtray.com/api/v1/exports/${exportJobId}`,
    {
      headers: { 'Authorization': `Bearer ${API_KEY}` }
    }
  );

  const data = await status.json();

  if (data.status === 'completed') {
    // Download file
    const file = await fetch(data.downloadUrl);
    // Save to disk
  } else if (data.status === 'failed') {
    console.error('Export failed:', data.error);
  } else {
    // Check again in 10 seconds
    setTimeout(checkStatus, 10000);
  }
};

checkStatus();

Scheduled Exports

Set up automated weekly/monthly exports:
#!/bin/bash
# cron job: 0 0 * * 0 (every Sunday at midnight)

API_KEY="your_api_key"
PROJECT_ID="your_project_id"

# Create export
EXPORT_ID=$(curl -X POST https://api.dashtray.com/api/v1/exports \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"format":"json","dateRange":"last_7_days"}' \
  | jq -r '.exportJobId')

# Wait for completion
while true; do
  STATUS=$(curl https://api.dashtray.com/api/v1/exports/$EXPORT_ID \
    -H "Authorization: Bearer $API_KEY" \
    | jq -r '.status')

  if [ "$STATUS" = "completed" ]; then
    # Download and save
    DOWNLOAD_URL=$(curl https://api.dashtray.com/api/v1/exports/$EXPORT_ID \
      -H "Authorization: Bearer $API_KEY" \
      | jq -r '.downloadUrl')

    curl -o "backup-$(date +%Y%m%d).json" "$DOWNLOAD_URL"
    break
  fi

  sleep 10
done

Security

Data Protection

  • Exports are encrypted in transit (HTTPS)
  • Download links are signed and time-limited
  • Only project members can create exports

Credential Exclusion

Sensitive data is never exported:
  • ❌ OAuth access tokens
  • ❌ OAuth refresh tokens
  • ❌ API keys
  • ❌ Webhook secrets
  • ❌ Encryption keys

Access Control

  • Only owners and editors can create exports
  • Viewers cannot export data

Troubleshooting

Export Failed

Problem: Export job shows “failed” status. Solutions:
  • Check error message for details
  • Reduce date range if exporting large dataset
  • Try again (temporary API issues)
  • Contact support if persists
Problem: Cannot download export file. Solution:
  • Create a new export
  • Download links expire after 24 hours
  • Save file immediately after export completes

Export Taking Too Long

Problem: Export stuck in “processing” status. Typical Times:
  • Small projects (< 10k records): 30-60 seconds
  • Medium projects (10k-100k records): 2-5 minutes
  • Large projects (> 100k records): 5-15 minutes
If longer:
  • Wait up to 30 minutes
  • Contact support if still processing

Cannot Create Export

Problem: “Another export is in progress” error. Solution:
  • Wait for current export to complete
  • Only 1 export allowed at a time per project
  • Cancel stuck exports via support

Best Practices

1. Regular Backups

Export data regularly:
  • Weekly for active projects
  • Monthly for stable projects
  • Before major changes

2. Verify Exports

Check export contents:
  • Open and review files
  • Verify data completeness
  • Test import into target system

3. Secure Storage

Store exports securely:
  • Use encrypted storage
  • Limit access to authorized personnel
  • Delete old exports when no longer needed

4. Document Format

Choose format based on use case:
  • JSON for programmatic access
  • CSV for spreadsheet analysis

Next Steps

Create Export

Export your data now

API Documentation

Automate exports with API

Team Access

Manage who can export

Support

Questions about data export?