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

# Messaging reports

> Review volume, human response, response times, tags, and topics.

export const Availability = ({lang = 'es', plan, addon, permission, route, status}) => {
  const L = lang === 'en' ? {
    plan: 'Plan',
    addon: 'Add-on',
    permission: 'Permission',
    route: 'Where',
    status: 'Status',
    addonNote: 'enabled on request',
    allPlans: 'All plans',
    beta: 'Beta',
    nuevo: 'New',
    soon: 'Coming soon'
  } : {
    plan: 'Plan',
    addon: 'Add-on',
    permission: 'Permiso',
    route: 'Dónde',
    status: 'Estado',
    addonNote: 'se activa a pedido',
    allPlans: 'Todos los planes',
    beta: 'Beta',
    nuevo: 'Nuevo',
    soon: 'Próximamente'
  };
  const items = [];
  if (plan) items.push([L.plan, plan]);
  if (addon) items.push([L.addon, `${addon} · ${L.addonNote}`]);
  if (permission) items.push([L.permission, permission]);
  if (route) items.push([L.route, route]);
  if (status) items.push([L.status, L[status] || status]);
  return <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '6px 22px',
    padding: '12px 16px',
    margin: '4px 0 24px',
    border: '1px solid rgba(2, 82, 255, 0.28)',
    borderLeft: '3px solid #0252ff',
    borderRadius: '8px',
    background: 'rgba(2, 82, 255, 0.05)',
    fontSize: '13.5px',
    lineHeight: '1.5'
  }}>
      {items.map(([k, v]) => <div key={k} style={{
    display: 'flex',
    gap: '6px',
    alignItems: 'baseline'
  }}>
          <span style={{
    fontSize: '10.5px',
    fontWeight: 600,
    letterSpacing: '0.07em',
    textTransform: 'uppercase',
    opacity: 0.65
  }}>{k}</span>
          <span style={{
    fontWeight: 500
  }}>{v}</span>
        </div>)}
    </div>;
};

<Availability lang="en" route="Reports → Messaging → View details" permission="reports.read" />

Messaging widgets appear when the organization has inbox enabled. Add them through **Customize → Add widget**, then use **View details** for tables and **XLSX** export.

| Widget                  | What to inspect                                                       |
| ----------------------- | --------------------------------------------------------------------- |
| Messaging overview      | Conversations, messages, AI/human handling, and channel distribution. |
| Human agent performance | Handled, assigned, closed, escalated, and unanswered conversations.   |
| Response times          | Mean, median, p90, and response-time extremes.                        |
| Conversation tags       | Inbox tag classification and applications within the range.           |
| Conversation topics     | Fixed categories based on the first substantive message.              |

## Interpret the numbers

* **Handled** means the agent sent at least one message. They may have handled conversations that were never assigned to them.
* **Response rate** divides handled by assigned and can exceed 100%. It is not the percentage of customers replying to a campaign.
* **Without response** identifies assigned conversations whose last message came from the customer.
* **Response time** measures the interval between a customer message and an agent reply. Gaps over 24 hours are excluded. Averages are weighted by response count.
* **Waiting for a response now** is a live figure, unaffected by the historical range. The pending-conversation detail respects your role’s scope.

Use the same time zone and range when comparing reports. Messaging’s hourly distribution uses the report time zone. For tags, distinguish tags on conversations active in the range from tag applications that occurred within the range.

## Investigate a change

Check channel and dates first, then agent details. If waiting increases, inspect pending conversations before attributing it to volume or performance. Preserve the filters with the exported file.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Why is the rate over 100%?">
    The agent replied to conversations not assigned to them, so handled can exceed assigned.
  </Accordion>

  <Accordion title="Why don’t pending counts change with the date?">
    Waiting for a response now describes the current situation.
  </Accordion>

  <Accordion title="Are topics my tags?">
    No. Topics are fixed classification categories; inbox tags are managed separately.
  </Accordion>
</AccordionGroup>

## See also

* [Inbox](/en/messages/inbox)
* [Dashboard](/en/reports/dashboard)
