Snowflake

Snowflake Notification Integrations: QUEUE/EMAIL/WEBHOOK and Snowpipe Auto-Trigger

2026-03-26
更新: 2026-03-27
NicheeLab Editorial Team

A Notification Integration is a Snowflake object that securely connects your account to external notification services. It comes in three flavors — cloud message queues (QUEUE), email (EMAIL), and HTTPS endpoints (WEBHOOK) — and is used for Snowpipe auto-trigger, task failure notifications, alert firing, and many other use cases.

Overview of the Three Types

TypeConnects toPrimary use caseDirection
QUEUEAWS SQS / Azure Storage Queue / GCS Pub/SubSnowpipe auto-trigger, External Table auto-refreshExternal → Snowflake (inbound)
EMAILSnowflake built-in email senderAlert notifications, error notificationsSnowflake → External (outbound)
WEBHOOKHTTPS endpoint (Slack / PagerDuty, etc.)Real-time notifications, ChatOps integrationSnowflake → External (outbound)

QUEUE Type: Cloud Queue Integration

This is the most commonly used type for Snowpipe auto-trigger. Parameters differ by cloud provider.

AWS SQS Integration

-- Notification Integration for AWS SQS
CREATE OR REPLACE NOTIFICATION INTEGRATION aws_s3_notification
  ENABLED = TRUE
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SQS
  DIRECTION = INBOUND
  AWS_SQS_ARN = 'arn:aws:sqs:ap-northeast-1:123456789012:snowpipe-queue'
  AWS_SQS_ROLE_ARN = 'arn:aws:iam::123456789012:role/snowflake-sqs-role';

-- Inspect the integration (returns SF_AWS_IAM_USER_ARN / SF_AWS_EXTERNAL_ID)
DESCRIBE NOTIFICATION INTEGRATION aws_s3_notification;

Azure Storage Queue Integration

-- Notification Integration for Azure Storage Queue
CREATE OR REPLACE NOTIFICATION INTEGRATION azure_blob_notification
  ENABLED = TRUE
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE
  DIRECTION = INBOUND
  AZURE_STORAGE_QUEUE_PRIMARY_URI =
    'https://myaccount.queue.core.windows.net/snowpipe-queue'
  AZURE_TENANT_ID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

DESCRIBE NOTIFICATION INTEGRATION azure_blob_notification;

GCS Pub/Sub Integration

-- Notification Integration for GCS Pub/Sub
CREATE OR REPLACE NOTIFICATION INTEGRATION gcs_notification
  ENABLED = TRUE
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = GCP_PUBSUB
  DIRECTION = INBOUND
  GCP_PUBSUB_SUBSCRIPTION_NAME =
    'projects/my-project/subscriptions/snowpipe-sub';

DESCRIBE NOTIFICATION INTEGRATION gcs_notification;

Snowpipe Auto-Trigger Wiring

Combine a QUEUE-type Notification Integration with Snowpipe to ingest data automatically the moment a file lands in cloud storage.

-- Create the Snowpipe with a Notification Integration reference
CREATE OR REPLACE PIPE raw_data_pipe
  AUTO_INGEST = TRUE
  INTEGRATION = aws_s3_notification
  AS
  COPY INTO raw.events
  FROM @raw.s3_stage/events/
  FILE_FORMAT = (TYPE = 'PARQUET')
  MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE;

-- Check pipe status
SHOW PIPES LIKE 'RAW_DATA_PIPE';
SELECT SYSTEM$PIPE_STATUS('raw_data_pipe');

-- Pipe copy history
SELECT *
FROM TABLE(INFORMATION_SCHEMA.COPY_HISTORY(
  TABLE_NAME => 'RAW.EVENTS',
  START_TIME => DATEADD('HOUR', -24, CURRENT_TIMESTAMP())
));

EMAIL Type: Email Notifications

Use EMAIL integrations to send email notifications from Alerts or stored procedures.

-- Create the email Notification Integration
CREATE OR REPLACE NOTIFICATION INTEGRATION email_alerts
  ENABLED = TRUE
  TYPE = EMAIL
  ALLOWED_RECIPIENTS = (
    '[email protected]',
    '[email protected]'
  );

-- Email notification via Alert (anomaly detection example)
CREATE OR REPLACE ALERT high_cost_alert
  WAREHOUSE = monitor_wh
  SCHEDULE = '60 MINUTE'
  IF (EXISTS (
    SELECT 1
    FROM TABLE(INFORMATION_SCHEMA.WAREHOUSE_METERING_HISTORY(
      DATE_RANGE_START => DATEADD('HOUR', -1, CURRENT_TIMESTAMP())
    ))
    WHERE CREDITS_USED > 100
  ))
  THEN
    CALL SYSTEM$SEND_EMAIL(
      'email_alerts',
      '[email protected]',
      'Snowflake high-cost alert',
      'Credit consumption exceeded 100 in the last hour. Please investigate.'
    );

ALTER ALERT high_cost_alert RESUME;

WEBHOOK Type: HTTPS Endpoint Integration

-- Create the Webhook Notification Integration
CREATE OR REPLACE NOTIFICATION INTEGRATION slack_webhook
  ENABLED = TRUE
  TYPE = WEBHOOK
  WEBHOOK_URL = 'https://hooks.slack.com/services/T00/B00/xxxxx'
  WEBHOOK_SECRET = snowflake.secrets.slack_secret
  WEBHOOK_BODY_TEMPLATE = '{
    "text": "SNOWFLAKE_WEBHOOK_MESSAGE"
  }'
  WEBHOOK_HEADERS = ('Content-Type' = 'application/json');

