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.
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
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?
How does it decide which messages performed best?
What happens if my delivery rate drops?
Will this work with my existing OneSignal setup?
Do I have to use both Slack and Google Sheets?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
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.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
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.
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.
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.
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.