Release notes September 2026
Market-based and location-based views on the Dashboard; four new emission factor datasets; sea routes in transport mode; British and American English Reports; detail pane improvements; backend imports, laying the groundwork for what's next.
What's new?
Market-based and location-based views on the Dashboard
You can now switch the Dashboard between market-based and location-based views to see how your reported emissions change depending on the method you apply.
Previously, the Dashboard presented a single view, and users who needed to compare the two methods had to change preferred method for scope 2 in boundaries. A toggle now lets you flip between market-based and location-based figures, with the selection applied across the Dashboard visuals. The Compare dashboard has also been extended so that all graphs are available there.
This supports dual reporting under the GHG Protocol Scope 2 Guidance, where both a market-based and a location-based figure must be disclosed.
Four new emission factor datasets
We have added four new datasets to the Factor Library.
OCC Catalonia
Emission factors published by the Oficina Catalana del Canvi Climàtic (OCCC), the Catalan Office for Climate Change. The dataset covers electricity, fuels, and transport activities for Catalonia.
Danish Energy Agency (Klimakompasset)
Danish emission factors sourced from Klimakompasset, which draws on the Danish Energy Statistics and is updated annually when those statistics are published.
SEAI
Conversion factors published by the Sustainable Energy Authority of Ireland. The dataset covers 2018–2025 source years, applied in Carbon+Alt+Delete to 2019–2026 using a one-year time shift.
eGRID & Green-e
United States grid electricity factors, combining eGRID (US EPA) and Green-e residual mix data. eGRID subregions are used as the spatial granularity and appear as the keyword in Carbon+Alt+Delete.
Sea routes in transport mode
Transport mode now supports sea routes, so you no longer have to approximate shipping distances with great-circle calculations. For lanes such as China to Europe, the actual sea distance is roughly double the great-circle distance, and that gap has until now had to be corrected by hand. Distances are calculated from a full port-to-port distance table built on the Eurostat searoute dataset.
British and American English for Reports
Reports are now available in English (UK) and English (US) as two distinct translations.
Reports previously used Oxford English, which mixes British and American conventions inconsistently — "organizational units", for example, is American terminology sitting inside an otherwise British base. Consultants serving US clients have been correcting reports by hand before delivery, and UK-based consultants have raised similar concerns in the other direction.
You can now generate a report in the variant that matches your end client's expectations, with no manual rework.
Detail pane improvements
We have made a series of UX improvements to the Inventory detail pane. The changes are small individually but add up to meaningfully less clicking on repetitive work:
- One-click emission factor search — start a search directly from the detail pane.
- Visually distinct preferred source — improved the visibility of using your preferred dataset from boundaries
- Clearable emission factor — remove a selected factor without having to set a new one.
- Searchable factor source dropdown — find the right source by typing instead of scrolling.
- Next / previous navigation — you can now jump between inventory items by clicking arrows in the top-left of an item’s detail pane.
- Improved notes focus behaviour — the notes field no longer steals or loses focus unexpectedly.
Backend imports, laying the groundwork for what's next
We've moved the import process from the front end to the back end. This is an infrastructure change rather than a new feature on its own, but it's what makes several upcoming capabilities possible.
This groundwork unlocks multi-file uploads for AI imports, transformations for API users (including via MCP), and fully automated Excel imports, all of which we're building on top of it.
Minor updates and fixes
Fixes
- Time intervals could sometimes show alphabetical instead of chronological in dashboards
- Translation fixes
- Made tooltip delays more consistent across the platform
- Fixed some minor spelling mistakes in templates
- Longitude and latitude now supported in location inputs
API Updates
What's New
- GET /imports/v1/imports/{import_id}/ai-entry-measurements - Get Ai Entry Measurements
- GET /imports/v1/imports/{import_id}/ai-extraction - Get Ai Extraction
- GET /imports/v1/imports/{import_id}/column-mappings/available-columns - Get Available Columns
- GET /imports/v1/imports/{import_id}/column-mappings - Get Column Mappings
- POST /imports/v1/imports/{import_id}/column-mappings - Post Update Column Mappings
- GET /imports/v1/imports/{import_id} - Get Import
- PATCH /imports/v1/imports/{import_id} - Patch Import
- GET /imports/v1/imports/{import_id}/status - Get Import Status
- GET /imports/v1/imports/{import_id}/validation-issues - Get Import Validation Issues
- GET /imports/v1/imports/{import_id}/value-mappings - Get Import Value Mappings
- PUT /imports/v1/imports/{import_id}/value-mappings - Put Import Value Mappings
- GET /imports/v1/imports/{import_id}/mapped-preview - Get Mapped Preview
- GET /imports/v1/imports/{import_id}/original-preview - Get Original Preview
- GET /imports/v1/imports/{import_id}/sheet-mappings - Get Sheet Mappings
- GET /imports/v1/imports - List Imports
- POST /imports/v1/imports - Post Import
- PATCH /imports/v1/imports/{import_id}/sheet-mapping/{sheet_mapping_id} - Patch Sheet Mapping
- POST /imports/v1/imports/{import_id}/sheet-mappings/activate - Post Activate Sheet Mapping
- POST /imports/v1/imports/{import_id}/create-draft - Post Create Draft
- POST /imports/v1/imports/{import_id}/finalize - Post Finalize
- POST /imports/v1/imports/{import_id}/value-mappings/{value_mapping_id}/ai-suggest - Post Import Value Mapping Ai Suggest
- POST /imports/v1/imports/{import_id}/ai-extraction/init - Post Init Ai Extraction
- POST /imports/v1/imports/{import_id}/column-mappings/init - Post Init Column Mappings
- POST /imports/v1/imports/{import_id}/value-mappings/init - Post Init Value Mappings
What's Deleted
None
What's Deprecated
- GET /emission-factors/v1/datasets/{dataset_id}/change-impact - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- GET /emission-factors/v1/emission-factor-values - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- POST /measurements/v1/imports/{import_id}/link-measurements - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- POST /measurements/v1/imports/map-columns - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- POST /value-mappings/v1/value-mappings/batch - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- GET /emission-factors/v1/emission-factors/{emission_factor_id} - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- GET /emission-factors/v1/emission-factors - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- GET /measurements/v1/imports/{import_id} - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- PATCH /measurements/v1/imports/{import_id} - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- GET /measurements/v1/imports/{import_id}/status - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- GET /measurements/v1/imports - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- POST /measurements/v1/imports - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- POST /value-mappings/v1/value-mappings - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- POST /value-mappings/v1/value-mappings/{value_mapping_id}/ai-suggest - Deprecation: 2027-03-16 - Sunset: 2027-06-14
- PUT /value-mappings/v1/value-mappings/{value_mapping_id} - Deprecation: 2027-03-16 - Sunset: 2027-06-14
What's Changed
- GET /emission-factors/v1/datasets/{dataset_id}/change-impact
- GET /emission-factors/v1/emission-factor-values
- Parameters
- Changed parameter:
datasetVersionId_equals(schema:{'title': 'Datasetversionid Equals', 'format': 'uuid', 'exampleSetFlag': False, 'types': ['string']}→{'title': 'Datasetversionid Equals', 'exampleSetFlag': False, 'anyOf': [{'format': 'uuid', 'exampleSetFlag': False, 'types': ['string']}, {'exampleSetFlag': False, 'types': ['null']}]})
- Changed parameter:
- Parameters
- GET /emission-factors/v2/dataset-version-preferences-by-activity/recalculation-status
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json
- Response
- GET /emission-factors/v2/dataset-version-preferences-by-activity
- PUT /emission-factors/v2/dataset-version-preferences-by-activity
- Response
- Changed response: [200] — Successful Response
- Changed body:
application/json
- Response
- POST /measurements/v1/imports/{import_id}/link-measurements
- POST /measurements/v1/imports/map-columns
- DELETE /organizational-units/v1/organizational-units/{organizational_unit_id}
- Response
- Changed response: [403] — Organizational unit cannot be deleted
- Changed body:
application/json - Added property:
exception(string, null, optional)
- Response
- POST /value-mappings/v1/value-mappings/batch
- GET /accounts/v1/users/{user_id}
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Response
- PUT /accounts/v1/users/{user_id}
- Request
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Request
- POST /accounts/v1/users
- Request
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Request
- PUT /accounts/v1/users/{user_id}/activate
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Response
- PUT /accounts/v1/users/{user_id}/cancel-invite
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Response
- PUT /accounts/v1/users/{user_id}/deactivate
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Response
- PUT /accounts/v1/users/{user_id}/send-invite
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Response
- GET /emission-factors/v1/emission-factors/{emission_factor_id}
- GET /emission-factors/v1/emission-factors
- GET /measurements/v1/imports/{import_id}
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
stage(['string']→['string'])- Enum values changed: added
COLUMN_MAPPING_IN_PROGRESS, COLUMN_MAPPING_DONE, SHEET_MAPPING_FAILED, ORIGINAL_PREVIEW_FAILED, AI_EXTRACTION_IN_PROGRESS, VALUE_MAPPING_DONE, FILE_UPLOADED, ORIGINAL_PREVIEW_IN_PROGRESS, COLUMN_MAPPING_FAILED, AI_EXTRACTION_FAILED, VALUE_MAPPING_IN_PROGRESS, SHEET_MAPPING_IN_PROGRESS, ORIGINAL_PREVIEW_DONE, VALUE_MAPPING_FAILED, SHEET_MAPPING_DONE, AI_EXTRACTION_DONE - Description changed
- Enum values changed: added
- Response
- PATCH /measurements/v1/imports/{import_id}
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
stage(['string']→['string'])- Enum values changed: added
COLUMN_MAPPING_IN_PROGRESS, COLUMN_MAPPING_DONE, SHEET_MAPPING_FAILED, ORIGINAL_PREVIEW_FAILED, AI_EXTRACTION_IN_PROGRESS, VALUE_MAPPING_DONE, FILE_UPLOADED, ORIGINAL_PREVIEW_IN_PROGRESS, COLUMN_MAPPING_FAILED, AI_EXTRACTION_FAILED, VALUE_MAPPING_IN_PROGRESS, SHEET_MAPPING_IN_PROGRESS, ORIGINAL_PREVIEW_DONE, VALUE_MAPPING_FAILED, SHEET_MAPPING_DONE, AI_EXTRACTION_DONE - Description changed
- Enum values changed: added
- Response
- GET /measurements/v1/imports/{import_id}/status
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
stage(['string']→['string'])- Enum values changed: added
COLUMN_MAPPING_IN_PROGRESS, COLUMN_MAPPING_DONE, SHEET_MAPPING_FAILED, ORIGINAL_PREVIEW_FAILED, AI_EXTRACTION_IN_PROGRESS, VALUE_MAPPING_DONE, FILE_UPLOADED, ORIGINAL_PREVIEW_IN_PROGRESS, COLUMN_MAPPING_FAILED, AI_EXTRACTION_FAILED, VALUE_MAPPING_IN_PROGRESS, SHEET_MAPPING_IN_PROGRESS, ORIGINAL_PREVIEW_DONE, VALUE_MAPPING_FAILED, SHEET_MAPPING_DONE, AI_EXTRACTION_DONE - Description changed
- Enum values changed: added
- Response
- GET /measurements/v1/imports
- POST /measurements/v1/imports
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
stage(['string']→['string'])- Enum values changed: added
COLUMN_MAPPING_IN_PROGRESS, COLUMN_MAPPING_DONE, SHEET_MAPPING_FAILED, ORIGINAL_PREVIEW_FAILED, AI_EXTRACTION_IN_PROGRESS, VALUE_MAPPING_DONE, FILE_UPLOADED, ORIGINAL_PREVIEW_IN_PROGRESS, COLUMN_MAPPING_FAILED, AI_EXTRACTION_FAILED, VALUE_MAPPING_IN_PROGRESS, SHEET_MAPPING_IN_PROGRESS, ORIGINAL_PREVIEW_DONE, VALUE_MAPPING_FAILED, SHEET_MAPPING_DONE, AI_EXTRACTION_DONE - Description changed
- Enum values changed: added
- Response
- GET /reports/v1/reports/{report_id}
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Response
- PUT /reports/v1/reports/{report_id}
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Response
- POST /reports/v1/reports
- Request
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
language(['string']→['string'])- Enum values changed: added
EN_GB, EN_US - Description changed
- Enum values changed: added
- Request
- POST /value-mappings/v1/value-mappings
- Request
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
FORMULA_TERM_UNIT - Description changed
- Enum values changed: added
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
FORMULA_TERM_UNIT - Description changed
- Enum values changed: added
- Request
- POST /value-mappings/v1/value-mappings/{value_mapping_id}/ai-suggest
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
FORMULA_TERM_UNIT - Description changed
- Enum values changed: added
- Response
- PUT /value-mappings/v1/value-mappings/{value_mapping_id}
- Request
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
FORMULA_TERM_UNIT - Description changed
- Enum values changed: added
- Changed body:
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
field(['string']→['string'])- Enum values changed: added
FORMULA_TERM_UNIT - Description changed
- Enum values changed: added
- Request
- PUT /accounts/v1/users/{user_id}/invite-url
- Response
- Changed response: [200] — Successful Response
- Schema incompatible
- Changed body:
application/json - Changed property type:
user(['object']→['object'])
- Response