Skip to main content
GET
Broadcast Analytics
Retrieve broadcast analytics for your organization. Supports individual broadcast deep-dives (with per-button tracking, opt-out detection, and revenue attribution) or overall date-range aggregations.

Two Modes

The endpoint supports two query modes based on which parameters you provide:

Individual Broadcast Analytics

Pass a broadcast_id to get detailed metrics for a single broadcast, including delivery stats, per-button click tracking, opt-out detection, and Shopify revenue attribution.

Response Fields

All fields are inside data.

Per-Button Tracking

Every quick-reply button on the template is tracked individually in buttonAnalytics.allButtons. A click is a reply from one of the broadcast’s recipients, within 48 hours of the send, whose text is exactly the button’s text (case-insensitive). conversionRate is clicks as a percentage of delivered messages:
When the template has a URL button that uses a FlowIQ short link, linkAnalytics.linkType is REDIRECT_LINK and totalClicks / clickThroughRate (clicks ÷ delivered) count the clicks on that link. For a plain URL button, linkType is NORMAL_LINK, isTrackable is false, totalClicks and clickThroughRate are null, and note reads “Direct URL - clicks not trackable”.

Opt-Out Detection

A reply within 48 hours of the broadcast counts as an opt-out when the whole message (trimmed, case-insensitive) is one of these keywords. Opt-outs appear in conversionFunnel.optOuts and customerResponses.breakdown.optOuts.

Broadcasts Without Analytics

If the broadcast_id doesn’t belong to your organization, or the broadcast predates FlowIQ’s structured template format, the response is still 200 but data carries an error instead of the fields above:
Check for data.error before reading data.deliveryStats.

Revenue Attribution

Revenue is automatically attributed by tracing the broadcast’s shortcode through to Shopify orders:
  1. Broadcast button parameter contains a shortcode
  2. Shortcode resolves to a redirect URL with a utm_campaign parameter
  3. Shopify orders with utm_source=whatsapp and a matching utm_campaign are summed
The utmCampaigns array breaks down revenue per UTM variant, so you can see exactly how much came from the main link vs the “View More” button (_vm suffix). Each order also includes its own utmCampaign field.
Revenue attribution also matches UTM campaign suffix variants: _viewmore, _view_more, and _vm (case-insensitive). This captures orders from “View More” button clicks on the same campaign.

Overall Broadcast Analytics

Pass start_date and end_date (YYYY-MM-DD) to get aggregated analytics across all broadcasts in the date range. Both days are included in full and read in UTC (end_date=2026-03-31 covers everything up to 23:59:59 UTC on 31 March). An end_date before start_date returns a 400.

Response Fields


POST Method

The same analytics are also available via POST, with parameters in the request body instead of query string:

Integration Example


Revenue Attribution

Revenue attribution requires your broadcast template to use a FlowIQ shortcode link (via URL redirects) with a utm_campaign parameter, and your Shopify store to be connected. Orders are matched where utm_source=whatsapp in the landing site URL.

Authorizations

Authorization
string
header
required

Your FlowIQ API key (from Settings → Profile → API Keys), sent as a bearer token. Format: Bearer fiq_YOUR_API_KEY

Query Parameters

broadcast_id
string<uuid>

UUID of a specific broadcast to get detailed analytics for. If provided, start_date and end_date are ignored.

start_date
string<date>

First day for overall analytics, YYYY-MM-DD (inclusive, from 00:00 UTC). Required when broadcast_id is not provided.

end_date
string<date>

Last day for overall analytics, YYYY-MM-DD (inclusive, to 23:59:59 UTC). Must not be before start_date. Required when broadcast_id is not provided.

Response

Analytics data returned successfully

success
boolean
Example:

true

data
object

Analytics data. Individual mode: broadcastDetails, deliveryStats, conversionFunnel, buttonAnalytics, linkAnalytics, customerResponses, revenue, version (or error when the broadcast has no analytics). Overall mode: overallStats, campaignPerformance, timeSeriesData, templateAnalytics, errorAnalysis.