Monthly returns analysis that flags product quality issues

Every month, turn raw return data into a return rate per product so you can see which items are actually getting worse, not just which ones sold more.

Agentic Task
ShipBobNotionSlack BotOperationsProductAI ReportsFeedback Triage
PromptCreate

On the first Monday of every month at 9am, analyze last month's returns and tell me what they are actually saying about product quality, not just how many items came back.

The reporting period is the previous full calendar month. Also gather the month before that, so every number can be compared against a prior period.

Use ShipBob Get Return Orders to list every return order created in the reporting period, paging through all results. Then use ShipBob Get Return Order to pull full detail, including line items and per item return reasons, on the cases that carry the most signal: the products with the highest return counts, and anything flagged as damaged or defective. Do not enrich every single return. ShipBob allows 150 requests per minute, so keep the detail pass bounded to the returns that actually drive the findings.

Use ShipBob Get Orders to pull fulfilled order volume across the same period and count units shipped per SKU. This is the denominator. Express every return as a return rate, meaning returns divided by units fulfilled for that SKU in that period, rather than a raw count that just tracks how much I sold. A SKU with 40 returns may be healthier than one with 6 if it shipped twenty times the units, and the report is close to useless without this normalization.

Cluster the returns two ways: by product or SKU, and by reason. Sort the reasons into customer driven (ordered the wrong size, wrong color, changed their mind, no longer needed) and product driven (damaged, defective, broken, not as described, poor quality). If a reason is really a fulfillment error, such as the wrong item being shipped, keep it in a separate third bucket, because blaming the product for a pick and pack mistake buries the signal. Only the product driven bucket is something I can fix at the source, so lead with it.

Compare each SKU's return rate against the prior period and call out any SKU whose rate rose materially. As a starting definition, treat a rise as material when the rate went up by at least 2 percentage points and by at least 50 percent relative to the prior period. Ignore SKUs with very low volume, fewer than roughly 20 units fulfilled in the period, since a single return can swing a small denominator into an alarming looking percentage. Tune these thresholds to my catalog over time.

Write the full analysis to Notion using Create a Page, as a child of the parent page I specify, titled 'Returns Quality Review' plus the month and year. Structure it as: a short headline summary, a table of return rate by SKU showing returns, units fulfilled, and rate for both the current and prior period, the reason breakdown split across the buckets above, the SKUs whose return rate rose materially with a short read on why, and a closing list of recommended actions tied to specific products.

Then post the three headline findings to Slack Bot using Send a Message in my operations channel. Name the worst offending SKUs with their return rates and the direction they moved, and make the point explicit when a SKU's raw return count rose but its rate actually fell. Keep it short enough to read on a phone, and include a link to the Notion page for the full detail.

If there were no returns at all in the period, post a single line to Slack saying the period was clean and skip the Notion page rather than creating an empty report.

Example output

Returns Quality Review, March 1. Return rate is 4.1 percent overall, up from 3.4 percent in February. Most of the rise sits in three SKUs. 2. HOODIE-CHAR-L is the worst offender: 6.8 percent return rate against 2.9 percent last month, on 412 units shipped. 71 percent of those returns are damaged or defective, not sizing, so this looks like a product or packaging regression rather than a fit issue. 3. MUG-CERAMIC-12 returns doubled in raw count, but volume tripled, so its rate actually fell from 5.2 to 3.4 percent. No action needed. Full breakdown by SKU and reason: [Notion page]

What does this prompt do?

  • Pulls last month's returns alongside how much you actually shipped, then works out a return rate for every product instead of a raw return count.
  • Separates returns your customers cause, like ordering the wrong size, from returns your product causes, like damage or defects.
  • Flags any product whose return rate climbed noticeably against the month before, which is the early warning sign of a supplier or packaging problem.
  • Files the full write up as a structured Notion page and posts the three biggest findings to Slack.

What do I need to use this?

  • A ShipBob account with returns and order history
  • A Notion workspace, plus the parent page you want reports filed under shared with the connection
  • A Slack workspace where the bot can post to the channel you pick

How can I customize it?

  • Change when it runs, for example to the first day of each quarter instead of every month.
  • Adjust the minimum sales volume a product needs before it can be flagged, so low volume items do not create false alarms.
  • Reword the return reason groupings to match the reasons your team actually uses.
  • Pick which Slack channel gets the summary, or have it arrive as a direct message instead.

FAQs

Why use a return rate instead of just counting returns?
A product with 40 returns can be healthier than one with 6 if it sold twenty times as many units. Dividing returns by units shipped shows you which products genuinely have a problem, rather than which ones simply sell the most.
What counts as a customer driven return versus a product driven one?
Customer driven returns are things like ordering the wrong size or changing their mind. Product driven returns are damage, defects, or an item that did not match its description. Only the second group points at something you can actually fix.
Will this work if I only have a few months of history?
Yes. You still get return rates for the current period straight away. The month over month comparison needs at least one earlier month of data before it can show you movement.
Do I need to review every single return for this to be useful?
No. It looks at the full set of returns for the period and only pulls deeper detail on the cases that matter, such as your worst performing products and anything reported as damaged or defective.
What happens in a month with no returns at all?
You get a one line note in Slack saying the period was clean, and no report page is created, so your workspace does not fill up with empty monthly reports.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
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
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
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
Replay failed SQS messages when a bug fix is merged

When you merge a fix in GitHub, this agent checks the matching dead-letter queue, replays the failed messages, and reports back on the pull request and in Slack.

Amazon SQS
GitHub
Slack Bot
Agentic Task

Stop guessing which products are actually failing.

Turn every month of returns into a ranked list of the products that need attention, filed in Notion and summarized in Slack.