Skip to main content

Overview

Scheduled reports ensure your team stays informed with regular data exports, metric summaries, and notifications. Using Consuelo’s workflow scheduling, you can automate weekly standups, monthly reviews, and real-time alerts.

Use Cases

Report TypeFrequencyRecipients
Weekly metricsMonday 9amLeadership
Monthly revenue1st of monthFinance
Daily signup summaryDaily 8amGrowth team
Pipeline healthFriday 4pmSales
Data quality alertsReal-timeOps team

Creating a Scheduled Report

Step 1: Create the Workflow

  1. Go to Settings → Workflows
  2. Click + New Workflow
  3. Name it (e.g., “Weekly Growth Report”)

Step 2: Add Schedule Trigger

  1. Select Schedule trigger
  2. Configure frequency:
    • Daily: Every day at specific time
    • Weekly: Day of week + time
    • Monthly: Day of month + time
Example: Every Monday at 9:00 AM

Step 3: Add Report Actions

Option A: Email Report

  1. Add Send Email action
  2. Configure:
Email template:
Weekly Growth Report
Week of {{trigger.scheduledDate}}

New Signups: {{calculate.newSignups}}
Activation Rate: {{calculate.activationRate}}%
MRR: ${{calculate.mrr}}

View full dashboard: https://app.consuelohq.com/dashboards/growth
Single recipient limitation: The Send Email action supports only one recipient per email. To send to multiple people, chain multiple Send Email actions or send to a distribution list address.

Option B: Export to External System

  1. Add Code action to query data
  2. Add HTTP Request to POST to external system
Example: POST to Slack webhook
// Code action
const startOfWeek = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
const query = `
  query WeeklyMetrics {
    people(filter: { signupDate: { gte: "${startOfWeek}" } }) {
      totalCount
    }
  }
`;

const response = await fetch('https://<your-internal-domain>/graphql', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ query })
});

const result = await response.json();
return { newSignups: result.data.people.totalCount };
Then HTTP Request to Slack:
POST https://hooks.slack.com/services/YOUR/WEBHOOK/URL
Body: {"text": "Weekly Report: {{code.newSignups}} new signups"}

Report Content Strategies

Embedded Metrics

Include key numbers directly in the email:
This Week:
- Signups: {{searchPeople.totalCount}}
- Activations: {{searchActivated.totalCount}}
- Conversion: {{calculate.percentage}}%
Reference full dashboards for detailed views:
View full metrics:
https://app.consuelohq.com/dashboards/weekly-metrics

Attachments

Static attachments only. Upload files when configuring the workflow. Same file sent to all recipients. For dynamic reports, generate PDFs using the PDF generation guide.

Advanced Patterns

Conditional Reports

Only send if metrics exceed thresholds:
  1. Add Filter action after data query
  2. Condition: {{searchPeople.totalCount}} > 0
  3. Only send email if condition is true

Multi-Step Reports

Build complex reports with multiple queries:
  1. Step 1: Search for new signups
  2. Step 2: Search for activations
  3. Step 3: Calculate conversion rate
  4. Step 4: Send email with all metrics
  5. Step 5: Post to Slack with summary

Time-Based Queries

Query data relative to the scheduled run:
// In Code action
const today = new Date();
const lastWeek = new Date(today - 7 * 24 * 60 * 60 * 1000);

return {
  startDate: lastWeek.toISOString(),
  endDate: today.toISOString()
};

Scheduling Best Practices

Timing

  • Morning reports: Schedule for 8-9am before work starts
  • Weekly summaries: Monday morning for previous week
  • Monthly reports: 1st of month or first business day
  • Avoid weekends: Unless your team works weekends

Time Zones

Schedules run in your workspace’s configured timezone. Check Settings → General to verify.

Retry Logic

If a report fails:
  1. Check workflow runs in Settings → Workflows → [Your Workflow] → Runs
  2. Review error messages
  3. Fix and manually trigger if needed

Limitations

Email Constraints

  • Single recipient per email action
  • Static attachments only
  • Basic formatting (no HTML signatures)
  • Plain text or simple HTML only

Data Limits

  • Search returns max 200 records
  • Use aggregations for large datasets
  • Consider Code action for complex queries

Formatting

  • No rich email templates
  • No inline charts or graphs
  • Link out to dashboards for visuals

Alternatives to Email

Slack Notifications

More interactive than email:
// Code action to format Slack message
return {
  slackPayload: JSON.stringify({
    blocks: [
      {
        type: "header",
        text: { type: "plain_text", text: "Weekly Report" }
      },
      {
        type: "section",
        fields: [
          { type: "mrkdwn", text: "*Signups*\n{{searchPeople.totalCount}}" },
          { type: "mrkdwn", text: "*Activated*\n{{searchActivated.totalCount}}" }
        ]
      }
    ]
  })
};

Webhook to BI Tool

Send data to Looker, Tableau, or other BI platforms:
POST https://your-bi-tool.com/api/ingest
Headers: Authorization: Bearer BI_API_KEY
Body: {{code.reportData}}

Save to Consuelo

Create report records in Consuelo:
  1. Create Record action
  2. Object: “Weekly Reports”
  3. Fields: Date, Signups, Activations, etc.
  4. Build dashboard from historical reports

Troubleshooting

Reports Not Sending

IssueCheck
Workflow not activeToggle workflow to Active
Wrong schedule timeVerify AM/PM and timezone
Email address invalidCheck recipient format
Rate limit hitCheck API usage in Settings
Code errorsReview workflow run logs

Data Seems Wrong

  • Verify date filters (start of day vs end of day)
  • Check timezone conversions
  • Confirm field names in queries
  • Review filter conditions

Examples

Daily Signup Summary

Trigger: Daily at 8am Actions:
  1. Search People (created today)
  2. Send Email to growth-team@company.com

Weekly Revenue Report

Trigger: Monday 9am Actions:
  1. Search Companies (plan type = paid)
  2. Sum revenue field
  3. Send Email to leadership

Real-Time Alert

Trigger: Record Created (High-value opportunity) Actions:
  1. Send Email to sales-manager@company.com
  2. POST to Slack #sales-alerts