Any database → Slack

Send SQL results to a Slack channel

The dashboard nobody opens is the most common failure in operational reporting. Write the query once, pick a channel, and the answer arrives where your team already is. From €19/month.

Seven databases · No webhook code · No credit card required

daily_revenue.sqlpostgres
SELECT
  sum(amount) AS revenue,
  count(*) AS orders
FROM payments
WHERE created_at >= current_date - 1;
Every morning
#leadership08:00

SaturnSQLAPP

Daily revenue

Revenue yesterday: €48,290

Orders: 214

vs 7-day average: +6.1%

Open in SaturnSQL

Pick your database

The Slack destination belongs to the schedule, not the driver, so every connection can post.

Set it up in five minutes

No webhook to host. No cron box. No reverse-ETL platform in the middle.

Step by step, with screenshots, in the Slack export help guide.

1

Connect your database

Add a read-only connection. Postgres, MySQL, SQL Server, Redshift, ClickHouse, BigQuery, and DynamoDB all work.

2

Aggregate in SQL

Write the query so it returns a few rows, not a raw extract. Chat rewards a summary.

3

Schedule to a channel

Pick the Slack channel, choose hourly, daily, or weekly, and optionally template the message.

Patterns

Three flows worth wiring up

#leadership

The morning digest

Yesterday’s revenue, signups, and churn as three numbers at 08:00. Short enough to read on a phone, which is the entire point of putting it in chat rather than a dashboard.

#billing

The work queue

Failed payments or stuck orders posted to the team that clears them. The thread under the message becomes the record of who handled what.

#data-alerts

The exception alert

A query written to return zero rows when everything is fine. The message appearing at all is the signal, which keeps the channel quiet on a good day.

Choosing

Sheet or channel?

Sheets are a pull destination. Slack is a push destination. The split is usually obvious once you ask who reads the output and what they do next.

Google SheetsSlack
Best forLists people work throughNumbers people must notice
Result sizeThousands of rowsAggregates and short lists
HistoryAppend mode keeps every runThe channel is the log
DownstreamPivot, chart, embed elsewhereReply, assign, act in thread
Gets seenWhen someone opens itOn arrival

Most teams run both. A schedule has a single destination, so a query that needs to reach both surfaces gets two schedules. For the spreadsheet half, see database to Google Sheets.

Where Slack is the wrong destination

Slack caps a message section at roughly 3,000 characters. SaturnSQL fails the delivery rather than truncating it, because half a table posted as if it were the whole answer is worse than a delivery you get told about.

The fix is almost always to aggregate rather than to paginate. A channel is a bad place to read 500 rows even when the platform allows it. Send the extract to a sheet, and post the headline number to Slack with a link.

FAQ

Frequently asked questions

How do I send SQL query results to Slack?

Connect your database with a read-only user, write and save the query, then add a schedule with Slack as the destination and pick a channel. The query runs on your cadence and the result posts itself. No webhook to host and no code to write.

Which databases can post to Slack?

PostgreSQL, MySQL and MariaDB, SQL Server, Redshift, ClickHouse, BigQuery, and DynamoDB. The Slack destination belongs to the schedule rather than the driver, so anything you can query you can post.

How large a result can I post?

Around 3,000 characters, which is a Slack limit rather than ours. SaturnSQL fails the delivery instead of truncating, so you are told rather than quietly misinformed. Aggregate for Slack, and send full extracts to a sheet.

Can I customise the message?

Yes. The default is a monospace table with a link back to the query. A message template lets you write a sentence instead, filling in column values and built-ins like {row_count} and {date}. An unknown placeholder fails the delivery rather than posting a blank.

Is this the same as reverse ETL?

It is the simplest form of it. See our reverse ETL guide for where the line sits: you need a platform like Census or Hightouch when the destination is a SaaS API, not when it is a channel or a spreadsheet.

Put the number in the channel

From €19/mo. Five minutes to set up, and nobody has to open a dashboard again.

Start free for 14 days

No credit card required.