**: Captures metrics for a single send ID. Used for ad-hoc stakeholder requests.
- Email Sends by User: Logs send activity by operator account. Required for compliance audits and incident tracing.
Each report requires explicit scoping to prevent data leakage or performance degradation:
- Date Range: Define exact windows (e.g.,
Last 7 Days, Custom: Mon-Sun). Avoid rolling windows that overlap previous cycles.
- Business Unit Scope: In Enterprise 2.0 accounts, explicitly select target BUs. Cross-BU aggregation requires appropriate permissions; otherwise, the report defaults to the current BU context.
- Filters: Apply sender domain, audience segment, or send classification filters to isolate specific campaign types.
Step 3: Define Delivery Routing
SFMC supports three delivery mechanisms. Selection depends on downstream consumption:
- Email Attachment: Delivers CSV or PDF directly to stakeholder inboxes. Best for executive summaries.
- SFTP Deposit: Routes files to the SFMC SFTP root or subfolder. Required for automated warehouse ingestion or downstream ETL pipelines.
- Snapshot Storage: Saves the report within SFMC for manual retrieval. Useful for archival but not for automation.
Step 4: Schedule Execution
Wrap the configured report in a schedule definition:
- Frequency: Daily, weekly, or monthly.
- Execution Time: Align with stakeholder review windows.
- Recipients: Specify primary and CC addresses for email delivery.
- Subject Line: Include static identifiers and dynamic date placeholders for inbox filtering.
Architecture Decisions & Rationale
Why native scheduling over API-driven exports?
SFMC's scheduling engine runs on the platform's internal job queue, guaranteeing execution even during API rate limits or external service outages. It eliminates infrastructure maintenance, authentication rotation, and error-handling logic that custom scripts require.
Why separate executive and operational schedules?
Executives require aggregated, high-level metrics (Account Send Summary) delivered early in the week. Operations teams require granular deliverability data (Email Performance by Domain) delivered before weekend sends. Merging these into a single report creates cognitive overload and increases file size unnecessarily.
Why enforce calendar-week boundaries?
Rolling 7-day windows create overlapping data points when scheduled on Mondays. A fixed Monday-to-Sunday window ensures each report covers a distinct, non-overlapping period, simplifying trend analysis and stakeholder communication.
Configuration Schema (TypeScript)
While SFMC manages scheduling through its UI, enterprise teams standardize deployments using configuration-as-code patterns. The following TypeScript schema documents report schedules for version control and cross-environment promotion:
interface ReportScheduleConfig {
reportType: 'AccountSendSummary' | 'EmailPerformanceByDomain' | 'RecentSendSummary' | 'EmailSendsByUser';
schedule: {
frequency: 'Weekly' | 'Monthly';
executionDay: 'Monday' | 'Friday';
executionTime: string; // 24h format, e.g., '08:00'
timezone: string; // IANA timezone identifier
};
dateWindow: {
type: 'LastNDays' | 'CalendarWeek';
days?: number;
startDayOfWeek?: 'Monday' | 'Sunday';
};
delivery: {
method: 'Email' | 'SFTP' | 'Snapshot';
recipients?: string[];
cc?: string[];
subjectTemplate: string;
sftpPath?: string;
format: 'CSV' | 'PDF';
};
scope: {
businessUnits: string[];
filters?: {
senderDomain?: string;
sendClassification?: string;
};
};
}
const executiveWeeklySummary: ReportScheduleConfig = {
reportType: 'AccountSendSummary',
schedule: {
frequency: 'Weekly',
executionDay: 'Monday',
executionTime: '08:00',
timezone: 'America/New_York'
},
dateWindow: {
type: 'CalendarWeek',
startDayOfWeek: 'Monday'
},
delivery: {
method: 'Email',
recipients: ['vp-marketing@client.com'],
cc: ['marketing-ops@client.com'],
subjectTemplate: 'Weekly Email Performance Summary - {{DATE_RANGE}}',
format: 'CSV'
},
scope: {
businessUnits: ['Production', 'EU-Regional'],
filters: {
sendClassification: 'Commercial'
}
}
};
function validateScheduleConfig(config: ReportScheduleConfig): boolean {
if (config.delivery.method === 'Email' && (!config.delivery.recipients || config.delivery.recipients.length === 0)) {
throw new Error('Email delivery requires at least one recipient.');
}
if (config.delivery.method === 'SFTP' && !config.delivery.sftpPath) {
throw new Error('SFTP delivery requires a valid path.');
}
return true;
}
validateScheduleConfig(executiveWeeklySummary);
This schema enforces validation rules, documents deployment intent, and enables infrastructure teams to audit report configurations across SFMC instances without relying on UI screenshots or tribal knowledge.
Pitfall Guide
1. Timezone Drift in Scheduled Runs
Explanation: SFMC schedules execute in the account's default timezone. If stakeholders operate in a different region, reports may arrive at unexpected hours, breaking review workflows.
Fix: Explicitly document the account timezone during kickoff. If cross-regional teams exist, schedule reports to align with the primary stakeholder's business hours, or use SFTP delivery with downstream timestamp normalization.
2. Overlapping Date Windows
Explanation: Scheduling a "Last 7 Days" report on Monday creates overlap with the previous Monday's data, causing double-counting in trend analysis.
Fix: Use fixed calendar boundaries (Monday–Sunday) or explicitly configure "Completed Week" filters. Document the window logic in stakeholder communications to prevent misinterpretation.
3. SFTP Path Permission Failures
Explanation: SFTP delivery fails silently if the target directory lacks write permissions or if the path contains restricted characters. Downstream ETL jobs then timeout waiting for files.
Fix: Pre-provision SFTP directories with explicit write ACLs. Test delivery with a manual run before activating the schedule. Implement a monitoring alert for failed SFTP deposits.
4. Snapshot Retention & Storage Bloat
Explanation: Saving every scheduled run as a snapshot consumes SFMC storage quotas. Over time, this degrades UI performance and complicates report management.
Fix: Reserve snapshots for ad-hoc or compliance-critical reports. For automated weekly summaries, use Email or SFTP delivery and disable snapshot retention. Audit storage quarterly.
5. Ignoring Data Processing Latency
Explanation: SFMC tracking data undergoes batch processing. Real-time sends may not appear in reports for 12–24 hours. Stakeholders expecting live metrics will see incomplete data.
Fix: Communicate latency expectations during onboarding. Schedule reports to run after the processing window closes (e.g., 8 AM for previous day's data). For sub-hour requirements, route to Datorama or custom API pipelines.
6. Cross-BU Permission Silos
Explanation: Enterprise 2.0 accounts restrict data visibility by BU. A report scheduled from a child BU cannot aggregate parent or sibling BU data without explicit permission grants.
Fix: Run cross-BU reports from the Enterprise Parent BU context. Verify permission sets include View Reports and Access All BUs. Document BU hierarchy in deployment runbooks.
7. Report Spam & Stakeholder Fatigue
Explanation: Scheduling multiple narrow reports to the same inbox dilutes attention. Stakeholders archive or ignore attachments, defeating the automation purpose.
Fix: Consolidate metrics into a single weekly summary. Use SFTP for operational teams requiring granular data, and reserve email delivery for executive-level aggregates. Review distribution lists quarterly.
Production Bundle
Action Checklist
Decision Matrix
| Scenario | Recommended Approach | Why | Cost Impact |
|---|
| Executive weekly summary required | Native SFMC Scheduling (Email CSV) | Zero infrastructure, aligns with review cycles, low maintenance | Near-zero operational cost |
| Deliverability engineering needs ISP breakdown | Native Scheduling (SFTP CSV) | Enables automated warehouse ingestion, avoids manual file handling | Minimal (SFTP storage only) |
| Real-time dashboards with custom visualizations | Datorama / Intelligence Reports | Native reports lack interactive charts and sub-hour freshness | High (licensing + implementation) |
| Compliance audit trail for sender activity | Email Sends by User (Manual/Snapshot) | One-off requirement, no recurring schedule needed | Zero (on-demand execution) |
Configuration Template
Copy this structure into your deployment documentation or infrastructure repository to standardize report scheduling across environments:
report_schedule:
name: "Weekly Executive Summary"
template: "Account Send Summary"
frequency: "Weekly"
execution:
day: "Monday"
time: "08:00"
timezone: "America/New_York"
date_window:
type: "CalendarWeek"
start_day: "Monday"
end_day: "Sunday"
delivery:
method: "Email"
recipients:
- "vp-marketing@client.com"
cc:
- "marketing-ops@client.com"
subject: "Weekly Email Performance - {{START_DATE}} to {{END_DATE}}"
format: "CSV"
scope:
business_units:
- "Production"
- "EU-Regional"
filters:
send_classification: "Commercial"
notes: "Runs after 12-hour processing window. SFTP fallback configured for ops team."
Quick Start Guide
- Navigate to Email Studio > Reports and select Account Send Summary.
- Set the date range to Calendar Week (Monday–Sunday) and select target Business Units.
- Choose Email delivery, enter stakeholder addresses, and set the subject line with date placeholders.
- Click Schedule, select Weekly, set execution to Monday 8:00 AM, and save.
- Verify delivery by running a manual test, then confirm receipt with stakeholders.
This pipeline requires no external dependencies, runs entirely within SFMC's native job queue, and delivers structured analytics exactly when planning cycles begin. Configure once, maintain zero, and reclaim operational hours for strategic initiatives.