> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sustainability and ESG reporting

> Estimate the carbon footprint (CO2e) of your outbound communications per channel, and export a self-describing CSV for ESG reports and procurement questionnaires.

# Sustainability and ESG reporting

Enterprise procurement and ESG teams increasingly ask vendors for the carbon footprint of the services they consume. The **Sustainability** page, under **Insights → Sustainability**, estimates the CO2 equivalent (CO2e) of your outbound communications per channel for a selected window, and exports the same figures as a CSV you can attach to an ESG report or procurement questionnaire.

Two API endpoints back the page, so the same report can feed an automated pipeline:

* `GET /analytics/carbon` — per-channel CO2e estimate as JSON, for the selected window.
* `GET /analytics/carbon/export` — the same report rendered as a downloadable CSV, with the period and methodology stamped into the file header.

## What the dashboard estimates

The report converts the usage Orbit already records for your account — outbound message sends and outbound voice minutes — into an per-channel emissions estimate. Only outbound traffic is counted: the footprint the platform causes on your behalf. Inbound replies are excluded.

Each request returns, for the resolved window:

* A `period.start` and `period.end` describing exactly which range the figures cover.
* One line per channel used in the window (SMS, WhatsApp, RCS, email, voice, and so on), with its unit basis, quantity, applied factor, and resulting grams/kilograms CO2e.
* Account-wide totals: total messages, total voice minutes, and total CO2e in grams and kilograms.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/analytics/carbon?days=30" \
  -H "X-API-Key: $ORBIT_API_KEY"
```

**Response — 200 OK**

```json theme={null}
{
  "data": {
    "period": { "start": "2026-07-25T00:00:00.000Z", "end": "2026-08-24T00:00:00.000Z" },
    "factors_version": "2026-06-orbit-v1",
    "disclaimer": "Estimated CO2e figures for indicative ESG reporting. Derived from published per-message and per-minute emission factors applied to your outbound usage; not a certified carbon audit. Factor table and version are included so the estimates can be independently reproduced.",
    "channels": [
      {
        "channel": "sms",
        "basis": "segment",
        "units": 410000,
        "messages": 390000,
        "factor_g_co2e_per_unit": 0.014,
        "source": "Berners-Lee, How Bad Are Bananas? (~0.014 g CO2e / SMS segment)",
        "co2e_grams": 5740,
        "co2e_kg": 5.74
      },
      {
        "channel": "whatsapp",
        "basis": "message",
        "units": 85000,
        "messages": 85000,
        "factor_g_co2e_per_unit": 0.02,
        "source": "OTT/IP message estimate (data-bearing payload over IP)",
        "co2e_grams": 1700,
        "co2e_kg": 1.7
      },
      {
        "channel": "voice",
        "basis": "minute",
        "units": 1240,
        "messages": 310,
        "factor_g_co2e_per_unit": 0.3,
        "source": "VoIP transport estimate (~0.3 g CO2e / connected minute)",
        "co2e_grams": 372,
        "co2e_kg": 0.372
      }
    ],
    "totals": {
      "co2e_grams": 7812,
      "co2e_kg": 7.812,
      "total_messages": 475000,
      "total_voice_minutes": 1240
    }
  },
  "meta": { "request_id": "req_…", "timestamp": "2026-08-24T09:41:13.000Z" }
}
```

Channels with zero outbound volume in the window are omitted, so the breakdown only shows surfaces you actually used.

## Methodology and data provenance

Figures are order-of-magnitude estimates, labelled as such everywhere they appear — this is not a certified carbon audit. The report applies published per-unit emission factors to your usage, and every line carries the factor it used plus its provenance, so your sustainability team can audit (or override) the coefficients:

* **SMS** — ≈ 0.014 g CO2e per segment (Berners-Lee, *How Bad Are Bananas?*). Applied per segment, because a concatenated SMS is transmitted as N independent 160-character segments.
* **Short transactional email** — ≈ 0.3 g CO2e per message (the same source's short-email figure).
* **OTT / IP messaging** (WhatsApp, RCS, Viber, Messenger, Telegram, push) — ≈ 0.02 g CO2e per message, reflecting the data-bearing payload carried over IP datacenter relay.
* **Voice** — ≈ 0.3 g CO2e per connected minute, a conservative midpoint of published mobile-call transport ranges.

A channel not yet covered by the factor table still counts, at the generic IP-message factor, so a new channel is never silently dropped from the footprint. Every report stamps a `factors_version`, so an exported figure is reproducible against a known factor table and reconcilable later.

## Reading the dashboard

Open **Insights → Sustainability**. The page is limited to owner, admin, developer, and billing roles, and shows:

* **Headline tiles** — total CO2e in kilograms, the same estimate in grams, and the factor-set version used to produce the figures.
* **Emissions by channel** — a table sorted by total CO2e with each channel's quantity (messages or voice minutes), the per-unit factor applied, and the resulting total.

The date-range picker scopes the window: pick a preset (24h, 7d, 30d, 90d, 12m) or a custom start/end range — a single calendar day is a valid custom range. When the window has no outbound activity, the page shows an empty state instead of zero rows; if the report fails to load, use **Retry** to refetch it. While the tiles and table load, placeholder skeletons appear in their place.

## Export for ESG / procurement

The **Download CSV** button on the page — or a direct API call — produces a self-describing CSV you can attach to a sustainability questionnaire or hand to procurement. The leading `#` comment lines carry the period, factor-set version, and estimation disclaimer, so the file stands on its own when an auditor opens it; spreadsheet importers ignore `#` lines when parsing data.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/analytics/carbon/export?start_date=2026-01-01&end_date=2026-01-31" \
  -H "X-API-Key: $ORBIT_API_KEY" \
  -o carbon-report.csv
```

```text theme={null}
# Orbit CPaaS — estimated CO2e sustainability report
# Period: 2026-01-01 to 2026-01-31
# Methodology version: 2026-06-orbit-v1
# Estimated CO2e figures for indicative ESG reporting; not a certified carbon audit.
channel,basis,units,messages_or_calls,factor_g_co2e_per_unit,co2e_grams,co2e_kg
sms,segment,410000,390000,0.014,5740,5.74
whatsapp,message,85000,85000,0.02,1700,1.7
voice,minute,1240,310,0.3,372,0.372
TOTAL,,,475310,,7812,7.812
```

## Window, bounds, and estimation caveats

Scope either endpoint with `start_date` / `end_date` (calendar dates or ISO datetimes), or a rolling `?days=N` lookback — the same date-range contract as every other analytics surface. Omitted parameters default to a 30-day rolling window. A lookback cap rejects ranges beyond the maximum allowed lookback with a 422, and a `start_date` later than `end_date` fails validation with the same status.

Keep the estimation caveats in view when you use the figures:

* These are indicative estimates for ESG reporting, not a certified carbon audit. State the factor set and version alongside the figures in any external report.
* Figures cover only the outbound communications footprint the platform causes on your behalf — they are not your organisation's full Scope 3.
* SMS is estimated per segment; where a provider does not report segmentation, the message count is used instead, so long multi-part sends from those providers may be undercounted. Long e-mail with attachments is classed as a short transactional email for the same reason — treat email-heavy accounts as estimates at the conservative end.
