Orange and blue 3D bar chart columns on a white grid

Photo: Nick Brunner / Unsplash

Guide

Building Salesforce reports people trust: types, formulas, folders

Why two Salesforce reports disagree and how to stop it: report types, filters, formats, formulas, buckets, currency, snapshots, folders, naming, performance and subscriptions.

People trust Salesforce reports when the same question always returns the same number. That depends on four choices made before anyone drags a column. They are the report type, the date field, the filters and whose access the report runs under. Get those consistent, publish them in governed folders with clear names, and most arguments about conflicting totals disappear. Formulas, buckets and formats matter, but they come second.

Why do two Salesforce reports show different numbers for the same metric?

Almost always, the two reports are answering slightly different questions. The usual suspects are the report type, the date field being filtered, a hidden filter, currency conversion or the viewer's record access.

  • Report type: one report starts from Opportunities, the other from Opportunities with Products, so deals without line items vanish from the second.
  • Date field: one filters on Close Date, the other on Created Date. Both are labelled "this quarter" on the dashboard.
  • Scope and filters: "My opportunities" versus "All opportunities", or a stage filter someone added and forgot.
  • Currency: one total is converted to the viewer's personal currency, the other to the corporate currency.
  • Visibility: reports only return records the running user can see, so a manager and a rep get different totals from one report.

Check visibility first when the gap follows a person rather than a report. Our guide to the sharing model explains how roles, sharing rules and teams decide what each user sees. When the gap follows the report, open both side by side and compare the type, the date field and every filter line.

Should you use a standard report type or build a custom one?

Use standard report types for quick, single-object questions. Build custom report types when a metric is official, involves related objects, or needs a trimmed and clearly named field list.

A custom report type starts from a primary object and can chain related objects beneath it. For each relationship you decide whether the parent must have related records, or may have them or not. Pick "with" and accounts without contacts drop out entirely. Pick "with or without" and they stay, showing dashes in the child columns.

The second choice has a subtlety. Filtering on a child field in a "with or without" type does not remove parents that lack children. Test the totals against a known count before publishing. Then tidy the field layout: group fields into sections, rename confusing labels and remove fields nobody should report on.

How should date filters, filter logic and cross filters be set?

Use relative date values such as THIS FISCAL QUARTER or LAST N DAYS:30 so reports stay current without editing. Then make filter logic explicit and use cross filters for "with" or "without" questions about related records.

Relative dates follow your fiscal year settings, so confirm those match how finance counts quarters. Filter logic such as (1 AND 2) OR 3 lets one report combine conditions, but it is easy to misread. Add a report description stating the intent in plain words.

Cross filters answer questions like "accounts without open opportunities" or "contacts with no activity". Salesforce allows a few cross filters per report, each with its own subfilters; check the current limits page before designing around them. A row limit on a tabular report returns the top results by a chosen sort field. That is handy for "top ten deals" components.

Which report format fits the question?

Tabular for lists and exports, summary for totals by one or more groupings, and matrix for two dimensions such as owner by month. Joined reports combine several report types, but they carry restrictions you should know first.

Salesforce report formats compared
FormatBest forWatch for
TabularRecord lists, exports, top-N lists with a row limitNo subtotals; dashboards need a row limit to use it
SummaryTotals and averages grouped by owner, stage or monthToo many groupings make it hard to read
MatrixTwo-way comparisons, such as rep by quarterWide matrices get cut off on screen and in email
JoinedSide-by-side blocks from different report typesBlock, grouping and subscription restrictions; see below

A joined report holds up to five blocks, and grouping only works on fields the blocks share. Each block shows a limited number of rows. Lightning report subscriptions do not support joined reports, according to Salesforce Help. If the joined report exists only to compare two numbers, a custom report type is often cleaner.

When should you use summary formulas, row-level formulas or buckets?

Summary formulas calculate on grouped totals, such as win rate or average deal size. Row-level formulas calculate per record, such as days since last activity. Buckets group values into categories without creating a new field.

  • Summary formulas: use them for ratios, and for the PARENTGROUPVAL and PREVGROUPVAL functions that compare a group with its total or prior period.
  • Row-level formulas: Salesforce currently documents a small number per report, with a cap on unique fields referenced. Check the current limits page, since this has changed.
  • Buckets: good for sizing deals into bands or grouping regions. Each report allows a handful of bucket fields with limited buckets in each.

All three live inside one report, so the logic is invisible elsewhere. If a bucket or formula defines an official metric, consider a real formula field on the object. That puts the definition in one place, where list views and other reports can reuse it.

How do currency and time zones change report results?

With multiple currencies enabled, reports can show the record's own currency and a converted amount. The converted value depends on which rates apply. Date and time filters are evaluated in the running user's time zone.

