# Message History

## Overview

Message History is a single, searchable archive of every message your workspace has sent or received — one place to see all your WhatsApp activity. Open it from the Message History page.

Instead of hunting through the inbox, campaigns, and automations separately, this page merges them all into one timeline, then presents them with summary cards, charts, filters, a paginated table, and a side detail panel.

> Read-only overview. Message History is for looking things up and reporting. To act on a specific message (resend, manage, reply), open its source page — the Team Inbox, Campaigns, Broadcasts, or the conversation thread. This combined view doesn't resend individual rows, because the right action depends on where the message came from.

## Where the Messages Come From

The timeline merges six sources. The Type column tags each row with a small colored pill so you can tell them apart at a glance.

Source | What it contributes
--- | ---
Team inbox | One-to-one inbound and outbound conversation messages (the bubbles from Team Inbox / Chat).
Auto-reply | Keyword auto-reply fires (see Auto Reply).
Campaign | Bulk campaign sends.
Broadcast | Broadcast list sends.
Scheduled | Scheduled / recurring message jobs.
Direct send | Legacy direct (one-off) sends.

Whichever source a row comes from, it shows up in the same table row, contributes to the same KPI numbers and charts, and exports to the same CSV — so you get a true workspace-wide picture without stitching reports together.

## Who Can Access It

Message History is a workspace-wide reporting view, so it's available to managers, admins, and owners. It always shows data for your currently active workspace.

## What's on the Page

- KPI strip — headline numbers for the selected date range: total messages, sent, received, failed, and the average first-response time, each with a percentage change versus the previous equal-length period.
- Volume chart — messages over time, split into sent / received / failed, with hourly, daily, or weekly buckets.
- Direction donut — the sent vs. received vs. failed split at a glance.
- Type mix chart — how your messages break down across plain text, auto-reply, campaign, broadcast, scheduled, and media.
- Top conversations — the inbox contacts you've exchanged the most messages with.
- Message table — the paginated list of individual messages (25 per page), with a side detail panel.

The KPI numbers stay tied to the date range so they don't jump around when you change other filters; the charts and table reflect your active filters.

## Filters

Use the filter bar to narrow the archive:

Filter | Options
--- | ---
Date range | Last 24 hours, 7 days, 30 days (the default), or 90 days.
Direction | All, Outgoing, Incoming, or Failed (failed outbound only).
Type | All, or a specific type — template, image, video, document, location, plain text, or a source pill (auto-reply, campaign, broadcast, scheduled).
Device | Limit to messages for a specific connected number.
Search | Free-text search across the message body, phone number, contact name, and message id.
Bucket | For the volume chart: hourly, daily, or weekly grouping.

> Why 30 days by default? Operators often look up sends from a few weeks back. The default range is 30 days so older campaign, broadcast, and scheduled sends don't silently disappear (the earlier 7-day default hid anything more than a week old) — switch to a shorter or longer window any time.

## The Message Table

Each row shows the contact (name or number, falling back to the source label), a snippet of the message, its direction, a status badge, the message type with a colored source pill, a media icon where relevant, and the time. Click a row to open the detail panel, which shows the full body, source, phone, status, language, timestamps, a small timeline, and the originating conversation id where available.

### Status Meanings

Inbound messages are marked Inbound. Outbound rows carry the message's delivery state, color-coded:

Status | Meaning | Badge
--- | --- | ---
read | The recipient opened it (blue ticks). | Green
delivered / sent | Handed to / accepted by WhatsApp. | Green
fired / paid | Source-specific success (an auto-reply fired; a commerce send was paid). | Green
scheduled / pending | Queued to send later, or not yet dispatched. | Grey
failed / error | The provider rejected it; the reason shows in the detail panel. | Coral / red

## Exporting to CSV

Click Export to download the current date range as a CSV file, with one row per message and these columns, in order:

Column | Contents
--- | ---
`id` | The message id (prefixed by source).
`source` | The human source label (Team inbox, Auto-reply, …).
`when` | ISO-8601 timestamp.
`direction` | `in` or `out`.
`phone` | The contact's number.
`contact` | The contact name where known.
`status` | The delivery status.
`type` | The classified type (text / template / image / auto_reply / campaign / …).
`body` | The message text.

The file is named with a timestamp (`message-history-YYYYMMDD-HHMMSS.csv`) so downloads stay organized. The export covers the full date range (not just the page you're viewing).

> Spreadsheet safety. The export escapes any cell whose text begins with a character spreadsheets treat as a formula (`=`, `+`, `-`, `@`, tab, or carriage return) by prefixing it with a single quote — so opening the file in Excel or Sheets can't run a hidden command embedded in a message body.

## A Note on Archiving & Acting on Rows

Because Message History is a combined view across many sources, you can't archive, delete, or resend individual messages from here — the page will point you to the source page instead. To manage a specific message, open its source: the Team Inbox or Chat thread for conversations, the Campaigns page for campaign sends, or Broadcasts / Scheduled for those — that's where the controls (retry, resend, archive) live.