Skip to main content
Widget data source types

Widget data source types

The datasource_type field on a widget accepts:DATASOURCE · CALCULATION · CUSTOM_DATA · CUSTOM_IMPORT · GOALS
Deprecated metrics flagged

Deprecated metrics are flagged, not renamed

When a vendor retires a metric, it is now marked with a deprecated flag in the metric catalog rather than having (Deprecated) appended to its name. In the report builder these metrics render in red with an explanatory tooltip, and they remain selectable so existing widgets continue to resolve.The change removes a long-standing annoyance: the old suffix was copied into a widget’s saved metric label at the moment it was picked, so every deprecation round left stale labels behind in saved reports. The flag lives only in the catalog, so it can never go out of date.Applied across Ahrefs, Facebook Pages, Google Analytics 4, Google Ads, Google Business Profile, Google Local Services Ads, Instagram, Instagram Ads, Keywords, Salesforce, Shopify, Twitter Ads, WooCommerce, and YouTube. No metrics were added or removed.
Facebook post reach fixed

Facebook post reach returns data again

Post-level reach was still requesting a field Meta has retired, which returned 0 for every post. It now uses Meta’s current unique-viewers field. Affected widgets recover on their next refresh — no reconfiguration needed.
Preview column sorting & search

Sorting and search fixed for preview columns

Table columns that render a rich preview — ad creatives, social posts — carry a structured value rather than plain text. Sorting and searching those columns compared the underlying object instead of its text, so every row looked identical: sorting did nothing and search matched everything or nothing.These columns now sort and search on the text shown in the cell. Period comparison on the same columns matches rows by the entity’s identifier, so each row is compared against its own previous-period value instead of all rows collapsing onto the first.
Comparison display modes

Choose how comparison data appears

When a comparison period is active, you can now choose what each row or data point shows. A Comparison Display setting under Display offers:
  • Previous Value — the raw figure from the previous period (the default)
  • Percentage Change — the change against the previous period
  • Both — the previous value and the percentage change side by side
Available on tables, line, area, and bar charts. Pie, funnel, map, and scorecard widgets don’t render side-by-side comparisons, so the setting is hidden for them.Over the API, this is the comparison_display field on a widget, accepting previous, change, or both. Widgets without it continue to show the previous value.
Period comparison alignment

Period comparison matches the correct category

Comparison figures now line up with the category they belong to for dimensions such as channel, country, page, and campaign — including on widgets that are sorted or limited to a set number of rows. Date-based comparisons are unaffected.
Per-metric display settings

Metric Settings — rename, format, and set comparison direction

A new Metric Settings panel under Display gives each metric in a widget its own overrides, in a collapsible row per metric:
  • Name — a custom label that replaces the metric’s default name
  • Format — how the value renders (numeric, decimal, percentage, currency, time)
  • Comparison Indicator — whether a rise is good or bad for that metric
The comparison indicator matters for cost-style metrics. On Higher is better (the default) a rise shows green and a fall red. On Lower is better — cost, CPC, bounce rate — the colours swap, so a falling cost reads as a win. Only the colour changes; the arrow and the sign always follow the actual movement.Applies to scorecards and the KPI figures on chart widgets.
Dashboard widget limit enforced on duplicate

Dashboard widget limit applies to duplication

Dashboards are capped at 50 widgets. The cap was enforced when saving widgets but not when duplicating them, so a direct API or MCP call could push a dashboard past the limit. Duplicating beyond the cap now returns:
Reports paginate across pages and remain exempt. In the editor, a slot counter on the dashboard canvas now shows how much room is left, shifting from neutral to amber as the limit approaches and to red once it is reached.
Table search toggle
Table widgets accept a new show_search boolean on create and update, exposed in the builder under Display. It defaults to enabled, so existing widgets are unchanged.
Heading colour in themes

Headings can be coloured independently

Themes gain an optional heading_text token, edited as Headings in the theme editor’s colour section. It controls the colour of title widgets. When unset, headings continue to follow the general text colour, so existing themes render exactly as before.
More MCP tools

New MCP tools

The MCP server now exposes the rest of the workspace to AI agents. New tool groups:
  • Goalsgoals_list, goals_create, goals_update, goals_delete, goals_duplicate
  • Calculated metricscalculated_metrics_list, _create, _update, _delete, _duplicate
  • Custom datacustom_data_list, _get, _create, _update, _delete, _duplicate
  • PDFpdf_generate, pdf_status; Exportsexports_list, exports_delete
  • Emailemail_send, senders / templates / sending-domains CRUD, and email_provider_get/_set
  • API keysapi_keys_list, api_keys_create, api_keys_revoke
  • Notificationsnotifications_list, notifications_unread_count, notifications_mark_read, and more
  • Archivearchive_list, archive_counts, archive_restore
  • Activityactivity_list
  • Billingbilling_get, billing_invoices (read-only; plan changes stay in-app)
Stricter input validation

Enumerated fields are now validated

Request fields with a fixed set of options now reject anything outside that set (a clear 400 instead of silently storing a bad value), and every enumerated field shares one definition across the REST API and the MCP tools so they can’t drift. Highlights:
  • Sort & filter paramssort_by / order on list endpoints, source (all / standard / mine) on templates and assets, and the datasources filter (each id must be a real data source).
  • Automationsfrequency, time_format, and the report date_text preset.
  • Projectstype, orientation, paper_size, branding_source, and auto_refresh_interval_hours (hourly or daily).
  • Goals & calculated metricsoperator, goal_type, and the display format (Numeric / Decimal / Percentage / Currency).
  • Media — upload content_type is restricted to image types.
  • Onboarding & company — client-count band and country (from the country list).
  • Timezones — every timezone field is validated as a real IANA zone.
No changes are needed for existing integrations that already send valid values.
Saved Metrics hidden

Saved Metrics excluded from the public reference

The internal Saved Metrics endpoints are no longer published in the OpenAPI spec (/openapi.json) or the API reference. The endpoints continue to work for existing callers; they’re simply not part of the documented public surface.