BigQuery to Slack, without the surprise bill
Post a scheduled BigQuery result straight into a channel, with a per-query scanned-bytes cap so a recurring report cannot quietly become expensive. From €19/month.
Service account auth · Per-query cost cap · No credit card required
SELECT count(DISTINCT session_id) AS sessions, count(DISTINCT user_pseudo_id) AS users FROM events_* WHERE _TABLE_SUFFIX = '20260726';
SaturnSQLAPP
GA4 yesterday
Sessions: 18,402
Users: 11,238
Signups: 96
Open in SaturnSQL
Why the cap matters
BigQuery bills per byte scanned, and a schedule multiplies one careless query by up to 720 runs a month. The connection-level cap rejects a query that would scan more than your limit before it runs, which is the difference between a report and an incident.
Set it up in five minutes
No Cloud Function. No Scheduled Query wired to Pub/Sub. No webhook to host.
Connect BigQuery
Add a service account key and set a scanned-bytes cap, so a scheduled query has a known worst-case cost.
Filter the partition
Write the query against one day rather than the whole table, and check the bytes scanned before you save.
Schedule to a channel
Pick the Slack channel and a cadence, and optionally template the message into a sentence.
Three flows worth wiring up
The GA4 morning digest
Yesterday’s sessions, users, and conversions from the GA4 export, posted at 08:00. Answers the question people would otherwise open four Analytics tabs for.
The spend check
Ad spend and cost per acquisition by channel, daily. Cheap to run when the query filters on the date partition, and it catches a runaway campaign the same day.
The pipeline heartbeat
Row counts from the tables your loads write to, with the query returning nothing when everything landed. Silence means the pipeline is healthy.
Working with the GA4 export specifically? Our guide to querying GA4 data in BigQuery covers the table layout and the partition filters that keep these queries cheap.
A sentence beats a table
Alias a column in SQL, reference it in braces, and the post reads like something a person wrote rather than a grid nobody parses on a phone.
Template
GA4 {date}: *{sessions}* sessions, {users} users, {signups} signups.Posts as
GA4 2026-07-27: 18,402 sessions, 11,238 users, 96 signups.
Placeholders resolve against the first result row. Built-ins {results}, {row_count}, {query_name} and {date} are always available. An unknown placeholder fails the delivery rather than posting a blank, because a silently wrong metric is worse than a missing one.
Where Slack is the wrong destination
Slack caps a message section at roughly 3,000 characters, and SaturnSQL fails the delivery rather than truncating it. Half a table posted as if it were the whole answer is worse than a delivery you get told about.
With BigQuery this rarely bites, because the queries that belong in Slack are aggregates, and aggregates are also the cheap ones to scan. If the honest answer is a large extract, schedule it to Google Sheets and post a short summary alongside. A schedule has one destination, so that is two schedules on the same saved query.
Frequently asked questions
How do I send a BigQuery query to Slack automatically?
Connect BigQuery with a service account, write and save your query, then add a schedule with Slack as the destination and pick a channel. No Cloud Function and no Scheduled Query wired through Pub/Sub.
Will a scheduled report run up my BigQuery bill?
That is the real risk with recurring BigQuery work: you pay per byte scanned, and hourly scheduling turns one careless query into 720 runs a month. The connection carries a per-query scanned-bytes cap, and a query that would exceed it is rejected before it runs.
Can I post a daily GA4 summary?
Yes, and it is the most common use of this. Query the GA4 export for yesterday, filter on the partition so you scan one day rather than the whole history, and schedule it into a channel each morning.
How large a result can I post?
Around 3,000 characters, which is a Slack limit rather than ours. SaturnSQL fails rather than truncating, so you are told instead of quietly misinformed. Aggregate for Slack, and send full extracts to a sheet.
Which other databases can post to Slack?
All of them. See Redshift to Slack, or the overview for Postgres, MySQL, SQL Server, and ClickHouse.
Your BigQuery numbers, in the channel
From €19/mo, with a cost cap on every scheduled run.
Start free for 14 daysNo credit card required.
Use Cases
Help
Learn SQL
© 2026 Panda Capital Oy Ab. All rights reserved.