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

Audit Logs

Team activity logs (Scale tier only):
  • User actions
  • Timestamps
  • IP addresses
  • Resource changes
  • Metadata

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
  • ☑️ Audit logs (Scale tier)
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
        }
      ]
    }
  ],
  "auditLogs": [
    {
      "id": "log_abc123",
      "userId": "user_123",
      "action": "dashboard_created",
      "resource": "dashboards",
      "resourceId": "dash_abc123",
      "metadata": {
        "dashboardName": "Revenue Dashboard"
      },
      "ipAddress": "192.168.1.1",
      "userAgent": "Mozilla/5.0...",
      "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,
    includeAuditLogs: 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
  • Audit logs track all export activity

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

Audit Logs

Track export activity

Team Access

Manage who can export

Support

Questions about data export?