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