Privilege Design

-- Create the integration (run as ACCOUNTADMIN)
USE ROLE ACCOUNTADMIN;

-- Grant USAGE on the integration to working roles
GRANT USAGE ON INTEGRATION aws_s3_notification
  TO ROLE data_engineer_role;
GRANT USAGE ON INTEGRATION email_alerts
  TO ROLE monitoring_role;

-- Build the Snowpipe as data_engineer_role
USE ROLE data_engineer_role;
CREATE PIPE ... INTEGRATION = aws_s3_notification ...;

Troubleshooting

SymptomCauseResolution
Snowpipe is not detecting new filesThe SQS queue policy does not authorize Snowflake's IAM roleAdd SF_AWS_IAM_USER_ARN (returned by DESCRIBE INTEGRATION) to the SQS queue policy
Email notifications never arriveThe recipient is missing from ALLOWED_RECIPIENTSAdd the recipient with ALTER INTEGRATION SET ALLOWED_RECIPIENTS = (...)
The webhook returns 403Misconfigured secret/URL, or a missing Network RuleVerify WEBHOOK_URL and WEBHOOK_SECRET, and configure an External Access Integration if required
Integration creation failsThe role lacks the CREATE INTEGRATION privilegeCreate it as ACCOUNTADMIN and grant USAGE to other roles

Key Exam Takeaways

  • QUEUE type is required for Snowpipe AUTO_INGEST; parameters differ by cloud provider
  • EMAIL type restricts destinations via ALLOWED_RECIPIENTS
  • Creating an Integration requires ACCOUNTADMIN privileges
  • Use DESCRIBE INTEGRATION to retrieve the values (ARN / External ID, etc.) needed for cloud-side IAM configuration
  • Snowpipe auto-ingest flow: S3 event → SQS → Notification Integration → Snowpipe → COPY INTO

Check Your Knowledge

SnowPro

問題 1

You are building a pipeline that auto-ingests data through Snowpipe every time a file lands in AWS S3. Which Notification Integration configuration is correct?

  1. TYPE = EMAIL, NOTIFICATION_PROVIDER = AWS_SNS to receive S3 event notifications
  2. TYPE = QUEUE, NOTIFICATION_PROVIDER = AWS_SQS to receive events from an SQS queue, with the Pipe set to AUTO_INGEST = TRUE and an INTEGRATION clause
  3. TYPE = WEBHOOK with the S3 event URL set as WEBHOOK_URL
  4. No Notification Integration is needed — AUTO_INGEST = TRUE alone on the CREATE PIPE statement is enough to start auto-ingesting

正解: B

The correct flow is S3 event notification → SQS queue → Snowflake Notification Integration (QUEUE type / AWS_SQS) → Snowpipe (AUTO_INGEST = TRUE + INTEGRATION clause). EMAIL and WEBHOOK types cannot be used for Snowpipe auto-trigger. AUTO_INGEST = TRUE alone does not establish a connection to the cloud queue, so events would never be received.

Frequently Asked Questions

How do I choose between QUEUE, EMAIL, and WEBHOOK Notification Integrations?

QUEUE integrations connect to cloud message queues (AWS SQS / Azure Storage Queue / GCS Pub/Sub) and are used to auto-trigger Snowpipe and auto-refresh External Tables. EMAIL integrations send alert notifications and task failure notifications via email from Snowflake. WEBHOOK integrations push notifications directly to external HTTPS endpoints (Slack, PagerDuty, etc.). QUEUE is required for Snowpipe integration.

Is a Notification Integration always required for Snowpipe auto-ingest?

It is required when you auto-trigger Snowpipe via cloud event notifications. On AWS you forward S3 Event Notifications to SQS, and Snowpipe polls the queue through a QUEUE-type Notification Integration. If you instead call Snowpipe explicitly via the REST API (insertFiles), no Notification Integration is needed.

Which role should own Notification Integration privileges?

ACCOUNTADMIN holds the CREATE INTEGRATION privilege, so the integration itself must be created as ACCOUNTADMIN. After creation, grant USAGE ON INTEGRATION to a working role (for example data_engineer_role), and have that role wire up Snowpipe or Alert references to the integration. From a security standpoint, you should avoid building pipelines directly as ACCOUNTADMIN.

Check what you learned with practice questions

Practice with certification-focused question sets

無料で問題を解いてみる
Author

NicheeLab Editorial Team

NicheeLab editorial team focused on data engineering and cloud certification learning. Content is structured around practical study needs and official exam domains.


Related articles
Snowflake

Snowflake Certifications: All 11 Exams Explained (2026)

Every SnowPro certification — Associate, Core, Specialty, Ad...

Snowflake

Snowflake Exam Difficulty Ranking: All 11 Certs Compared (2026)

All 11 SnowPro exams ranked by difficulty with study-time es...

Snowflake

Snowflake Study Guide: Fastest Pass Route by Exam (2026)

How to pass SnowPro certifications efficiently — official ma...

Snowflake

SnowPro Core (COF-C03): Complete Exam Guide (2026)

Pass the SnowPro Core exam — six domains, scope, sample ques...

Snowflake

SnowPro Associate Platform (SOL-C01): Complete Guide (2026)

The entry-level SnowPro Associate exam — scope, weighting, s...

Browse all Snowflake articles (103)
© 2026 NicheeLab All rights reserved.