Ecommerce sales drop alerts in Slack before Black Friday
Watch orders in your store, not GA4, for the first alarm. A Shopify Flow zero-order alert, a GA4 backstop, and traffic alerts for the cause, all posted to Slack.
The fastest ecommerce sales drop alert reads orders from your store, not from Google Analytics. On Shopify, a free Shopify Flow workflow can count orders every hour and post to Slack when the count is zero. Add a GA4 custom insight on purchases as a backstop for tracking breaks, and a traffic alert to tell you why sales moved. Set all three up by mid November, so they have been tested before Black Friday on Friday 27 November.
This article is about the alerts. For the full pre-sale tracking checklist and what to read in GA4 each day of the sale, see the Black Friday analytics checklist. For alerts on traffic and key events in general, see GA4 alerts in Slack.
Three kinds of sales drop, three different alerts
“Sales dropped” covers three different failures, and no single tool catches all of them well.
| What went wrong | Example | Best source | How fast you need to know |
|---|---|---|---|
| Orders stopped | Payment gateway down, checkout script broken | Your store’s orders | Within the hour |
| Orders slowed | A promo code expired, a product sold out, an ad budget ran dry | Store orders, then GA4 traffic | Same day |
| Orders look like they stopped, but did not | The purchase tag broke, a consent banner change | GA4 vs store orders | Before you report the numbers |
The first row is the expensive one on Black Friday. The third is the one that quietly ruins your December reporting.
Why your store, not GA4, should raise the first alarm
Two reasons.
GA4 is slow on purpose. On a standard property, Google’s data freshness page gives a few minutes for Realtime, 2 to 6 hours for intraday data and about 12 hours for daily data, and says processing can take 24 to 48 hours. An alert built on GA4 reports can only fire once the data has arrived.
GA4 does not see every order. It counts an order only when the purchase event reaches Google. A refused consent banner or a thank-you page that fails to load loses the order in GA4, while your store still records it. We cover the gap in Shopify Analytics vs GA4. Your store’s order list is the record of money; GA4 is the record of where buyers came from.
So the store raises the alarm, and GA4 explains it.
Option 1: a zero-order alert with Shopify Flow
Shopify Flow is a free Shopify app available on the Basic, Grow, Advanced and Plus plans. Its scheduled workflows can query your orders and post to Slack, which is everything a zero-order alert needs. Shopify’s own documented example is close: a daily workflow that gets open draft orders, counts them, and puts the count in a Slack message (Shopify’s help). Swap draft orders for orders and add a condition.
- Trigger: Scheduled time. Set it to recur hourly. Flow’s scheduled trigger can run as often as every 10 minutes.
- Action: Get order data. Choose Advanced and write a query for orders created in your window. Shopify’s example filters on
updated_atwith thescheduledAtvariable; the same pattern oncreated_atwith a two hour window readscreated_at:>'{{ scheduledAt | date_minus: 7200 }}'. Thedate_minusfilter takes a number of seconds, or units such as minutes and days. AddAND test:falseso test orders don’t count (orders query filters). Set Maximum number of results to 100 (the cap). - Action: Count. It returns the number of orders in the list.
- Condition: the count equals 0.
- Action: Send Slack message. Connect Flow to Slack, then add the FlowBot app to the channel from the channel’s Integrations settings, or Flow cannot post there (Shopify’s help). Write the message so the reader knows what to check: “No orders in the last 2 hours. Place a test order and check the payment gateway.”
Pick the window from your quietest hours. A store that normally sees an order every 10 minutes at peak and none between 2am and 6am needs either a longer window overnight or a second workflow with different hours. An alarm that fires every night gets muted by the first weekend.
What Flow is not good at: “fewer orders than a normal Friday at this hour”. Get data returns at most 100 records per action, and the workflow has no built-in notion of a normal day. For a zero check, neither matters.
Option 2: a GA4 custom insight on purchases
GA4 can watch a metric for you, and on most ecommerce properties that includes purchases and revenue. A custom insight is a rule you create from the Insights card: click View all insights, then Create, and pick a frequency (hourly, daily, weekly or monthly, with hourly for web data only), a metric, and either a threshold such as a percentage decrease or the Has anomaly condition. Add an email address to get notified. You need the Editor or Administrator role. Google’s page does not list which metrics the picker offers, so check that your purchase and revenue metrics appear on your property.
Two rules worth having for a store:
- Daily, purchases with a large percentage decrease (for example, % decrease more than 80). A tracking break detector. If the store shows orders and GA4 shows almost none, the tag broke.
- Daily, revenue with Has anomaly. For daily anomalies Google trains on the last 90 days; for hourly ones, only 2 weeks.
To land these in Slack, send them to the channel’s own email address: open the channel, click its name, then on the About tab choose the option to send emails to the channel. That is on paid Slack plans only. The full setup and its limits are in GA4 custom insights.
Why it is a backstop: given the processing delay above, a daily insight tells you about Friday on Saturday. That is fine for “the tag broke”, too late for “the checkout is down”.
Option 3: a script or an automation tool
If you want “fewer orders than usual for this hour”, you have to write the comparison yourself.
- Zapier has no trigger for missing orders. As of October 2026 its Shopify integration lists 20 triggers, such as New Order and New Paid Order, and none fires when orders stop or slow down. You would need a scheduled Zap with a code or API request step that counts recent orders through Shopify’s API and compares the result with a number you choose, which is close to writing the script yourself.
- Google Apps Script can run on a time-driven trigger as often as every minute, call the GA4 Data API for
transactions,ecommercePurchasesorpurchaseRevenue(API schema), compare with the same weekday in past weeks, and post to a Slack webhook. It still reads GA4, so it inherits the delay. Apps Script at least emails you a “Summary of failures” when a trigger fails, which beats silence.
This is the right route if you have someone who will maintain it through the sale. If nobody owns the script in late November, pick Options 1 and 2.
Option 4: traffic and key event alerts, for the cause
A sales alert tells you orders fell. The next question is always why: did fewer people arrive, or did the same people stop buying? That answer lives in GA4 traffic, by channel, campaign and landing page.
This is where Dialytics fits, and it is our product, so read this with that in mind. Dialytics does not watch revenue, orders or order value. Every morning it compares yesterday’s sessions, users, new users and total key events with the same weekday over roughly the last 12 weeks, and posts at most one alert in Slack when a move is both statistically unusual and at least 20% away from normal. Drop alerts are held back on national public holidays.
purchase is a key event by default in GA4, so a purchase collapse can show up in the key events total. That total also includes any other key events you have marked, such as sign-ups, and if you linked Google Ads with Ads Personalization on, GA4 also marks add_to_cart and even session_start as key events, which buries purchases. Check Admin > Data display > Events, and read the total as a signal, not as an order count. When an alert lands, mention the bot in the thread and ask “which channel drove this?” or “is it one page?”. It answers from your GA4 data and the account’s history. Every Monday you also get a digest of the week. For a solo store owner, it covers the “why” half of a sales drop without opening GA4, and pairs with the Flow alarm for the “what”.
The options compared
| Option | Watches | Speed | Normal-day baseline | Lands in Slack | Cost |
|---|---|---|---|---|---|
| Shopify Flow zero-order check | Store orders | Every 10 minutes at best | No (zero check only) | Yes, via FlowBot | Free app on Basic and up |
| GA4 custom insight | Purchases, revenue in GA4 | Hours, data lag included | Has anomaly | Via channel email, paid Slack | Free |
| Apps Script or Zapier | What you code | As fast as your source | If you code it | Yes | Your time, or a Zapier plan |
| Dialytics | Traffic and key events total | Daily | Same weekday, ~12 weeks | Yes | Subscription after the trial |
A five-minute pre-sale test
Run this once in the week of 16 November, and again after any checkout change.
- Flip the Flow condition, confirm the Slack message arrives and that its order count matches your Orders page (or reads 100 on a busy window). Flip it back.
- Check the GA4 insight is active and the recipient is the channel address.
- Decide who reads the channel on Thursday, Friday and Monday, and at what hours.
- Pin a one-line runbook in the channel: who to call about payments, how to place a test order.
An alert nobody owns tends to be read on Monday. For everything else GA4 can do in Slack, the GA4 in Slack guide has the full picture.
Frequently asked questions
Can GA4 alert me when sales drop?
Yes, with a custom insight: pick a purchase or revenue metric if your property offers one, a daily or hourly frequency (hourly is web only), and either a percentage decrease or Has anomaly, and add an email address. GA4 data takes hours to process, so treat it as a backstop for tracking breaks, not as your fastest checkout alarm.
Does Shopify alert you when you get no orders?
Not out of the box. Shopify emails staff about each new order, can send push notifications through its mobile app, and offers a periodic order summary email, but no alert fires when orders stop. You can build it with Shopify Flow: a scheduled trigger, Get order data, a Count, and a Send Slack message action when the count is zero.
How often should a sales drop alert check my store?
During a sale, every hour is a sensible default, and Shopify Flow's scheduled trigger can go down to every 10 minutes. Match the window to your volume: if you can normally go two hours without an order at night, a one hour window will fire false alarms every night.
Can Dialytics alert me when revenue drops?
No. Dialytics, our product, watches sessions, users, new users and the total of your GA4 key events, once a day, compared with the same weekday. Purchase is a key event by default, so a purchase collapse can show up there, but revenue, orders and order value are not watched.