SNOWFLAKE · COMPARISON

Two ways to get a Snowflake result into Slack.

By Chris Davidson, founder of yForest · Updated September 26, 2026

Snowflake can alert natively with CREATE ALERT. QueryFlow can watch the same query from the SQL editor. Here's what each one actually takes to set up, and to keep working.

Start 14-day free trial Download on theMac App Store

No credit card. 14 days. Cancel in one click.

macOS 15+ · Apple Silicon native · 14-day free trial · No credit card

Quick answer: Snowflake's native CREATE ALERT runs a condition query on a schedule and fires an action, usually a call into a notification integration you configure separately to reach Slack. It's powerful and stays inside Snowflake, but it's SQL objects you write and maintain. A QueryFlow Watch does the same job, one query, a condition, a Slack destination, in one dialog, with no DDL.

Who each is for

Snowflake's native alerting fits a team that wants everything, including the alert logic itself, to live inside the warehouse under normal Snowflake governance: version-controlled in a migration, owned by a role, auditable the same way a table is. QueryFlow's Watch This fits someone who wants a specific number checked and a message sent, without writing or maintaining a database object to do it.

Snowflake's native ALERT, start to finish

Snowflake's own CREATE ALERT documentation lays out the shape: you write a condition query, a schedule, and an action. A simplified version, checking for failed orders:

CREATE OR REPLACE ALERT failed_orders_alert
  WAREHOUSE = reporting_wh
  SCHEDULE = '60 MINUTE'
  IF (EXISTS (
    SELECT 1 FROM sales.public.orders
    WHERE status = 'failed'
      AND created_at >= DATEADD(hour, -1, CURRENT_TIMESTAMP())
  ))
  THEN CALL SYSTEM$SEND_SNS_MESSAGE(
    'my_notification_integration',
    'sns-topic-arn',
    'Failed orders detected in the last hour.'
  );

ALTER ALERT failed_orders_alert RESUME;

Getting that action clause to actually land in a Slack channel takes a separate piece: a notification integration pointed at a webhook, an SNS topic wired to a Lambda that posts to Slack, or an equivalent. Snowflake's own docs walk through configuring a notification integration, and it's a one-time setup per destination, but it is infrastructure you own, with its own permissions and failure modes to debug when a message doesn't show up.

The same check as a Watch

Run the equivalent query in QueryFlow's SQL editor against your Snowflake connection:

SELECT COUNT(*) AS failed_orders
FROM sales.public.orders
WHERE status = 'failed'
  AND created_at >= DATEADD(hour, -1, CURRENT_TIMESTAMP());

Click Watch this, choose A value on failed_orders, condition Greater than with a threshold of 0, check every 1h, and tick Slack under Destinations. No CREATE ALERT, no notification integration, no ACCOUNTADMIN grant to set up. The trade is that this alert now depends on QueryFlow rather than living entirely inside the warehouse.

Side by side

Snowflake CREATE ALERTQueryFlow Watch This
SetupSQL DDL, plus a notification integration per destinationOne dialog: query, condition, interval, destination
Slack deliveryRequires a webhook or SNS-to-Lambda bridge you buildBuilt-in Slack destination, tick a checkbox
Lives inside SnowflakeYes, versionable as SQLNo, the Watch is a QueryFlow object
Permissions neededACCOUNTADMIN or delegated grants for the integrationYour existing Snowflake connection's read access
Also alerts on TeamsNeeds its own separate integrationBuilt-in, same dialog
Runs if the app is closedYes, entirely server-sideYes, on Pipelines with Run Jobs When App Is Closed on

When to pick each

Pick native CREATE ALERT when the alert logic needs to be owned by the data platform team, versioned in the same migrations as your tables, and independent of any client software being installed anywhere. Pick a Watch when a person or a small team wants a specific check running without asking a platform team to stand up a notification integration first. Plenty of teams end up using both: native alerts for platform-owned data-quality checks, Watches for the smaller, personal "tell me if this number moves" checks nobody wants to file a ticket for.

Setting up your first Watch

Run your query, click Watch this, name it, and confirm the connection and SQL. Choose Row count, A value, or Any change, pick a condition, set Check every, tick Destinations, then Run preview and Save. Full steps with screenshots: the Watch This tutorial.

What happens when the query itself fails

A native Snowflake alert that references a table that's been dropped, or a role that's lost a grant, fails silently unless you're specifically monitoring the alert's own run history, which is a second thing to remember to check. A QueryFlow Watch surfaces a failed check directly, right-click a Watch and Check now shows you whether the underlying query itself ran cleanly, separate from whether its condition fired. That distinction matters more than it sounds: a Watch that's gone quiet because nothing changed looks identical from the outside to a Watch that's gone quiet because the query started erroring, until you actually check.

Combining both approaches on the same table

Nothing stops a team from running native `CREATE ALERT` objects for platform-owned checks on a shared table, while individual engineers add their own Watches on the same table for personal, narrower questions, "let me know if my specific customer segment's order count drops," without asking the platform team to add a new alert object for a one-off curiosity. The two systems don't conflict, they're reading the same data through two different paths, one governed centrally, one set up in a couple of clicks by whoever needs it.

Compare
QueryFlow Studio $9.99/mo · $99/yr
QueryFlow Pipelines $29.99/mo · $199.99/yr

Frequently asked

Does Snowflake's CREATE ALERT send to Slack directly?

Not directly. The alert's action clause typically calls a notification integration, which in turn needs a webhook or a cloud messaging service configured to reach Slack. Snowflake doesn't post to a Slack channel on its own.

Do I need Snowflake Enterprise for CREATE ALERT?

CREATE ALERT is part of standard Snowflake SQL, available on Snowflake accounts generally, not gated to a specific edition, though the notification integration setup does need ACCOUNTADMIN or a role with the right grants.

Can a Watch check anything besides a row count or a value?

Yes, Any change compares the whole result set and fires on any difference, which covers cases a single row-count or value check would miss.

Does QueryFlow replace Snowflake's native alerting for everything?

No. For alerts that need to live entirely inside Snowflake's own scheduling and governance, independent of any client app being installed anywhere, CREATE ALERT is the right tool. Watch This is for a person or a small team who wants to be told about a specific result without maintaining SQL objects for it.

Schedule Snowflake reports to Slack Send a SQL alert to Slack Every warehouse, one client

Skip the notification integration.

14-day free trial, no card. Watch a Snowflake query and get pinged in Slack today.

Start 14-day free trial

No credit card. 14 days. Cancel in one click.