Custom Reports
Build custom reports with flexible filters, groupings, and visualizations to answer any business question.
Overview
Custom Reports in SalesOS empower every team member to answer business questions without relying on analysts or pre-built dashboards. The report builder provides a flexible, no-code interface for constructing queries across any CRM data, applying sophisticated filters, grouping results into meaningful segments, and visualizing findings through charts and tables.
Whether you need a simple list of overdue tasks or a complex multi-dimensional analysis of revenue by territory, product line, and quarter, the reporting engine handles it with consistent performance and an intuitive building experience.
Report Builder Interface
The report builder is accessed from Analytics > Reports > New Report and consists of four main panels:
Data Source Panel (Left)
Displays available objects and their fields as a navigable tree. Drag fields from this panel into the report canvas to add columns.
Report Canvas (Center)
The primary workspace where you arrange columns, define groupings, and preview results. The canvas updates in real time as you modify the report structure.
Filter Panel (Right)
Define criteria that limit which records appear in the report. Filters can be simple single-field conditions or complex multi-level logic groups.
Properties Panel (Top)
Configure report-level settings including name, description, report type, date range, and sharing permissions.
Report Types
SalesOS supports three fundamental report layouts, each suited to different analytical needs.
Tabular Reports
Tabular reports display records as flat rows with columns. They are the simplest report type and ideal for:
- Record lists (e.g., all open opportunities closing this quarter).
- Activity logs and audit trails.
- Data exports for external analysis.
- Operational reports that reps use daily.
Tabular reports support sorting by any column, column reordering, and row-level detail links back to the source record.
Summary Reports
Summary reports add grouping levels to tabular data, with subtotals and aggregate calculations at each group break. They are ideal for:
- Pipeline by stage (grouped by stage with subtotals).
- Revenue by rep by quarter (multi-level grouping).
- Activity metrics by team and time period.
- Any analysis requiring sub-aggregations.
Summary reports support up to three nested grouping levels and display expandable/collapsible group sections.
Matrix Reports
Matrix reports display data in a two-dimensional grid with row groupings and column groupings, similar to a pivot table. They are ideal for:
- Win rate by industry (rows) and deal size (columns).
- Activity count by rep (rows) and month (columns).
- Revenue by product (rows) and region (columns).
- Any cross-tabulation analysis.
Matrix reports calculate aggregate values (sum, count, average, min, max) at each cell intersection and provide row and column totals.
Data Sources
Reports can query data from any SalesOS object or combination of related objects:
Primary Objects
| Object | Common Report Use Cases |
|---|---|
| Opportunities | Pipeline analysis, forecasting, win/loss |
| Accounts | Customer segmentation, health scores |
| Contacts | Stakeholder mapping, engagement |
| Leads | Funnel conversion, source analysis |
| Activities | Rep productivity, engagement metrics |
| Tasks | Workload, completion rates |
| Quotes | CPQ analytics, discount patterns |
| Orders | Revenue recognition, fulfillment |
| Contracts | Renewal tracking, churn risk |
| Products | Catalog utilization, revenue mix |
Cross-Object Reporting
SalesOS automatically resolves relationships between objects, allowing you to include fields from related records:
- Report on Opportunities with Account industry and Contact title.
- Report on Activities with associated Opportunity stage and value.
- Report on Quotes with line item details and Product categories.
The system displays available relationships as expandable nodes in the data source panel.
Adding Fields and Columns
Dragging Fields
Drag any field from the data source panel into the report canvas to add it as a column. Fields can be reordered by dragging within the canvas.
Field Types
| Type | Display | Aggregation Options |
|---|---|---|
| Text | As-is | Count, Count Distinct |
| Number | Formatted with locale | Sum, Average, Min, Max, Count |
| Currency | With currency symbol | Sum, Average, Min, Max |
| Date | Formatted per user preference | Count, Min (earliest), Max (latest) |
| DateTime | Date + time | Count, Min, Max |
| Boolean | Yes/No or custom labels | Count True, Count False, Percentage |
| Picklist | Display value | Count per value, Count Distinct |
| Lookup | Related record name | Count, Count Distinct |
Column Configuration
Each column can be individually configured:
- Header label: Override the default field name with a custom header.
- Width: Fixed pixel width or auto-size.
- Alignment: Left, center, or right.
- Format: Number formatting, date format, currency display.
- Conditional formatting: Color-code cells based on value thresholds.
Filters and Logic
Basic Filters
Add filters by selecting a field, an operator, and a value:
| Operator Category | Operators |
|---|---|
| Equality | equals, not equal to, is null, is not null |
| Comparison | greater than, less than, greater or equal, less or equal |
| Text | contains, does not contain, starts with, ends with |
| List | in, not in |
| Date | before, after, between, last N days, next N days, this week/month/quarter/year |
| Boolean | is true, is false |
AND/OR Logic
Filters can be combined using AND/OR logic groups:
AND logic (all conditions must be true):
- Stage equals "Negotiation" AND Amount greater than $50,000 AND Close Date within next 30 days.
OR logic (any condition can be true):
- Industry equals "Healthcare" OR Industry equals "Life Sciences."
Nested logic:
- (Stage equals "Proposal" OR Stage equals "Negotiation") AND (Amount greater than $100,000) AND (Competitor is not null).
Dynamic Filters
Dynamic filters use relative values that update automatically:
- Current User: Filter by records owned by the viewing user.
- Current User's Team: Records owned by anyone in the viewer's team.
- Relative Dates: "This Quarter," "Last 30 Days," "Next Fiscal Year."
- Runtime Parameters: Prompt the viewer to select filter values when running the report.
Grouping and Subtotals
Adding Groups
In summary and matrix reports, designate fields as group-by dimensions:
- Drag a field to the Group By area (or right-click a column and select "Group by this field").
- Choose the grouping granularity (for dates: day, week, month, quarter, year).
- Set sort order for groups (ascending, descending, or by aggregate value).
Subtotal Functions
At each group break, SalesOS calculates:
- Sum: Total of numeric values in the group.
- Count: Number of records in the group.
- Average: Mean value across the group.
- Min/Max: Extreme values within the group.
- Percentage of Total: Group subtotal as a percentage of the grand total.
Multi-Level Grouping
Summary reports support up to three nested grouping levels. For example:
- Level 1: Region
- Level 2: Sales Rep
- Level 3: Deal Stage
Each level displays its own subtotals, with a grand total at the bottom.
Sorting
Reports can be sorted by any column or aggregate value:
- Single sort: Click any column header to sort ascending/descending.
- Multi-sort: Hold Shift and click additional columns for tie-breaking sort order.
- Group sort: Sort groups by their subtotal values (e.g., show highest-revenue regions first).
- Custom sort: Define custom sort orders for picklist values (e.g., stage order from Prospecting to Closed Won).
Calculated Fields
Calculated fields create new data points from existing fields using formulas.
Formula Types
| Type | Example |
|---|---|
| Arithmetic | Amount * Probability / 100 (weighted pipeline) |
| Date Math | DATEDIFF(CloseDate, TODAY()) (days to close) |
| Conditional | IF(Amount > 100000, "Enterprise", "SMB") |
| Text | CONCATENATE(FirstName, " ", LastName) |
| Aggregate | Amount / COUNT(LineItems) (average line item value) |
Creating Calculated Fields
- Click Add Calculated Field in the report canvas toolbar.
- Enter a name for the field.
- Build the formula using the formula editor (autocomplete for field names and functions).
- Set the output format (number, currency, percentage, text).
- The calculated field appears as a column and can be used in filters and groupings.
Available Functions
SalesOS provides 50+ built-in functions across categories:
- Math: SUM, AVG, ROUND, CEILING, FLOOR, ABS, POWER
- Text: CONCATENATE, LEFT, RIGHT, MID, UPPER, LOWER, TRIM, LENGTH
- Date: TODAY, NOW, DATEDIFF, DATEADD, MONTH, YEAR, QUARTER, WEEKDAY
- Logic: IF, AND, OR, NOT, CASE, ISNULL, BLANKVALUE
- Aggregate: RUNNING_SUM, PERCENT_OF_TOTAL, RANK
Chart Visualizations
Every report can be enhanced with visual charts that make patterns immediately apparent.
Available Chart Types
| Chart Type | Best For |
|---|---|
| Bar (horizontal) | Comparing values across categories |
| Column (vertical) | Time-series comparisons, rankings |
| Line | Trends over time |
| Area | Volume trends, stacked compositions |
| Pie / Donut | Part-of-whole relationships (limit to 6-8 segments) |
| Funnel | Conversion through sequential stages |
| Scatter | Correlation between two numeric variables |
| Combo | Dual-axis (e.g., revenue bars + win rate line) |
| Gauge | Single KPI against target |
| Heatmap | Density or intensity across two dimensions |
Chart Configuration
- Axes: Select which fields map to X and Y axes.
- Series: Define multiple data series for comparison.
- Colors: Use brand palette or custom color assignments.
- Labels: Show/hide data labels, format values.
- Legend: Position and style.
- Reference lines: Add target lines, averages, or benchmarks.
Scheduling and Email Delivery
Reports can be scheduled to run automatically and deliver results via email.
Schedule Configuration
| Setting | Options |
|---|---|
| Frequency | Daily, Weekly, Monthly, Quarterly |
| Day/Time | Specific day and time (timezone-aware) |
| Recipients | Individual users, teams, or email addresses |
| Format | Inline HTML table, PDF attachment, CSV attachment, Excel attachment |
| Conditions | Only send if results are non-empty, or if threshold exceeded |
Subscription Management
Users can subscribe to reports they have access to without requiring the report owner to configure delivery. Self-service subscriptions honor the same permission model as direct report access.
Sharing and Permissions
Visibility Levels
| Level | Description |
|---|---|
| Private | Only the creator can view and edit |
| Team | All members of the creator's team can view; creator edits |
| Organization | All org members can view; creator and admins edit |
| Public Link | Shareable URL (read-only, optional password protection) |
Collaboration
- View access: See report results with current data.
- Edit access: Modify report structure, filters, and configuration.
- Clone: Any viewer can clone a shared report to create their own editable copy.
- Transfer ownership: Admins can reassign report ownership when users leave.
Report Folders
Organize reports into folders for easy discovery:
- My Reports: Personal reports visible only to the creator.
- Team Folders: Shared folders visible to team members.
- Organization Folders: Company-wide folders organized by function (Sales, Marketing, Finance, Operations).
- Favorites: Quick-access folder for bookmarked reports.
Folders support nesting up to three levels deep and can have independent permission settings.
Exporting
Export Formats
| Format | Use Case |
|---|---|
| CSV | Data analysis in spreadsheets, import into other tools |
| Excel (.xlsx) | Formatted export with charts, multiple sheets for grouped data |
| Presentation-ready, printable reports with headers and footers | |
| Google Sheets | Direct export to a connected Google Sheets document |
Export Options
- All records or current page for large reports.
- Include/exclude chart visualizations (PDF and Excel only).
- Include/exclude subtotals and grand totals.
- Custom headers and footers with company branding (PDF).
- Filtered or full dataset (export can ignore runtime filters).
Scheduled Exports
Combine scheduling with export to automatically deliver fresh data files to external systems, shared drives, or SFTP endpoints on a recurring basis.
Performance Considerations
Large Data Sets
For reports spanning millions of records:
- SalesOS automatically applies pagination (default 2,000 rows per page).
- Aggregations compute across the full dataset regardless of pagination.
- Indexes on commonly filtered fields ensure sub-second query times.
- Reports exceeding 100,000 rows generate asynchronously with email notification on completion.
Query Optimization
- Apply date range filters to limit the scan window.
- Use indexed fields (Owner, Created Date, Stage) in primary filters.
- Avoid "contains" filters on large text fields when possible.
- Limit cross-object joins to necessary relationships only.
Best Practices
-
Start with the question, not the data. Before building a report, articulate the specific business question you need to answer. This prevents scope creep and ensures the report delivers actionable insight rather than raw data.
-
Use descriptive report names. Name reports clearly so others can find and understand them without opening. Include the key dimension and time frame: "Q2 Pipeline by Stage and Region" rather than "Pipeline Report."
-
Set appropriate date filters. Always include a date boundary in your reports. Unbounded reports query all historical data, which is slower and often less relevant than a focused time window.
-
Leverage dynamic filters for reusable reports. Use "Current User" and "This Quarter" filters to build a single report that serves multiple people with personalized results.
-
Keep visualizations simple. Choose the chart type that most directly communicates your insight. A simple bar chart often communicates more effectively than a complex multi-series area chart.
-
Organize reports into logical folders. Invest time in folder structure early. As your report library grows, good organization prevents duplication and helps new team members find existing reports.
-
Review scheduled reports periodically. Reports that run on schedules consume system resources and inbox attention. Audit scheduled reports quarterly and retire those no longer providing value.
-
Use calculated fields for derived metrics. Rather than exporting data and computing metrics in spreadsheets, build calculated fields directly in the report. This ensures consistency and enables sharing the complete analysis.
-
Clone before modifying shared reports. If you need a variant of a team report, clone it rather than modifying the original. This preserves the shared version for other users.
-
Export to the right format for the audience. Executives prefer PDF with charts. Analysts prefer CSV for further manipulation. Match the export format to how the recipient will consume the data.