Weekly WhatsApp broadcast performance report in Slack

By General Input

Every Monday, see which WhatsApp campaigns landed, which ones failed, and what to fix next, with a running history that makes the report smarter each week.

Integrations

  • Kapso
  • Google Sheets
  • Slack Bot

Type

Agentic Task

Categories

  • Marketing
  • Operations

Every Monday at 9am, build me a plain-English report on how last week's WhatsApp broadcast campaigns performed, log the numbers so they accumulate over time, and post the summary to Slack.

Start in Kapso. Use List Broadcasts to pull recent broadcast campaigns, which come back most recent first, and keep the ones that finished in the last seven days. Kapso platform list endpoints are page paginated with page and per_page, so page through the results until you have covered the whole seven day window rather than assuming the first page is enough. If a broadcast has no clear completion timestamp, fall back to whatever send or update timestamp is available, and if you still cannot confidently place it in time, leave it out of the rates and note it as skipped.

For each qualifying campaign, use Kapso's List Recipients to read per-recipient delivery status. Page through every page of recipients using page and per_page, because a campaign with a large recipient list will otherwise give you rates computed from a partial sample, which is worse than no number at all. Count recipients by status and compute the delivered rate, read rate, and failed rate as a share of the recipients you actually retrieved. Keep the raw counts next to the percentages so the figures can be audited later.

Before writing anything new, use Google Sheets Get Values to read the existing history sheet, and compute a trailing average failure rate from the campaigns already logged there. That prior history, not this week's data, is the baseline you compare against. If the sheet is empty or has only a header row, skip the comparison for this run, say plainly in the Slack message that the baseline is still building, and carry on.

Then use Google Sheets Append Values to append one row per campaign to the same sheet, so the history grows week over week. Each row should carry the run date, the campaign name and id, the date it finished, the total recipients counted, the delivered, read, and failed counts, and the delivered, read, and failed rates. If the sheet has no header row yet, write one first so the history stays readable.

Finally, use Slack Bot's Send a Message to post the summary. Rank the campaigns by engagement, using read rate as the primary signal and delivered rate as the tiebreaker. Call out any campaign whose failure rate is meaningfully worse than the trailing average, and treat that as a failure rate at least 1.5 times the trailing average and at least 2 percentage points above it, so that a very low baseline does not trigger false alarms every week. When you flag one, give both its rate and the baseline rate so the comparison is visible. Close with a short set of concrete suggestions for what to change next time, grounded in what the numbers actually show rather than generic advice.

Kapso marks its broadcasts API as alpha and subject to change, so field names and availability may shift under you. Never let one missing or renamed field fail the whole run. If a recipient status field is missing, treat those recipients as unknown, exclude them from the rate denominators rather than counting them as failures, and report how many were unknown. If a single campaign cannot be read at all, skip it, keep processing the rest, and list what was skipped and why at the bottom of the Slack message. Only report a hard failure if nothing at all could be retrieved.

If no campaigns finished in the last seven days, still post a short Slack message saying nothing went out that week, rather than staying silent. Write the whole report for a marketing lead rather than an engineer: no field names, no status codes, just what happened, what stands out, and what to do about it.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board