Skip to content

Carbon Emissions: Track Cloud CO2e Across AWS, Azure and GCP

The Carbon page shows monthly emissions from your cloud accounts in kilograms of CO2 equivalent (kgCO2e), next to the spend that produced them.

Xplorr does not model emissions. It reads the carbon data each provider publishes itself, so the numbers match what your provider reports. If a provider has no data for a month, that month stays empty rather than being filled with an estimate.

Carbon reporting is off until an admin turns it on for a cloud account, and each provider needs its own export or permission set up first.

ProviderSourceWhat you set up
AWSBilling Data Exports, carbon emissions tableAn export in CSV format to an S3 bucket Xplorr can read
AzureMicrosoft Carbon emission reports APIThe Carbon Optimization Reader role on each subscription
GCPCarbon Footprint export to BigQueryThe export, plus BigQuery read access

Every value is kilograms of CO2e. AWS reports metric tons and Xplorr converts on ingest, so all three providers end up in the same unit.

ScopeMeaning
Scope 1Direct emissions
Scope 2Emissions from purchased electricity
Scope 3Supply chain emissions

Scope 2 can be reported two ways, and you choose which with the selector at the top of the page:

  • Market based, the default. Reflects the energy contracts the provider has bought.
  • Location based. Reflects the average grid intensity where the workload ran.

The total shown is scope 1 plus scope 2 on the selected basis plus scope 3. Not every provider publishes both scope 2 bases, so switching the basis can change which accounts contribute.

  1. In the AWS console, open Billing and Cost Management > Data Exports and create an export using the carbon emissions table.
  2. Choose CSV format. Xplorr does not read Parquet exports, and will tell you so if it finds one.
  3. Send the export to an S3 bucket.
  4. Make sure the credentials Xplorr already uses for that account have s3:ListBucket and s3:GetObject on the bucket.
  5. In Xplorr, open Carbon > Setup, find the account, and enter the S3 bucket, an optional Prefix such as carbon/, and the Bucket region (defaults to us-east-1).
  6. Click Save, then Enable.
  1. Assign the Carbon Optimization Reader role to the Xplorr service principal on each subscription you want covered.
  2. In Xplorr, open Carbon > Setup and find the account.
  3. Leave Subscriptions blank to use the subscription already connected, or enter a comma separated list of subscription IDs. At most 100.
  4. Click Save, then Enable.
  1. In the Google Cloud console, open Carbon Footprint and choose Export to BigQuery.
  2. Grant the Xplorr service account roles/bigquery.dataViewer and roles/bigquery.jobUser.
  3. In Xplorr, open Carbon > Setup and enter the BigQuery table as project.dataset.table.
  4. Click Save, then Enable.

Providers publish the previous month part way through the next one, so carbon data always lags cost data by weeks.

  • A monthly job runs on the 16th at 05:00 UTC.
  • Each run refetches the last three complete months and replaces them, so late corrections from a provider are picked up rather than frozen at whatever landed first.
  • The first export can take up to 24 hours to appear after you enable it.

Admins can also click Sync on an enabled account to fetch immediately. Manual carbon syncs are limited to six per hour per user.

The Overview tab shows, for the selected window of 6, 12 or 24 months:

  • Total emissions, covering scope 1, scope 2 on the selected basis, and scope 3
  • Scope 2 and Scope 3 totals
  • Carbon intensity, emissions per unit of billed cost
  • Emissions by month, stacked by scope
  • By service and By region, the 15 largest in each
  • Cost and intensity by month, with emissions, billed cost and kg per unit of currency side by side

Carbon intensity is the most useful number to watch over time. Total emissions rising while intensity falls usually means you are growing, not getting dirtier.

The cost figures paired with emissions exclude the current month, because a partial month against a complete month would make intensity meaningless.

“Carbon reporting is not connected”

No account has carbon enabled yet. Open the Setup tab and enable at least one.

“Connected, but no data yet”

Expected right after setup. Providers publish part way through the following month, and the first export can take up to 24 hours. The monthly job refetches the last three months, so it will fill in.

“Carbon export is in Parquet format. Recreate the export with CSV format.”

AWS Data Exports defaults can produce Parquet. Recreate the export choosing CSV.

Azure reports that carbon data was denied

The service principal is missing the Carbon Optimization Reader role on the subscription. Assign it and sync again.

A month is missing for one provider but not others

Providers publish on different timetables. Wait for the next monthly run rather than treating a gap as an error.

Are these numbers estimated? No. Every figure comes from the provider’s own carbon reporting. Xplorr converts units and adds them up.

Why does the current month show no emissions? Providers do not publish a month until after it ends. The current month fills in during the following month.

Why did last month’s number change? Providers revise their published data. Each run refetches the last three months, so Xplorr follows those revisions instead of keeping a stale figure.

Can I see emissions per team or per service? Per service and per region, yes, on the Overview tab. Emissions are not allocated by tag.

Who can change carbon settings? Admins. Anyone in the organization can read the Carbon page for accounts they have access to.