How I Set Up Slack Alerts in Make That Actually Stick

How I Set Up Slack Alerts in Make That Actually Stick

1. Mapping Make scenarios to Slack notifications without loops

The first time I tried connecting a Make scenario to send a Slack message, it looked fine on paper — webhook trigger, basic filter, Slack action — easy. But Slack got hit with five messages instead of one. Turns out, Make’s visual builder hides flow logic behind tiny icons, and if you accidentally route data into an array and don’t flatten it, Slack gets a copy for each looped item.

Here’s what fixed it: after the Watch Webhook module, I dropped in an Iterator, then a basic Router. I added filters specific enough to exclude junk data (like empty fields and error-fallbacks). But the real shift happened when I realized I didn’t need the Iterator at all — I was sending a single object. It was Make that recursively expanded it because Airtable’s output always includes arrays even for single linked records.

So I stopped trying to out-math the problem and just threw a Set Variable module after the trigger, manually assigned the values I needed, then passed clean, flattened strings downstream. No more phantom loops. No more Slack screaming.

2. Avoiding duplicate Slack posts from silent webhook retries

This bug burned me for two straight days: silent retries from an incoming webhook were triggering the entire scenario again — same data, same Slack message, no indication. I had test messages from a form integration that fired five times over six minutes, even though the form only submitted once.

It wasn’t Make’s fault exactly. Most incoming data from web apps includes a timestamp field, but not a unique ID. That means Make has no built-in debounce for posts. I ended up using the Redis module (not documented in any normal Make resources, but available via HTTP Tools) to store the last ten payload hashes. Then I compare incoming data against that list. If already seen, skip Slack.

If Redis sounds like overkill: even adding a Set Variable with a hash of the payload + a brief timestamp-based window can help. Or just push everything into an Airtable log and check if that combo exists — slower, clunkier, but visual for debugging.

3. Why your Make scenario randomly stops sending Slack messages

This is the one that made me question my brain. Everything is wired up exactly the same as last week. Scenario is active, testing returns valid results, Slack module still connected. But no message shows up in Slack — or worse, it shows up 45 minutes later, mid-meeting, without context.

The culprit? One of two things:

  • Your Slack connection token expired silently — authentication shows as green, but the token isn’t valid for DM targets.
  • You used a variable in the Slack channel field, and that variable is occasionally blank or misformatted.

Make won’t always throw an error on Slack message failures. If the Slack API returns a 200 with a warning, Make considers it “success.” To be sure, add another Slack module after the first one using the Make an API call option — call conversations.info with that same channel ID. If it fails, you know the root.

Also: turn on Scenario History in verbose mode for a week. Helps a lot when debugging erratic failures.

4. Reconnecting Slack safely without losing ultra-basic bot perms

I reconnected my Slack connection after switching to a new Make team. Everything reauthorized in two clicks. Then none of my Slack messages contained @mentions anymore. No errors, no blocked functionality — just blank notifications with no context. Turns out, Make reconnected me under a restricted Slack workspace scope.

So if you reset your Slack connection at any point, always:

  • Manually re-check the OAuth scopes in your Slack App settings
  • Confirm your Make connection is scoped to real channels, not just DMs
  • Trigger a test with a slash mention in text — like @here — to validate permissions

It’s also not obvious, but Make sometimes switches your Slack app context when you’re logged into multiple Slack workspaces. You have to reselect the correct Slack org during the OAuth handshake — there’s no fallback if you click through too fast.

5. Automatically grouping related Slack messages using Block Kit

If Slack pings are too noisy to be useful, you’re not wrong — plain messages from Make feel like bot spam. The fix? Start formatting them as Block Kit messages via custom payloads. That’s technically a JSON string inside the text field in Make.

At one point, I was getting 60 different Make-triggered Slack alerts per day related to order status changes. I wanted them to show up like a thread or grouped inside one expandable message. Slack doesn’t let bots thread automatically (unless you maintain thread_ts) — but combining updates into a single Block Kit section with dividers and timestamps helped clean it up.

Example:

{
  "blocks": [
    { "type": "section", "text": { "type": "mrkdwn", "text": "*New Order:* #45678" } },
    { "type": "context", "elements": [
      { "type": "mrkdwn", "text": "Status: Packed" },
      { "type": "mrkdwn", "text": "Updated: 10:42 AM" }
    ] },
    { "type": "divider" }
  ]
}

Just make sure to switch the Slack module to type “Custom Request” and set the HTTP Method to POST to https://slack.com/api/chat.postMessage — don’t use Make’s built-in Slack Message module if you want proper formatting control.

6. Saving over 10 hours a week by batching Slack updates hourly

Once I had message formatting down, the last real time-saver was shifting from live notifications to hourly batch summaries. I was originally sending Slack pings every time someone submitted a form or completed a task — and I’d tab-switch like some info-starved maniac.

Switched it up by linking the trigger event (via webhook or polling Airtable) into a queue table inside Airtable. Then added a scenario that runs hourly:

  • Pulls all events from the last 60 minutes
  • Groups them by type (form submissions, CRM updates, etc)
  • Chunks them into one Slack message using Block Kit sections
  • Marks them with a “notified” flag to prevent resend

This cut the Slack noise down by maybe 90 percent. It also gave me Slack updates that the team actually reads. Before, folks would just set the Make bots to mute because they assumed it was useless junk. Honestly, fair.

One small bug: Airtable’s “Last Modified” time doesn’t always update when a field is auto-filled via formula — so I had to include a dummy checkbox toggle to trigger a real field edit for Make to register it as “new”. That detail cost me two hours on a Thursday morning.