---
title: "Performance of DMs you sent by hand"
method: GET
path: "/creator-messages/outbound-metrics"
tags: ["Creator Messages"]
---

# Performance of DMs you sent by hand

`GET /creator-messages/outbound-metrics`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/creator-messages/outbound-metrics`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

How the DMs your team sent **by hand** performed — from the portal inbox, the public API, or an MCP agent. These carry no automation, so they appear in no automation rollup; `sent_by_source` splits them by where they came from.

`creators_messaged` counts distinct creators across sources, so it is not the sum of `sent_by_source`.

**`open_rate` and `click_rate` are always null, and null means not measured — not zero.** TikTok reports one read position per conversation, read at the moment a check runs, and those checks are scheduled around automation sends, so they cannot say whether a later hand-sent DM was seen. TikTok exposes no click signal for DM content at all. Email automations do have both: see `GET /automations/email/{email_automation_id}`.

Pass `include_gmv=true` for affiliate GMV from videos those creators posted for you within 30 days of your first DM to them in the window. It is off by default because it is much slower than the counts, and `gmv_attributed_creators` says how many of the messaged creators it actually covers. Single-shop only.

## Query parameters

- `include_gmv` boolean: Also attribute GMV to the messaged creators. Off by default: it reads the shop's video GMV per creator, which is far slower than counting sends.

## Response `200`

Successful Response

- ManualDmMetricsResponse: Hand-sent DM performance for one shop.
  - `data` ManualDmMetrics, required: Performance of DMs the brand sent by hand rather than via an automation. These messages carry no automation_id, so nothing in the automation rollups covers them. Counts are for the last `window_days`.
    - `window_days` integer, required: Length of the trailing window, in days.
    - `messages_sent` integer, required: Hand-sent DMs in the window, across all sources.
    - `sent_by_source` ManualDmSentBySource, required: Hand-sent DM counts split by the surface they were sent from.
      - `inbox` integer: Sent by a person from the brand portal inbox.
      - `api` integer: Sent through the public API.
      - `mcp` integer: Sent by an agent through MCP.
    - `creators_messaged` integer, required: Distinct creators reached. Counted across sources, so it is not the sum of the per-source figures — one creator messaged from both the inbox and the API counts once.
    - `open_rate` number, nullable: Always null: open rate is not available for hand-sent DMs. TikTok reports one read position per conversation, observed at the moment a check runs, and those checks are scheduled against automation sends — so they predate a manual send and cannot tell whether it was read. Null means not measured; do not read it as zero.
    - `click_rate` number, nullable: Always null: TikTok exposes no click or tap signal for DM content, so no clickthrough rate exists for any DM, automated or not. Email automations do have one.
    - `gmv` number, nullable: Affiliate GMV from videos the messaged creators posted for this shop within 30 days of the first hand-sent DM they received in the window. Null unless include_gmv=true. Summed over distinct videos, so a creator messaged in several conversations is not counted twice.
    - `gmv_attributed_creators` integer, nullable: How many of `creators_messaged` had at least one qualifying video. The rest posted nothing for this shop in their window, so `gmv` covers this many creators, not all of them.

## Other responses

- `422`: Validation Error

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-31** `a905b640cf36`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/creator-messages/outbound-metrics/get.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
