Weekly push notification performance review in Slack

Every Monday at 8am, get a plain-English breakdown of which push notifications won last week, why they won, and what to send next.

Agentic Task
OneSignalSlackGoogle SheetsMarketingOperationsAI ReportsDaily Digests
PromptCreate

Every Monday at 8am, write my weekly push notification performance review from OneSignal, post it into Slack, and log the headline numbers to Google Sheets so a trend history builds up over time. Use a cron trigger set to Monday 08:00 in my timezone.

Start with the OneSignal View Messages operation to list recent messages along with their delivery stats and config. Cover a 14 day window: the current week is the 7 days ending yesterday, and the previous week is the 7 days before that. Bucket every message into one of those two weeks by its send time and discard anything older. Remember that View Messages returns at most 50 messages per call, so page through with limit and offset if I send more than that.

Then use the OneSignal View Message operation on individual messages to get the detailed outcome and delivery stats. Important pacing rule: OneSignal throttles its View endpoints to roughly 1 request per second per app. Make these lookups sequentially with about a one second gap between them, never fan them out in parallel. Cap the drill down at the 20 highest volume messages per week so the workflow stays within a sensible runtime, and rely on the summary stats from View Messages for anything beyond that cap. If a call returns a 429, read the Retry-After header, wait that many seconds, then resume rather than failing the run.

Use the OneSignal View Segments operation to list the segments and match them to the audience each message targeted, and View Segment to read the subscriber count for each targeted segment, so click rates are judged against how many people the message could actually reach. Look up each distinct segment only once and reuse the number across every message that targeted it, both to save time and to respect the same 1 request per second pacing.

Calculate delivery rate as delivered divided by sent, and click rate as clicks divided by delivered. Work these out per message and as a total for each of the two weeks. When ranking best and worst, ignore any message with fewer than 100 delivered so a tiny send with a couple of clicks cannot top the chart, but still count those messages in the weekly totals. If fewer than three messages clear that floor, rank the ones that do and say plainly that the sample was small.

Set a delivery rate threshold of 90 percent, and let me change that number easily. If the current week's overall delivery rate falls below it, lead the review with a clearly marked warning at the very top, before any performance analysis. Explain that a delivery drop usually points to stale push tokens, uninstalled apps, or subscription record problems rather than weak copy, and name the specific messages with the worst delivery rates so I know where to look. If delivery is healthy, skip the warning entirely rather than writing a passing note.

The body of the review starts with a week over week comparison of sent, delivered, clicked, delivery rate and click rate, showing the direction and size of each change against the previous week. Then name the three best and three worst performing messages by click rate. For each one, give the message title and a short preview of the copy, the segment it targeted, the audience size, the time of day it was sent, the sent, delivered and clicked counts, and the click rate.

Next, explain in plain language what the winners had in common, and cover four things specifically: copy length, measured as the character count of the title and body and described as short or long rather than as a raw statistic; emoji use, including whether emoji appeared at all and roughly how many; send time of day, grouped into buckets like early morning, midday, afternoon and evening; and which segment was targeted, including whether winners went to narrow segments or broad ones. Contrast the winners against the worst performers on the same four dimensions. If a dimension shows no clear pattern this week, say so honestly instead of inventing a trend. Write this as prose a marketer can read, with no jargon and no statistical language.

End the review with two or three concrete recommendations for the coming week. Each one must be specific and actionable, tied to something actually observed in the data, for example a target segment, a title length to stay under, or a send time to move a recurring message to. Avoid vague advice like test more variations.