Dated exchange rates, where enabled, apply to opportunities and a limited set of related objects. Other currency fields use the static conversion rate. Two reports converting the same amounts can therefore differ. A deal closed late on the last day of a quarter may also land in different quarters for users in different time zones. Our multi-currency guide covers rate management and fiscal settings in detail.

How do you report on how numbers changed over time?

Use historical trend reporting for recent change on a few key fields, and reporting snapshots for a permanent record. Both need setting up before the history you want to see.

Historical trend reporting keeps the previous three months plus the current month, for a limited set of fields on supported objects. Reporting snapshots copy a source report's results into a custom object on a schedule. That builds your own history for as long as you keep it. Snapshots are limited in how many rows each run inserts, so summarise before you snapshot. The pipeline review guide shows how managers use these views each week.

How should report folders, sharing and naming be organised?

Separate official reports from personal and ad hoc ones, control who can edit the official folder, and name reports so their scope is obvious. Folder access and record access are separate, so both need thought.

  • Official folder per department, edited only by the reporting owner and viewed by everyone who needs it.
  • Team folders for working reports that a team maintains together.
  • Private reports for exploration; they should never feed a leadership dashboard.
  • A naming pattern such as "Sales | Pipeline by Stage | This FQ | Converted to USD", so scope and currency show in the title.
  • A description on every official report stating the metric, owner and last review date.

Salesforce core reports do not have a built-in certified badge, so certification is a process. Keep a metric dictionary listing each official number, its definition, its report type, its date field and the report that produces it. When anyone asks which report is right, the dictionary answers.

What problems come up most, and how do you prevent them?

Common report problems, their causes and fixes
ProblemLikely causeFixPrevention
Two reports disagree on pipelineDifferent report types or date fieldsRebuild both on one agreed report type and date fieldMetric dictionary entry for each official number
A manager sees a lower total than a rep expectedRecord access differs between usersCheck the running user and sharingState the intended audience in the description
Totals drop after adding a related object"With" relationship excludes parents without childrenSwitch to "with or without" or add a cross filterTest new report types against known counts
Quarter numbers shift for regional teamsTime zone or fiscal year settingsConfirm fiscal settings and use relative date valuesDocument the time zone used for official reports
Report times out or is slowBroad filters on large objectsNarrow dates, filter on selective fields, remove unused columnsDefault official reports to tight date ranges
Dashboard shows stale or wrong figuresSource report edited in a private copyRepoint the component to the official reportLock the official folder to the reporting owner

Why are some reports slow, and what helps?

Reports slow down when they scan large objects with broad filters, many columns and complex formulas. Narrowing the date range and filtering on selective fields usually helps most.

Salesforce documents a default report timeout and a cap on rows displayed in the browser, with exports for larger results. Start official reports with a tight relative date filter and let users widen it. If one object holds millions of rows, archiving or a different analytics tool may be the real answer. The guide to slow Salesforce orgs covers diagnosis beyond reports.

How should report subscriptions and scheduled emails work?

Subscribe people to the official report that answers their recurring question, sent before the meeting where it is discussed. Keep the list short, because each user has a limited number of report subscriptions depending on edition.

Subscriptions can send only when conditions are met, which keeps inboxes quiet until something needs attention. Check whose access the email reflects before adding recipients, and review subscriptions when people change roles. A building-products manufacturer we worked with replaced weekend manual reporting with an automated weekly scorecard. It emails each rep their numbers every Friday, alongside individual and management dashboards in Sales Cloud.

When is it time to move beyond native reports?

Move when the question needs data from outside Salesforce, more history than snapshots can hold, or analysis native formats cannot express. Fix definitions first, because a new tool will not fix disagreeing numbers.

Our comparison of native reports, CRM Analytics and Tableau sets out where each fits. For dashboard layout and delivery to executives, see the guide to dashboards leadership will use.

Chris Gooding, President & CEO of Abstrakt Solutions
President & CEO, Abstrakt Solutions
LinkedIn →

Tech Talk

A monthly brief for the people who own Salesforce, AI and revenue technology

What changed in Salesforce and AI this month, and what to do about it.

One email a month. Written by the consultants who deliver the work, not by a marketing team, for the leaders who make the technology decisions.

  • What changed in Salesforce, AI, integration and RevOps, and what it means for your org
  • At least one framework, checklist or reference architecture you can take into a meeting
  • Honest opinions, including when we disagree with what a vendor is selling
  • No sales sequence. We do not sell from this list

Consultant analysis, not vendor recaps. One click to leave.

One email a month. Your industry and your address, nothing else. We never share either, and you can unsubscribe from the bottom of any issue. See what’s in Tech Talk →

Call (314) 916-4095 Book a consultation
Call (314) 916-4095 Book a call