SnowExporter — Product

A Snowflake Native App for exporting query results.

Run a query, deliver the result by email or to cloud storage, on demand or on a schedule. Everything runs inside your Snowflake account.

What is SnowExporter?

SnowExporter lets a Snowflake user run a query and deliver the result without leaving Snowflake. Results can be emailed, downloaded via a presigned link, or written as a file to an internal Snowflake stage or to AWS S3, GCP GCS, or Azure Blob — once-off or on a recurring schedule. Because SnowExporter is a Snowflake Native App, all execution and all data stay inside your Snowflake account.

Why a Native App matters

Snowflake Native Apps run inside the customer's Snowflake account, not on the provider's infrastructure. Your data is never copied or shared with the app vendor. You retain full control over what the app can do by granting only the privileges it needs.

SnowExporter is designed to ask for the minimum. The setup helpers built into the app generate the exact SQL snippets for each grant, so your ACCOUNTADMIN knows exactly what is being granted before they paste anything.

What v2.0 ships

Feature list

🔒 Compliance & Governance v2.0

Automatic detection of PII / PCI / PHI / credential columns (45 built-in rules, extendable). Mask-by-default on every delivery. Compliance audit log. New Reports tab for compliance officers with CSV export for GRC workflows.

🪝 Webhook & 📡 SFTP delivery v2.0

Two new delivery modes. Webhook posts to your HTTPS endpoint with signed-secret auth and retries. SFTP uploads files to your server with password or SSH-key auth.

🤖 AI-assisted export creation v1.3

Describe an export in plain English; Cortex extracts the SQL, schedule, delivery mode, and destination. Pro / Trial only. Requires Snowflake Cortex on the account.

💬 Slack & Teams delivery v1.2

Deliver query results to a Slack or Microsoft Teams channel as a monospace table, with an optional downloadable file for larger results.

Ad-hoc & email exports

Email the result in the message body (≤50 rows) or as a presigned download link to a file in an internal stage.

File exports

Write a CSV or JSON file to an internal stage or to AWS S3, GCP GCS, or Azure Blob — with optional GZIP and optional timestamp suffix.

Scheduled exports

Cron-based schedules for any delivery mode. Configurable timezone. Pause, resume, or delete from the Scheduled Exports page.

Unified Notifications v1.2

Email recipients, Slack channels, and Teams channels under a single 📣 Notifications tab. Per-channel Description, Business Contact, and one-click Test button.

Multi-destination management

Many destinations and channels of each type. Per-destination Description, Business Contact, and independent enable/disable.

Role-based destination policy

Per-destination "allowed roles" multiselect, recorded and surfaced in Settings → Users. See the limitations section for the v1.3 enforcement caveat (unchanged from v1.0).

Observability

Activity dashboard on Home. Full audit log on the Logs page with per-query actual compute credits pulled from ACCOUNT_USAGE.

Supported destinations

Internal stage and three cloud destinations.

TypeIconSetup
Email recipient 📧 Snowflake email notification integration; recipients must be verified Snowflake user emails
Slack channel v1.2 💬 Slack incoming webhook URL configured under Settings → Notifications → Slack
Microsoft Teams channel v1.2 💬 Teams incoming webhook URL configured under Settings → Notifications → Teams
Internal Snowflake stage ❄️ Snowflake-managed; ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') required for download links
AWS S3 🟧 Storage integration + IAM role trust policy (in-UI SQL helper spells out each step)
GCP GCS 🔵 Storage integration + service account binding
Azure Blob 🔷 Storage integration + access grants
Webhook v2.0 🪝 HTTPS endpoint URL + optional signed-secret header configured in Settings → Notifications → Webhook
SFTP v2.0 📡 Host, port, path, and authentication (password or SSH key) configured in Settings → Export destinations → SFTP

For step-by-step setup orientation per cloud (S3 IAM role, GCS service account, Azure consent + role binding) plus links to the official Snowflake and cloud-provider docs, see the cloud destination setup guide.

How to get started

From install to first export.

  1. Install SnowExporter from the Snowflake Marketplace.
  2. Grant the references the app asks for: a warehouse for scheduled tasks and one or more source tables.
  3. Settings → Notification: create the email integration named NATIVE_APP_EMAIL_INTEGRATION and grant it to the app. The in-UI helper provides the exact SQL.
  4. Settings → Export destinations: add your first destination (internal stage or cloud). For cloud destinations, tick Show required setup SQL for the storage-integration and grant snippet.
  5. Click Create Data Export. Pick a query, choose a delivery mode and destination, run.

The in-app Settings → 📤 Export destinations → + Add a destination → Show required setup SQL generates the exact SQL for each cloud, including the trust-policy steps for AWS.

Honest limitations

Known caveats in v1.0.

We'd rather you know these up front than discover them after install.

  • Email body delivery is capped at 50 rows. Snowflake's SYSTEM$SEND_EMAIL constraint. For larger results use download-link, chat, or file delivery.
  • Email recipients must be verified Snowflake user emails on your account. The app does not accept free-text email addresses.
  • Slack & Teams in-chat tables are capped at 10 rows + summary line. For larger results in chat, the optional file attachment via 24-hour presigned link covers unlimited rows.
  • Internal stages require ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE') for presigned download links to return readable files. The in-app setup helper generates the CREATE STAGE SQL with the right clause by default.
  • Per-destination role enforcement is policy-only in v2.0. The access policy is recorded and displayed in Settings → Users but not enforced at runtime. Runtime enforcement is on the roadmap.
  • v2.0 sensitive-data detection is heuristic. The 45 built-in rules cover common PII / PCI / PHI / credential patterns but won't catch every edge case in unusual schemas. Detected matches always appear in the wizard for review; add custom rules for domain-specific patterns. Treat the detector as an assistant, not as a compliance certification.
  • v1.x scheduled exports keep cleartext on upgrade to v2.0. Masking is opt-in for legacy schedules and default-on for new ones. This is intentional (non-breaking migration) but means you have to actively roll masking out to existing schedules on whatever cadence fits your audit calendar.
  • AI assist (v1.3) requires Snowflake Cortex on your account and is Pro / Trial only. On accounts without Cortex, the AI panel renders an explainer and the manual wizard continues to work normally.
  • Per-file size follows Snowflake's COPY INTO limits (16 MB for SINGLE = TRUE; partitioned output for larger results).

Release notes

All shipped versions live in the unified changelog:

  • v2.3 (current) — Incremental Extract: watermark-based CDC for any audit-tracked table, bulk setup for 500-table scale, universal SYNC_KEY coverage across all 10 delivery surfaces. Details →
  • v2.2.11 — Compliance enforcement extended to Reverse ETL (Salesforce and HubSpot upserts now gated by the policy engine). Details →
  • v2.2.0–.10 — Reverse ETL foundation: Salesforce (JWT Bearer) and HubSpot (Private App) connectors with field mapping, schema discovery, state fingerprints, and reconciliation. Details →
  • v2.1.0–.6 — Policy gates across all 10 delivery surfaces, approval queue with role-based assignment, COMPLIANCE_AUDIT extension columns. Details →
  • v2.0 — Compliance & Governance foundation: automatic PII/PCI/PHI detection, mask-by-default delivery, Webhook + SFTP modes, Reports tab. Details →
  • v1.3 — AI-assisted export creation via Snowflake Cortex. Details →
  • v1.2 — Slack and Microsoft Teams channel delivery, unified Notifications settings, targeted bug fixes. Details →
  • v1.1 — UX and performance improvements (patch release). Details →
  • v1.0 — initial release. Details →