Skip to content

Scheduled Reports

Automated report generation and delivery.

API Endpoints

MethodEndpointDescription
GET/api/reportsList saved reports
POST/api/reportsCreate report config
PUT/api/reports/:idUpdate report
DELETE/api/reports/:idSoft delete
POST/api/reports/:id/generateGenerate now
GET/api/reports/exportAd-hoc export

Data Model

prisma
model CompanyReport {
  id               String
  companyId        String
  name             String
  reportType       String     // 'analytics', 'engagement', 'growth'
  dateRange        Json       // Preset or custom
  platforms        String[]
  socialAccountIds String[]
  metrics          String[]
  schedule         Json?      // Frequency, dayOfWeek, time
  recipients       String[]   // Email addresses
  isActive         Boolean
  lastGeneratedAt  DateTime?
  lastReportUrl    String?
}

Report Types

  • Analytics: Engagement, reach, impressions
  • Growth: Follower trends, growth rate
  • Content: Post performance ranking
  • Comparison: Platform vs platform

Generation Flow

  1. Check if report is due (schedule)
  2. Fetch analytics for date range
  3. Generate PDF/CSV/XLSX
  4. Upload to R2 storage
  5. Email download link to recipients
  6. Update lastGeneratedAt

Formats

FormatLibraryUse Case
PDFpdfkitVisual reports
CSVnativeData export
XLSXexceljsSpreadsheet

Scheduling

Uses background jobs to check due reports:

  • Cron: Every hour
  • Check: Is it time based on schedule?
  • Generate if due

TendSocial Documentation