Skip to main content

January 2026 Release Notes

What we released in January

G
Written by Guy Halperin
Updated over 3 months ago

Release Date: 1/2/26

πŸš€ Enhancements

  • Add company-level dataset metrics endpoint for ShareWillow

  • Add soft delete for DatasetMetricConfig

  • Add column change validation for third-party data sources

  • Add export CSV button to metric preview tables

πŸ› Bug Fixes

  • Update scraper for FieldPulse UI changes

πŸ”§ Maintenance & Chores

  • Preserve column order in datasets from third-party sources

  • Add company scoping to ShareWillow API endpoints

Release Date: 1/5/26

πŸš€ Enhancements

  • Add direct DatasetMetricConfig to ShareWillow mapping via public ID

  • Sync Google Sheet metric data properly to ShareWillow

  • Add configurable week start day for weekly data sources

πŸ› Bug Fixes

  • Handle nil current_period in available_periods endpoint

  • Sync all ShareWillow metric configs independently

Release Date: 1/6/26

πŸ› Bug Fixes

  • Fetch all companies with pagination and cache

Release Date: 1/11/26

πŸš€ Enhancements

  • Add email integration for data sources

  • Add automatic PR labeling based on commit convention

  • Add animated System Health bar to datasets page

  • Add Tech Pay by Job Split ShareWillow report

  • Add HousecallPro as a dataset integration

  • Add Service Fusion dataset integration

πŸ› Bug Fixes

  • Resolve syncDateColumn validation error for period_dates mode

  • Add progress formatter to show RSpec failures in CI

Release Date: 1/12/26

πŸš€ Enhancements

Metrics Hub

  • Metrics hub frontend

  • Metrics hub ShareWillow backend routes

  • Feature flag integrated metric sync button

  • Add direct reference to metrics on thresholds

Dashboard

  • Allow custom dates and "this week" on dashboard

  • Reorder the left nav bar

Backoffice

  • Update KPI values in backoffice

  • Auto approve backfilled distributions in backoffice

πŸ› Bug Fixes

Metrics

  • Fix top performers query strings sometimes failing after metrics backend changes

  • Prevent re-syncing metrics until 2 minutes after sync completion

  • Fail silently when fetching datasets on admin load

  • Fix synced ServiceTitan metric with threshold showing as blank on review distribution

  • Fix threshold markets showing on other parts of dashboard

  • Remove sharewillow_company_id from employee mappings query

  • Handle errors in daily sync job without blocking other data sources

  • Remove 50 character limit on dataset name

  • Use correct period date keys from ShareWillow API

  • Support finding metric by URL path id or integration_hub_public_id

  • Use metric_id instead of integration_hub_public_id for ShareWillow

Distributions & Plans

  • Fix bulk review distributions

  • Fix duplicating plan defaults to disabled if editing name of copy

🎨 Design & Styling

  • Fix background color on tier commission header

  • Fix table taking entire page even if only one plan

  • Update log out icon to match others in menu

  • Put tables in a container

  • Make table rows thinner

  • Tighten up form input fields

  • Make page header font thinner

  • Capitalize monthly distribution month in banner

  • Fix negative formatting for currency

Release Date: 1/16/26

πŸš€ Enhancements

Plan-Level Dashboards

  • New performance tab showing KPIs and metrics at the plan level for admins

Metrics Hub

  • CSV download

  • Soft delete

  • Manual metric value updates

First Time User Experience

  • New onboarding flow

Qualifier KPIs

  • Display qualifier KPIs (metrics that affect other KPI payouts) in the performance tab

🎨 UI Polish

  • Home page tweaks

  • Tables default to 25 rows

  • Allow creating plans for previous year

πŸ› Bug Fixes

  • Fix leaderboard ranking with $0 payouts

  • Fix custom thresholds with dollar type

  • Fix qualifier editing on published plans

Release Date: 1/19/26

πŸš€ Enhancements

Metrics

  • Default weekly metrics to current quarter

  • Allow editing manual metrics during current period

  • Expand metric tables beyond 10 rows

Admin Plan Updates

  • KPI table improvements on the plan summary page

