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

# Performance metrics

> Learn how to monitor delivery success and bounce rates.

## What performance metrics measure

Performance metrics focus on the outcome of each attempt to deliver a message. They report three counts:

* `processed`: messages accepted by MailChannels for delivery.
* `delivered`: messages successfully handed off to the recipient's mail server.
* `bounced`: messages the recipient's mail server permanently rejected (hard bounces).

Use these metrics to track delivery success rates, surface bounce patterns, and watch for changes that may indicate
deliverability or reputation issues.

## Example query

The example below requests delivery counts from a chosen start time onward, with the default `interval` (`day`).

<CodeGroup>
  ```bash cURL theme={null}
  #!/usr/bin/env bash
  # Retrieve processed, delivered, and bounced counts from a chosen start time.
    set -u
    : "${MAILCHANNELS_API_KEY:?Set MAILCHANNELS_API_KEY before running}"

  curl -G "https://api.mailchannels.net/tx/v1/metrics/performance" \
    -H "X-Api-Key: $MAILCHANNELS_API_KEY" \
    --data-urlencode "start_time=2026-01-01T00:00:00Z"
  ```

  ```javascript Node.js theme={null}
  import { MailChannels } from "mailchannels-sdk";

  const { MAILCHANNELS_API_KEY } = process.env;
  if (!MAILCHANNELS_API_KEY) throw new Error("Set MAILCHANNELS_API_KEY before running");

  const mailchannels = new MailChannels(MAILCHANNELS_API_KEY);

  const { data, error } = await mailchannels.metrics.performance({
    startTime: "2026-01-01T00:00:00Z",
  });

  if (error) {
    console.error("Get performance metrics failed:", error);
    process.exit(1);
  }
  console.log(data);
  ```

  ```python Python theme={null}
  import os
  import sys

  import mailchannels

  if not os.environ.get("MAILCHANNELS_API_KEY"):
      sys.exit("Set MAILCHANNELS_API_KEY before running")

  # Retrieve processed, delivered, and bounced counts from a chosen start time.
  response = mailchannels.Metrics.performance(
      start_time="2026-01-01T00:00:00Z",
  )

  print(response)
  ```

  ```php PHP theme={null}
  <?php

  require_once __DIR__ . '/vendor/autoload.php';

  use MailChannels\Client;

  $api_key = getenv('MAILCHANNELS_API_KEY') or exit("Error: MAILCHANNELS_API_KEY is not set\n");

  $client = new Client(apiKey: $api_key);

  // Retrieve processed, delivered, and bounced counts from a chosen start time.
  $response = $client->metrics->performance(
      startTime: '2026-01-01T00:00:00Z',
  );

  print_r($response->toArray());
  ```
</CodeGroup>

<Tip>
  For a similar view that reports messages dropped before delivery instead of bounces, see [volume metrics](/email-api/metrics-volume).
</Tip>