Post the finished review into Slack using the Send a Message operation, to the channel I specify (default #push-notifications). Format it for Slack readability with short sections, bold section headers, and bullet lists for the rankings, keeping it skimmable in about a minute. The delivery warning, when present, goes at the very top above everything else.

Finally, append one row to my Google Sheet using the Append Values operation, into the spreadsheet and tab I specify. The row holds the headline numbers: week start date, total sent, total delivered, total clicked, click rate, and delivery rate. Always append below the existing data and never overwrite earlier rows, since the point is an accumulating trend history. If the tab is empty on the first run, write a header row before the first data row.

If no messages were sent in the current week, skip the ranking and pattern analysis, post a short Slack note saying there were no sends that week, and do not append a row to the sheet.

Example output

Push review: week of 3 Aug Heads up: delivery rate fell to 86 percent, below your 90 percent threshold. This is usually stale devices or people turning notifications off, not weak copy. Worth checking before reading anything into the numbers below. The week at a glance Sent 48,200 (up 6 percent) | Delivered 41,450 (down 2 percent) | Clicked 1,780 | Click rate 4.3 percent (up from 3.6 percent) Top three by click rate 1. "Your order ships today" to Recent Buyers (8,400 reached) at 9am. 7.9 percent 2. "48 hours left on your cart" to Cart Abandoners (12,100 reached) at 6pm. 6.4 percent 3. "New drop is live" to Engaged Users (15,300 reached) at 7pm. 5.1 percent Bottom three by click rate 1. "Check out this week's updates from the team" to All Users at 2pm. 1.2 percent 2. "We have made some changes to our app experience" to All Users at 11am. 1.4 percent 3. "Monthly newsletter is here" to All Users at 3pm. 1.6 percent What the winners had in common The three best messages were all short, between 24 and 34 characters, and each named one specific thing the reader could act on. The three worst averaged 52 characters and described a category of update rather than an action. Emoji use made no clear difference this week, appearing in one winner and one loser. Timing mattered more: the winners went out early morning or early evening, while all three weak performers landed in the early afternoon. Targeting was the sharpest divide. Every winner went to a narrow segment, and every loser went to All Users. Recommendations for next week 1. Stop sending to All Users for anything that is not urgent. The three worst performers were all broad sends. 2. Keep titles under about 35 characters and lead with the action. 3. Move the midweek update out of the 2pm slot and try 6pm, which carried your second best message this week.

What does this prompt do?

  • Every Monday morning, pulls last week's push notifications and compares them against the week before, so you see whether you are actually improving.
  • Names the three best and three worst messages by click rate, judged against how many people each audience actually reached rather than raw click counts.
  • Explains in plain language what the winners had in common: how long the copy was, whether it used emoji, what time of day it went out, and which audience it targeted.
  • Posts the finished review to your Slack channel and adds a row of headline numbers to a Google Sheet, so a trend history builds up week after week.

What do I need to use this?

  • A OneSignal account that is already sending push notifications
  • A Slack workspace and a channel where the review should land
  • A Google account with a spreadsheet to keep the weekly trend history
  • A delivery rate you consider healthy, used as the warning threshold (most teams start around 90 percent)

How can I customize it?

  • Change when it runs. Monday at 8am is the default, but a Friday wrap-up or a monthly recap works the same way.
  • Set your own delivery rate warning threshold, and the minimum audience size a message needs before it is allowed into the best and worst rankings.
  • Send the review to a different channel or as a direct message, and point the trend history at any spreadsheet and tab you like.

FAQs

Which notifications does the review cover?
It looks at the messages you sent in the last seven days and compares them against the seven days before that. Anything older is left out of the ranking, though the spreadsheet keeps every past week so you can still see long term trends.
How does it decide which messages performed best?
It ranks by click rate, which is clicks measured against how many people actually received the message. It also checks how big the targeted audience was, so a message sent to a small, highly engaged group is not unfairly compared with one sent to everybody. Very small sends are excluded from the ranking so a handful of clicks cannot top the chart.
What happens if my delivery rate drops?
The review leads with a warning at the very top instead of burying it. A falling delivery rate usually means devices have gone stale or people have turned notifications off, rather than your copy getting worse, so it is called out separately from the performance analysis.
Will this work with my existing OneSignal setup?
Yes. It only reads the messages and audiences you already have and never sends a notification or changes your settings. You just need login access to the OneSignal app you want reviewed.
Do I have to use both Slack and Google Sheets?
No. The Slack review and the spreadsheet history are separate steps, so you can keep just one. The spreadsheet is what makes the week over week comparison richer over time, so most teams keep it.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task
Turn each week's football fixtures into a venue staffing plan

Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.

API-Sports
Google Calendar
Slack
Agentic Task

Stop digging through the OneSignal dashboard every Monday.

Get a written push notification review delivered to Slack, with the trend history logged for you automatically.