---
title: "Get transactional email metrics"
method: GET
path: "/transactional/{idOrSlug}/stats"
tags: ["Analytics"]
---

# Get transactional email metrics

`GET /transactional/{idOrSlug}/stats`

Backward-compatible alias for `GET /metrics/transactional/{idOrSlug}`.

## Path parameters

- `idOrSlug` string, required

## Query parameters

- `period` '1h' | '24h' | '7d' | '30d' | '90d'
- `start` string, date-time
- `end` string, date-time
- `includeMachineEngagement` boolean

## Response `200`

Transactional email metrics

- TransactionalMetricsResponse
  - `success` boolean
  - `period` string
  - `start` string, date-time
  - `end` string, date-time
  - `transactional` object
    - `id` string
    - `name` string
    - `slug` string
  - `stats` object — Unified engagement metrics returned by analytics endpoints. When a period or start/end filter is applied these are a funnel over the sends made inside that window, not a log of events inside it: every delivery, engagement, and reply count is attributed to one of those sends, including activity that arrives after the window closes, so opened <= delivered <= sent always holds and no rate can exceed 100%. conversions and revenueCents are the exception and use the goal's own last-touch attribution window. Open and click metrics exclude detected scanner, preview, and tracked asset events unless includeMachineEngagement is true.
    - `sent` integer
    - `delivered` integer — Capped at sent count
    - `bounced` integer — Unique bounces (deduplicated by email send)
    - `opened` integer — Unique opens (deduplicated by email send)
    - `clicked` integer — Unique clicks (deduplicated by email send)
    - `replies` integer — Inbound replies captured for delivered emails
    - `unsubscribed` integer
    - `deliveryRate` number — Percentage (0-100)
    - `bounceRate` number — Percentage (0-100), calculated from sent emails
    - `rateDenominator` integer — The number every engagement rate divides by: delivered, falling back to sent when no delivery events were recorded, and 0 when nothing was sent
    - `rateDenominatorBasis` 'delivered' | 'sent' | 'none' — Which field rateDenominator was taken from
    - `openRate` number — Percentage (0-100), opened / rateDenominator
    - `clickRate` number — Percentage (0-100), clicked / rateDenominator
    - `replyRate` number — Percentage (0-100), replies / rateDenominator
    - `unsubscribeRate` number — Percentage (0-100), unsubscribed / rateDenominator
    - `conversions` integer — Attributed goal conversions (last-touch, 24h window). Only returned by campaign and sequence metrics endpoints.
    - `revenueCents` integer — Attributed revenue in cents from purchase events (saas.purchase and ecommerce.order_placed). Only returned by campaign and sequence metrics endpoints.
    - `complaints` integer
    - `complaintRate` number, float
  - `complaints` object
    - `count` integer
    - `rate` number, float
  - `clickedLinks` object[]
    - `url` string, uri
    - `clicks` integer
    - `percentage` number, float
  - `bounceBreakdown` object
    - `permanent` integer
    - `transient` integer
    - `undetermined` integer
    - `subtypes` object[]
      - `type` 'Permanent' | 'Transient' | 'Undetermined'
      - `subType` string, nullable
      - `count` integer
  - `engagementBreakdown` object
    - `human` object
      - `opens` integer
      - `clicks` integer
    - `machine` object
      - `opens` integer
      - `clicks` integer

## Other responses

- `404` — Transactional email not found

---

[API](https://skmtc.net/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.net/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/versions/af1cf9620482/schema)
