Skip to content
Help center

Automations

Gatlas can tell a Slack channel when a sync fails, post a weekly digest or a board pack on a schedule, answer a reporting question for a company, and keep a dataset current in another tool. Nobody has to remember to check.

Connect a Slack channel for your business

Slack alerts and messages are set up for your business, or per company when you have several, or once for the whole workspace. The owner connects Slack for the workspace and for each top-level company. Admins and principals can also do it for companies nested under another company. Other roles do not see these settings.

A Slack connection and its reports cover a company and everything under it, so setting one up takes access to all of that. Someone whose access is Only specific companies cannot manage Slack or scheduled reports, whatever their role.

1

Choose where alerts should go

Open Automations in the sidebar. The list shows your workspace and your business, or each company, with its Slack channel and a status of Not connected, Connected or Paused. Choose one.

2

Connect Slack yourself, or send an install link

Connect Slack takes you to Slack to approve Gatlas and pick a channel. If someone else administers your Slack, choose how long the link should last under Install link expires in (1, 3 or 7 days), then Create install link. The link is copied for you to send; they need no Gatlas account.

3

Send a test

Once connected, Send test posts a message to the channel. If Gatlas cannot post there, invite @Gatlas to the channel. Change channel, Pause and Disconnect sit beside it.

Alerts tell you the moment something needs a person

Open Alerts under the company and tick the events Gatlas should post about. When you connect a channel, every event except Anomaly detection starts ticked. The events:

  • Sync failures
  • Stale connections
  • Connection needs reconnecting
  • Anomaly detection
  • New connections
  • New members
  • New agent keys
  • Sync recovered
  • A brief stopped updating
  • Agent key first used
  • Agent key revoked or changed
  • Agent feedback
  • Connection removed
  • Member removed

Anomaly detection posts when a sync brings in more than three times a source's recent average, less than a fifth of it, or nothing at all, and when a source's own row count for a stream and Gatlas's disagree several syncs in a row. It also posts when a stream has returned nothing for more than seven days from a saved position that has not moved, while the source's other streams kept syncing. A stream that is only quiet does not set it off, and a stuck stream posts once until it moves again. To read a stuck stream from the start, open the source and choose Full refresh in the menu beside Sync now.

Keep Sync failures, Stale connections and Connection needs reconnecting on at least. A broken connection is fixed in minutes when someone hears about it, and found weeks later when nobody does.

Scheduled messages arrive on a rhythm you set

Open Scheduled messages under the company and choose Add scheduled message. Pick the Message:

  • Weekly digest: connection health, sync activity and approved datasets for the last seven days.
  • Usage summary: how agents used Gatlas in the last 24 hours. It is skipped on days with no activity.
  • Source health: which connections are failing or stale right now.
  • Artifact: one of your artifacts, posted with a short intro and an Open artifact button.

Then set the Cadence (daily, twice daily, weekly or monthly), the Send time, the Timezone, and the Channel if it should go somewhere other than the connected one. Preview shows the message before you save. A channel connection holds up to 20 scheduled messages.

Every new channel comes with two: a usage summary every day at 09:00 UTC, switched on, and a weekly digest on Mondays at 09:00 UTC, switched off. Edit or switch off either one.

Tip

An artifact's intro can use placeholders that are filled in when it is sent: {artifact_name}, {artifact_description}, {scope_name} and {date}. Monthly board packs work well this way: build the artifact once, then schedule it for the first of the month.

Scheduled reports answer a reporting question for a company

A scheduled report puts one question to an agent that reads a company and everything below it: its approved datasets, briefs and AI context. It cannot reach outside sources or change anything, and every answer cites the data it used.

1

Open Scheduled reports under the company

It appears once the company has a Slack channel connected. It is not available for the workspace as a whole.

2

Ask the question

Fill in Reporting question, for example "How did gross margin develop this quarter, and what drove it?", and check Reporting timezone. Additional context is a note for the people reading the report later; the agent never sees it. Choose Run report.

3

Read the result

The run is queued and appears under Recent runs. Open it to read the report and the evidence behind it, choose Run again for a fresh answer, or Revoke sign-off to stop it.

Note

Scheduled reports are new. While they roll out, only owners create and rerun them. Admins and principals can read the runs for companies nested under another company. A report stays in Gatlas: it does not post to Slack or create an artifact.

Reverse syncs keep a dataset current in another tool

A reverse sync pushes a dataset into another tool, its destination, and keeps it current there: a Google Sheet, a Slack channel or a webhook. Open Reverse syncs on the Automations page and choose Create reverse sync.

Verify a reverse sync webhook

A reverse sync can send a dataset to a webhook. When its destination has a webhook secret, every delivery carries two headers. Gatlas-Timestamp is the time of the send in Unix seconds. Gatlas-Signature is v1= followed by the hex HMAC-SHA256, keyed by the secret, of the timestamp, a period and the exact request body. A delivery without a secret carries neither header, and a Slack destination is never signed.

To check a delivery, compute the same signature over the raw body before parsing it, compare the two in constant time, and reject a timestamp more than 5 minutes from your clock, so an old delivery cannot be replayed. In Python:

import hashlib, hmac, time

def verify(secret: str, body: bytes, timestamp: str, signature: str) -> bool:
    try:
        if abs(time.time() - int(timestamp)) > 300:
            return False
    except ValueError:
        return False
    expected = hmac.new(secret.encode(), timestamp.encode() + b"." + body, hashlib.sha256)
    return hmac.compare_digest(("v1=" + expected.hexdigest()).encode(), signature.encode())