Insights

Analytics

The Analytics page shows delivery and engagement for a single campaign or all campaigns at once, scoped to a date range. This page covers what each metric means and how it's calculated.

Analytics page

Picking what you're looking at

  • Campaign selector — defaults to All Campaigns (brand-wide totals) or to the campaign you most recently opened. Pick a single campaign from the dropdown to scope the page to just that campaign.
  • Date range — defaults to the last 7 days. The range applies to every metric on the page.
  • Count mode toggle — “Events” counts every event (so a recipient who taps three different chips contributes three to the chip-tap count). “Unique” counts unique recipients per event type (the same recipient contributes one no matter how many chips they tap). Flip between them to tell whether engagement is broad or concentrated in a few highly active recipients.

Reach metrics

Sent

The number of messages RCSync handed off to the carrier. Includes everything we tried to send, regardless of whether it landed.

Delivered

Messages the carrier confirmed reached a handset. The percentage is delivered / sent × 100. We only show the percentage when sent > 0 — a percentage with no denominator is misleading.

Failed

Messages the carrier rejected (unreachable number, blocked, etc.). Shown as a count and a percentage of sent. A small failure rate is normal; over a few percent points to a problem with the audience list.

Engagement metrics

MetricWhat countsFormula
Open rateRecipients who opened the message — a device open report (RCS), an SMS read receipt, or an email open (tracking pixel).opens / delivered
Engagement rateRecipients who took an action — a link/button click (all channels), a chip tap, or a reply. Opens are tracked separately under Open rate.engaged / delivered
Reply rateRecipients who replied (text reply or chip tap).replies / delivered

The Engagement card breaks the active signals out side by side: Clicks (taps on links and buttons), Chip taps (taps on a quick-reply suggestion), and Replies (free-form text, file, or location messages). Switching the page to count unique recipients deduplicates across these — a recipient who both clicked and replied counts once toward engagement.

Engagement funnel

The funnel shows how recipients move through the stages — Targeted → Sent → Delivered → Opened → Engaged — with the conversion from the previous stage shown beside each band. Targeted is the recipients on your list before the pre-send filter removed opt-outs, invalid numbers, and frequency-capped contacts, so the gap down to Sent is how many were filtered out before delivery. Engaged is any recipient who took an action: a click, a chip tap, or a reply. The funnel follows the Count toggle — in Events mode each stage counts events; in Unique mode it counts distinct recipients, which is the clearer view for reading true drop-off.

Timing

Two timing metrics measure how quickly recipients act after a message reaches them:

  • Time to open — from delivered to the first open.
  • Time to engage — from delivered to the first action (click, chip tap, or reply).

The headline figure is the median — the typical recipient, resistant to a few very-late stragglers. The detail line adds the average, fastest (min), slowest (max), and 95th percentile. The distribution chart buckets time-to-open so you can see whether opens cluster in the first minutes or trail off over hours; its columns tighten automatically to fit the data, so a campaign whose opens all land within a few minutes shows minute-scale columns instead of one tall bar. Opens inferred from a reply (when the device never sent an explicit open) are included.

Cost

The Cost card shows actual spend to date for the current selection: outbound sends plus the inbound replies they generated. Replies — suggestion-reply taps and free-text, file, or location messages — are billed at the same rate the campaign paid to send, since each inbound message carries a cost. Link and button clicks aren't billed: tapping a URL doesn't send a message back. The breakdown splits the total into outbound sends and replies. Per-message rates can be configured below a cent, but this total is shown to the nearest cent, rounded up. If pricing hasn't been configured for your brand, the card shows a dash.

List health

  • Opt-outs — recipients who replied STOP within the window. The percentage is optOuts / delivered. Color-coded muted under 0.5%, amber 0.5%–2%, red 2%+.
  • Engagement — clicks, chip taps, and replies at a glance (see Engagement metrics above). The Reply options table breaks chip taps down by which button was tapped.
  • RCS / SMS split — proportion of the audience that received the RCS message vs. the SMS fallback. A high SMS share usually means your audience contains a lot of non-RCS handsets.

Trends charts

The Trends section has two charts, both covering your selected date range and bucketed in your local time zone (the one set on your profile) rather than UTC:

  • Delivery volume — sent versus delivered, as bars.
  • Engagement over time — opens and interactions as smooth lines. Opt-outs are plotted against a separate scale on the right edge of the chart; they're far smaller in number than opens, so giving them their own axis keeps them readable instead of flattened along the bottom.

When the data covers a short window (up to about two days) the charts bucket by hour, so you can see the shape of a single send; over longer ranges they bucket by day. Use them to spot bursts (a recurring campaign) or compare runs across the window.

Exporting to CSV

The Export CSV button (top right) downloads the raw events behind the page, scoped to the selected campaign and date range. The file is event-grain: one row per event, not one row per recipient or per metric tile. The same recipient typically appears multiple times — once for sent, once for delivered, and once more for any reply or chip tap.

Columns

ColumnDescription
brandBrand display name.
campaign_idStable UUID for the campaign. Use this as your join key — names can change.
campaign_nameDisplay name at the time of export.
run_idUUID of the campaign run that produced this event. Important for recurring campaigns where one campaign has many runs.
run_numberSequential number of the run within the campaign (1, 2, 3…). Easier to read than run_id.
event_typeOne of sent, delivered, failed, opened, click, chip_tapped, text_reply, file_reply, location_reply, opted_out, typing, and — for email — bounced (hard bounce) and complaint (spam report). typing is a fuzzy “is composing” signal and is excluded from the headline engagement metrics.
channelrcs, sms, or email. Tells you which path the message took.
event_timestampWhen the event happened on the recipient side (or carrier side, for sent/delivered/failed). ISO-8601 UTC.
received_atWhen RCSync received notification of the event. ISO-8601 UTC. Use this for ingestion lag analysis.
recipient_hashSHA-256 hash of the phone number. Stable per recipient within a brand. Use it to group events by person without exposing the phone.
idempotency_keyCarrier-supplied dedupe key. Same key across rows means the same underlying event.
postback_dataFor chip_tapped events, the payload value attached to the tapped button (e.g. redeem, later). Empty for other event types.

What you can do with it

  • Unique-recipient counts by event type — group by recipient_hash and event_type in your sheet or notebook. (The page's “Unique” toggle does this for you for the headline metrics; the CSV lets you do it for any slice.)
  • Funnel analysis — for each recipient_hash, check whether delivered was followed by chip_tapped or a reply. Tells you who's engaging.
  • Per-run comparison for recurring campaigns — group by run_number to see whether each run is performing better or worse than the last.
  • Time-of-day analysis — bucket event_timestamp by hour to see when your audience is most likely to engage.
  • Quick-reply breakdown — filter to event_type = chip_tapped and group by postback_data to count taps per option. Useful for surveys and lead routing.
  • Channel mix per recipient — group by recipient_hash and count channel values. Recipients consistently falling back to SMS may not be on RCS-capable devices.
  • Reconciliation — join idempotency_key against your downstream system (CRM, data warehouse) to confirm every event flowed through.