Onboarding

  • Remove onboarding banner on demo companies

  • Update banner copy

Authentication

  • Implement token refresh (no more auto-logouts after 2 hours)

🎨 UI Polish

  • Settings page updates

  • Department badges on people page

  • Logout icon sizing consistency

πŸ› Bug Fixes

  • Fix plan incorrectly showing as draft after publish redirect

Release Date: 1/21/26

πŸš€ Enhancements

  • Change default sort for dataset rows to use date columns

  • Google Sheets employee auto-matching and sync improvements

πŸ› Bug Fixes

  • Determine employee column by SQL structure, not user intent

  • Optimize DatasetSerializer N+1 queries and memory usage

Release Date: 1/22/26

πŸš€ Enhancements

Metrics

  • Allow decimals on manual metric updates and threshold actuals

  • Fix numerical metrics rounding to show decimal values

  • Prevent duplicate data sources with same integration and report_id

  • Add KeyNormalizer for consistent snake_case column keys

KPI Configuration

  • Fix currency format selection for Flat Rate, Tiers, and Prorate KPI rule types

Onboarding

  • Make all signups non-demo by default

  • Auto-open onboarding wizard on sign in until completed

πŸ› Bug Fixes

  • Fix manual metric update issue for plans with mixed ST and manual metrics

  • Include sharewillow_company_id in single company integration fetch

  • Metric name click opens MetricCard accordion instead of edit panel

  • Hide data_source_id from external API responses

  • Use compact_blank to ignore empty syncDateColumn in validator

Release Date: 1/23/26

πŸš€ Enhancements

  • Validate metric type compatibility when linking DatasetMetricConfig

  • Update integrations metric endpoint to allow IH back-fill threshold data

πŸ› Bug Fixes

  • Fix plan flow not persisting thresholds

πŸ”§ Maintenance & Chores

  • Remove Slack release notification workflow

  • Remove hardcoded Employee column requirement for Google Sheets

Release Date: 1/26/26

πŸ› Bug Fixes

πŸ”Œ Integration Hub

  • Convert HCP Jobs total_amount from cents to dollars

  • Skip column validation when no data is returned

  • Lookup DataSource by report_id instead of name

  • Enforce created_at as replace_window_column for HCP data sources

πŸ”§ Maintenance & Chores

πŸ”Œ Integration Hub

  • Consolidate Employees tab API calls into single endpoint

Release Date: 1/27/26

πŸš€ Enhancements

Onboarding

  • Upload via CSV broken into steps

  • Add tenant ID step to onboarding flow

  • Send Slack notification when user submits tenant ID

Leaderboards & Caching

  • Clear leaderboard cache after IH uploads snapshots

  • Remove ranking from plan-level leaderboards, add sort by column

Backend

  • Add server-side pagination to plans page

  • Audit data on dataset metrics

πŸ› Bug Fixes

  • Fix stale data from Rails cache

  • Company settings form doesn't show current value of week start day

  • Metric hub fix week start day hardcoded to Sunday

  • Enable clear data even after sharing

  • Only clear rule form when changing metric if incompatible type

  • Fix duplicate auth calls on page load

Release Date: 1/30/26

πŸš€ Enhancements

πŸ”Œ Integration Hub

  • Add XLSX support as separate integration type

  • Add equipment_cost and po_cost columns to tech split report

  • Add metrics health bar and sync status to MetricsTab

  • Add View SQL toggle to DataSourceInfoCard

  • Add timezone support to ServiceTitan customers

  • Add employee mapping support for file uploads (manual_csv/xlsx)

πŸ› Bug Fixes

πŸ”Œ Integration Hub

  • Stop silently swallowing ShareWillow API errors in metric sync

  • Normalize text date formats to ISO for reliable dedup

  • Preserve Google Sheets API error details in re-raised exceptions

  • Infer column types for computed columns to fix numeric sorting

  • Reduce Heroku slug size below 500M limit

  • Move dev-only gems out of production bundle to reduce slug size

  • Eliminate N+1 queries on datasets index endpoint

Did this answer your question?