Reporting Snapshot Source Report
A Reporting Snapshot Source Report is the tabular report whose rows feed a Reporting Snapshot.
Definition
A Reporting Snapshot Source Report is the tabular report whose rows feed a Reporting Snapshot. Each scheduled snapshot run executes this report as the configured Running User, takes the rows the report returns, and copies them into records of a target custom object. The source report is the bridge between live Salesforce data and the historical record the snapshot is building over time.
Source reports have strict requirements. They must be tabular, not summary, matrix, or joined. They must be saved in a folder the Running User can access. Each column the snapshot maps must have a compatible data type with the corresponding target object field. Outside those rules, a source report is a normal tabular report; admins build them with the standard Report Builder, and the snapshot feature pulls them in by reference at run time.
How the source report drives every Reporting Snapshot run
What a source report does inside a snapshot run
When the schedule fires, the Reporting Snapshot job opens the source report and runs it as the configured Running User. Whatever rows the report returns at that moment are the rows the snapshot will copy. The platform then iterates the rows, builds a target-object record for each row, populates the mapped fields with values from the source columns, and inserts the new records. The source report is read-only inside the snapshot context; the snapshot does not edit the report, its data, or any of the source records, it only reads the row output.
Why the source report must be tabular
Reporting Snapshots can only copy flat row structures. Summary, Matrix, and Joined reports introduce groupings and aggregations that have no clean one-to-one mapping to columns in a target object. A summary report's subtotal row, for example, is a synthetic row with no underlying record; there is no Id or owner to copy. The Reporting Snapshot setup wizard enforces this by silently filtering the source-report dropdown to tabular reports only. Picking a non-tabular report would break the row-to-record mapping at snapshot time.
Field mapping between source columns and target fields
The snapshot configuration maps each source report column to a field on the target object. The mapping is a one-to-one declaration: this column goes to this field. Mapped pairs must have compatible data types. A text source column can map to a text target field but not to a number field. A date source column can map to a date or datetime target field but not to a picklist. The mapping limit is 100 columns per snapshot; reports with more columns require either splitting the snapshot or trimming the column list to the essentials.
The Running User and what the report can see
The Running User is the user identity the snapshot runs as. The source report executes against that user's sharing and visibility, not against the org's full data. If the Running User cannot see a record because of sharing or profile restrictions, that record will not appear in the source report and will not be snapshotted. The standard pattern is to set the Running User to an administrator or a service user with broad visibility. Changing the Running User after rows have been snapshotted does not retroactively pull in missing rows; only new runs benefit from the change.
Row limits and what happens at the cap
A Reporting Snapshot will copy up to 2,000 rows from the source report by default. If the source report returns more than 2,000 rows, the snapshot truncates at 2,000 and silently drops the rest. The truncation is undocumented in the report itself; the only way to know is to compare the snapshot run output to the source report row count. To raise the ceiling, set a Row Limit on the source report before mapping it; the platform respects up to 100,000 rows when the Row Limit feature is configured. For larger volumes, split the snapshot into multiple reports with mutually exclusive filters.
Schedule cadence and the snapshot job
A snapshot runs on a schedule the admin chooses: daily, weekly, or monthly, with a configurable time of day. The job runs as an asynchronous batch on the platform's job queue. On heavy-load mornings the job may queue for several minutes before starting, which means the rows reflect the org state at the actual start time, not the scheduled time. For audit-grade timestamps, include a Date Recorded field on the target object and populate it from a TODAY() or NOW() formula column in the source report; this gives every row a stamp of when the source report ran.
Common reasons a snapshot returns zero rows
A snapshot run that returns zero rows almost always points to one of four causes. The first is the Running User cannot see the source report because the folder is private or restricted. The second is the source report's filters returned no rows that day. The third is a recent edit changed the report's format from tabular to summary, breaking the snapshot's row mapping. The fourth is the source report itself has been deleted or moved; the snapshot then errors silently and the target object gets no new rows. Always check the snapshot's Last Run Status and the source report's existence first when troubleshooting.
Wire a tabular report as a Reporting Snapshot source
A Reporting Snapshot Source Report is a tabular report referenced by a snapshot definition. The steps below cover the source-report side of the configuration; the target object and field mapping live in the snapshot definition itself.
- Build the tabular source report
Create a Tabular report that returns one row per record you want to snapshot, with every field you want to capture as a column. Save the report in a folder the Running User can read.
- Confirm the format is tabular
In Lightning Report Builder, the format is tabular when there are no row groupings and no column groupings. If groupings exist, remove them. The Reporting Snapshot wizard will not let you pick a non-tabular source.
- Add the timestamp formula columns
Add a formula column called Run Date with the formula TODAY() and another called Run Datetime with NOW() if you want the target rows to know when the snapshot ran. The snapshot copies these formula values per row at run time.
- Set a Row Limit if you expect more than 2,000 rows
On the source report's properties, set the Row Limit to the volume you need, up to 100,000. Without this setting, the snapshot truncates silently at 2,000 rows.
- Save in a stable folder and reference it from the snapshot
Move the report to a folder you will not rename or delete. The snapshot stores the source report by reference; renaming the folder or moving the report breaks the link. Open the Reporting Snapshot record in Setup and pick the report from the Source Report dropdown.
Cap the number of rows the source report returns. Required when expecting more than 2,000 rows.
Add a TODAY() or NOW() formula column to give each snapshotted row a timestamp of when the source ran.
Use date or status filters in the source report to limit the rows to the records relevant to the snapshot. The fewer rows, the faster the snapshot runs.
- Source reports must be tabular. If a colleague changes the report to summary or matrix, the next snapshot run will error and the target object will get no new rows. Lock down edit access to the source report folder in production.
- Snapshots truncate at 2,000 rows by default. Reports that return more rows lose data silently. Set a Row Limit on the source report or split the snapshot into multiple reports with non-overlapping filters.
- The Running User's sharing determines which records the source report sees. A snapshot run as a sales user will not see Service Cloud records. Set the Running User to an administrator or a service identity with broad visibility.
Trust & references
Cross-checked against the following references.
- Set Up a Reporting SnapshotSalesforce Help
- Tabular ReportsSalesforce Help
- Define a Reporting SnapshotSalesforce Help
- Limit Rows in a Tabular ReportSalesforce Help
Straight from the source - Salesforce's reference material on Reporting Snapshot Source Report.
- Reporting SnapshotsSalesforce Help
- Set Up a Reporting SnapshotSalesforce Help
Hands-on resources to go deeper on Reporting Snapshot Source Report.
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. What is a Reporting Snapshot Source Report?
Q2. What determines what's captured?
Q3. Why does source report design matter?
Discussion
Loading discussion…