Custom Reports Guide

Last updated: February 12, 2026

Overview

Custom Reports allow you to create personalized analytics views of your organization's engineering data in Span. Build custom tables with the exact metrics, fields, and calculations you need—no predefined templates required.

With Custom Reports, you can:

  • Select which data fields and metrics to display

  • Apply filters to focus on specific teams or individuals

  • Create calculated columns with custom formulas

  • Configure time ranges for metric analysis

  • Sort, paginate, and download results as CSV

  • Share reports publicly or keep them private


Getting Started

Creating Your First Report

  1. Navigate to Custom Reports

    • Go to Productivity > Custom Reports in the Span navigation menu

    • Click Create Report

  2. Choose What You're Analyzing

    • People: Analyze individual contributors and team members

    • Teams: Analyze team and organizational unit performance

  3. Configure Your Report

    • Add columns (data fields, metrics, or custom calculations)

    • Set filters to narrow down results

    • Configure default time ranges

    • Set a maximum row limit (1-10,000 rows)

  4. Save and Share

    • Give your report a descriptive name

    • Choose visibility:

      • Private: Only you can see this report

      • Public: Everyone in your organization can view it


Building Reports

Adding Columns

Custom Reports support four types of columns:

1. Data Fields

Display information directly from your catalog data.

Examples:

  • Person: Name, Email, Job Title, Team, Tenure, IC Level

  • Team: Team Name, Path, Parent Team

How to add:

  1. Click Add Column > Field

  2. Select the field from the dropdown

  3. Customize the column name (optional)


2. Metrics

Include any metric available in Span's metrics catalog.

Examples:

  • Pull Requests Created

  • PR Cycle Time

  • Code Review Depth

  • Commit Frequency

How to add:

  1. Click Add Column > Metric

  2. Search for and select a metric

  3. Set the time range (or use report default)

  4. Choose the aggregation type if applicable (avg, p50, p75, p90, max)

Time Range Options:

  • Last 7 Days, 2 Weeks, 4 Weeks

  • Last 3 Months, 6 Months, 12 Months

  • Last Completed Month/Quarter

  • Custom date range


3. Percentiles

Show statistical percentiles for any metric.

Use cases:

  • Compare individuals against team benchmarks

  • Identify outliers

How to add:

  1. Click Add Column > Percentile

  2. Select the metric

  3. Set the time range


4. Custom Calculations

Create calculated columns using formulas and mathematical operations.

Supported Operations:

  • Addition: +

  • Subtraction: -

  • Multiplication: *

  • Division: /

  • Parentheses: ( ) for order of operations

Example Formulas:

Approval Rate %:
${prs_approved} / ${prs_total} * 100

Average PR Size:
${lines_added} + ${lines_deleted} / ${prs_created}

Productivity Index:
(${commits} * 2 + ${prs_created} * 5) / ${work_days}

How to add:

  1. Click Add Column > Custom

  2. Build your formula using available metric columns

  3. Reference other columns using ${column_name} syntax

  4. Name your custom column


Filtering Data

Filters help you focus on specific subsets of data.

Filter Types

Filter TypeAvailable OperatorsExample

Text

Equals, Not Equals, In

Team Name = "Engineering"

Number

=, ≠, >, ≥, <, ≤

PRs Created > 50

Date

>, ≥, <, ≤

Tenure ≥ 365 days

Boolean

Equals, Not Equals

Is Dev Contributor = true

Team Membership (People)

Is Member Of

Team = "Platform Team"

Team Hierarchy (Teams)

Is Child Of

Parent = "Engineering"

Combining Filters

Use AND and OR logic to create complex filters:

  • AND: All conditions must be true

    • Example: Team = "Engineering" AND PRs > 50

  • OR: At least one condition must be true

    • Example: Team = "Frontend" OR Team = "Backend"

You can nest multiple AND groups within an OR to create sophisticated filtering logic.


Report Settings

Default Time Range

Set the default time period for all metric columns (unless overridden per column).

Maximum Row Limit

Control how many rows are returned (1-10,000 rows).

  • Higher limits may take longer to load

  • Consider using filters to narrow results


Using Reports

Viewing Report Results

Once your report is saved:

  1. Navigate to the report from the Custom Reports list

  2. Adjust the time range using the time range selector (overrides default)

  3. Sort columns by clicking column headers

  4. Navigate pages using the pagination controls at the bottom

Downloading Data

Export your report results as CSV:

  1. Open the report

  2. Click the Download button

  3. Your CSV will include all current columns with properly formatted numbers

Managing Reports

Edit Report

  • Click the Edit button (pencil icon)

  • Modify columns, filters, or settings

  • Save changes

Duplicate Report

  • Click Duplicate to create a copy

  • Useful for creating variations of existing reports

Delete Report

  • Click Delete (trash icon)

  • Only available for reports you created

Email Subscriptions

Subscribe to receive report updates via email:

  1. Open the report

  2. Click Subscribe

  3. Choose frequency (daily, weekly, monthly)

  4. Receive automated email updates with report data


Example Reports

Example 1: Top Contributors by Activity

Asset Type: People

Columns:

  • Field: Name

  • Metric: Commits (Last 4 Weeks)

  • Metric: PRs Created (Last 4 Weeks)

  • Metric: Code Reviews Given (Last 4 Weeks)

  • Custom: Total Activity = ${commits} + ${prs_created} + ${reviews_given}

Filters:

  • Is Dev Contributor = true

Sort: Total Activity (descending)

Use case: Identify most active contributors over the past month


Example 2: Team PR Efficiency Comparison

Asset Type: Teams

Columns:

  • Field: Team Name

  • Metric: PR Cycle Time (Last 3 Months, p50)

  • Metric: PR Merge Rate (Last 3 Months, avg)

  • Metric: PRs Merged (Last 3 Months)

Filters:

  • Is Child Of: "Engineering"

Sort: PR Cycle Time (ascending)

Use case: Compare team efficiency and throughput


Example 3: New Team Member Onboarding Progress

Asset Type: People

Columns:

  • Field: Name

  • Field: Tenure (days)

  • Metric: First PR to Merge Time

  • Metric: PRs Created (Last 7 Days)

  • Metric: Code Review Participation (Last 7 Days)

Filters:

  • Tenure < 90 days

  • Is Member Of: "Your Team"

Sort: Tenure (ascending)

Use case: Track onboarding progress for recent hires