Integrations overview
The Inputs, Outputs, Rules and AI tabs, how Jason sets up a new integration, the Test button, statuses, and the integration page.
An integration connects a workspace to something outside it. Inputs bring data in or start runs. Outputs are where messages and rows go. Rules decide when something is sent. AI connections let an assistant, the command line or a Slack channel work in the workspace. All of them live under Integrations in the sidebar.
- Connectpick a service
- Jason sets it upfrom your request
- Add your keyson the integration page
- Save and Testone real check
- Userules, pipelines, your tools
The four tabs
The Integrations page is split into four tabs. Each tab shows a count of what it holds, and /integrations opens Inputs.
| Tab | What it holds | Sections on the tab |
|---|---|---|
| Inputs | Anything that starts a pipeline or pulls data in for one | Inputs: “What starts pipelines or pulls data in for them” |
| Outputs | Destinations. Rows go to data outputs, messages go to notifications | Data outputs: “Where rules send rows, and dataset APIs other systems fetch”. Notifications: “Where rules send messages and run updates” |
| Rules | Alert rules, which decide when a message or rows are sent, and to which output | A card per rule |
| AI | Ways to work with Jsonify from somewhere else | Jason and agents: “Jason in Slack, and CLI access for you and your agents”. Assistant connections: “AI assistants such as ChatGPT, Claude and Microsoft Copilot that can work in this organisation” |
An output does nothing on its own. It is a place to send to. A rule chooses the output and decides what is sent and when, so one output can serve rules on many pipelines. See Sheets, warehouses and webhooks for how rows reach an output.
The list
The Inputs, Outputs and AI tabs share one layout. The page title is the tab’s name.
Each card shows:
A card that still needs setup is tinted amber across its whole surface. Click a card to open its integration page.
Each tab has its own empty state:
| Tab | Empty state |
|---|---|
| Inputs | “No inputs yet. Pull rows in from Google Sheets or an API, or let other systems start your pipelines.” |
| Outputs | “No outputs yet. Connect Google Sheets, Slack, email or a webhook so rules have somewhere to send.” |
| AI | “No AI connections yet. Use Jsonify from ChatGPT, Claude, Microsoft Copilot or Slack.” |
What you can connect
The picker lists these services. A service that can both bring data in and send it out appears on both the Inputs and the Outputs tab. Once connected, an integration’s card and page name its type, which is sometimes worded differently from the picker.
| Service | Tabs | What it does | Type shown on its card | Details |
|---|---|---|---|---|
| Google Sheets | Inputs, Outputs | Send results to a sheet, or bring rows in from one | Google Sheets | Sheets, warehouses and webhooks |
| Snowflake | Inputs, Outputs | Keep a Snowflake table in sync, or bring a query result in | Snowflake | Warehouses and S3 |
| S3 | Inputs, Outputs | Write rows to a bucket, or read objects in. Any S3-compatible store | S3 | Warehouses and S3 |
| Postgres | Inputs, Outputs | Keep a Postgres table in sync, or bring a query result in | Postgres | Warehouses and S3 |
| MySQL | Inputs, Outputs | Keep a MySQL table in sync, or bring a query result in | MySQL | Warehouses and S3 |
| BigQuery | Inputs, Outputs | Keep a BigQuery table in sync, or bring a query result in | BigQuery | Warehouses and S3 |
| Outputs | Email alerts when runs fail or data changes | Email notifications | Slack and email | |
| Slack alerts | Outputs | Post alerts and new rows to a Slack channel | Slack webhook | Slack and email |
| Browser notifications | Outputs | Browser alerts, even when Jsonify is closed | Browser push | Slack and email |
| Webhooks | Inputs, Outputs | Send rows or alerts to your URL, receive JSON from your system, or start a pipeline run when your system calls a URL | Send rows webhook, Send alert webhook, Receive JSON webhook, Pipeline Trigger | Webhook outputs, alert webhooks, ingest, triggers |
| Read from an API | Inputs | Pull rows from a JSON URL into a dataset | Fetch external JSON | Ingest and serve API |
| Publish an API | Outputs | Serve a dataset’s latest rows at a GET endpoint | Publish Dataset API | Ingest and serve API |
| Jason in Slack | AI | Chat with Jason from your Slack channels | Jason for Slack | Slack and email |
| ChatGPT, Claude & Microsoft Copilot | AI | Use Jsonify from your AI assistant | Assistant connection | Connect your agent (MCP) |
| Jsonify CLI | AI | Command-line access for you and your agents | Jsonify CLI | Command line |
Something not on the list? Type its name in the picker’s filter and choose Ask Jason about “…”. Jason tells you whether it can be connected and how.
Connecting a service
You do not fill in a setup form. You pick a service, say what it should do, and Jason creates the integration. Anything secret, such as a webhook URL, a password or a key, you type yourself on the integration page.
- Open the picker. Press Connect Input, Connect Output or Connect AI. The dialog lists the services for that tab. Type in Filter services… to narrow it; when nothing matches, the last line offers Not listed? Ask Jason about “…”.
- Pick a service. The dialog turns into Connect {service}, “Jason sets this up. You add any keys yourself.”
- Say what it should do. Type in What should it do?, or press one of the Suggestions pills to fill the box, for example “Post to Slack when a pipeline run fails”. Attach adds a file for Jason to read, Link points Jason at a pipeline or dataset, and you can drop files onto the box.
- Send to Jason. (Cmd/Ctrl+Enter also works.) Jason opens a new conversation, creates the integration and, where it needs one, the alert rule. Back returns to the service list.
- Add your keys. Jason links to the new integration’s page. Open it, fill in any field marked with an asterisk on the Settings tab, and press Save.
- Test. Press Test in the page header to send a test message or run the connection check.
Three services need something only your browser can do, so they open their own dialog instead of the Jason step. Each dialog has a Back button to the service list.
| Service | Dialog | See |
|---|---|---|
| Jason in Slack | Connect Jason in Slack, with Install Jason in Slack | Jason in Slack |
| ChatGPT, Claude & Microsoft Copilot | Connect your assistant, with Connect and Advanced tabs and Check connection | Connect your agent (MCP) |
| Jsonify CLI | Connect Jsonify CLI, with Label and Access | Command line |
Secret fields say “Only you enter this — Jason never sees it.” Jsonify stores them encrypted and never shows them again, not even to you. Once saved, the field reads “Set — enter a new value to replace it.” Leaving it empty keeps the stored value.
Save and Test
Save on the Settings tab checks the settings before it turns the integration on. If the check fails you see “Couldn’t turn this on:” with the reason, and the integration stays as it was. On success the toast reads “Integration connected” the first time and “Integration saved” after that.
Test, in the page header, tries a live integration for real. It is disabled until the integration is Live, with the tooltip “Finish setting up this integration to test it”, and every test is recorded on the Activity tab.
What the check does, by type:
| Integration | What Save and Test check |
|---|---|
| Slack alerts | Save posts “:white_check_mark: Jsonify connected” to the channel. Fails if the URL is not a Slack incoming webhook or Slack rejects it |
| Save sends “Jsonify: integration connected” to the recipient | |
| Alert webhook | Save posts {"kind": "test", "message": "Jsonify connected"} and expects a success answer within ten seconds |
| Webhook output | The URL starts with http:// or https://. Nothing is sent until a rule fires |
| Google Sheets output | Opens the spreadsheet as your connected Google account, creating it the first time |
| Google Sheets input | Reads the sheet through its public link. Fails if the sheet is not shared with “Anyone with the link” |
| Snowflake, BigQuery, Postgres, MySQL, S3 | Connects with your settings and proves Jsonify can write (outputs) or read (inputs). See Warehouses and S3 |
| Read from an API | Fetches the endpoint once, without the auth header, and checks it returns JSON |
| Receive JSON webhook, Publish an API, Pipeline Trigger | Checks the dataset or pipeline is set. The URL exists as soon as the integration does |
| Browser notifications | No check. Each browser subscribes separately |
Statuses
The status dot on a card and the label in the page header mean the same thing.
| Status | Colour | What it means | What to do |
|---|---|---|---|
| Live | Green | Set up and checked. Inputs accept data, outputs can be sent to, secret URLs work | Nothing |
| Needs setup | Amber | Created, usually by Jason, but not yet saved with every required field, or the last check failed | Open it, fill in Settings and press Save |
| Paused | Grey | Turned off. Nothing is sent or accepted | Ask Jason to turn it back on, or press Save on its Settings tab |
| Requested | Grey | An earlier request for an integration that is not available | Contact support |
| Revoked | Red | A CLI key that was revoked, or a Jason in Slack channel whose authorising member lost access | Issue a new key, or reconnect the channel from Slack |
Secret URLs and keys work only while the integration is Live. A request to any other status is refused.
The integration page
Click any card to open it.
The header shows:
Below it are up to five tabs, in this order:
| Tab | Shown for | What it holds |
|---|---|---|
| Settings | Every integration | What the integration does, any connection details (a URL to copy, a Google account, a Snowflake connection), every field, and Save |
| Code | Receive JSON webhook, Publish an API, Pipeline Trigger | Code samples for Python, cURL and JavaScript (Node.js), Python first and open. See Triggers |
| Rules | Notification integrations, and outputs that receive rows | The alert rules sending here, with a count |
| Activity | Every integration | What it sent, received, pulled or started, newest first |
| Delete | Every integration | Delete integration |
A new integration that still needs details shows “Fill in the remaining details and save to turn this integration on.” above its fields.
Rules
The Rules tab explains what the integration receives. On an output: “This integration is where rows go. Each alert rule decides when and which rows: a whole dataset on every update, what a run published, or only the rows that match.” On a notification integration: “This integration is where messages go. Each alert rule decides when to send one, for a pipeline, a dataset, or the whole workspace.”
Each rule sending here is a card with its on/off switch and a Delete menu item, with a confirmation. Click a card to open the rule’s page. The Add alert rule tile opens the new-rule dialog with this integration already chosen.
Activity
“Every delivery and request through this integration, newest first.” Each entry has a status (Succeeded, Failed or Skipped), a message such as “Received 2 rows into Supplier catalogue v18”, how long ago, the rule that caused it, links to the run and the dataset version, and the error text when it failed. Refresh reloads the list.
| Integration | Empty state |
|---|---|
| Notifications | “Nothing has been sent here yet. Messages appear when an alert rule fires.” |
| Outputs | “No rows have been sent yet. They go out when the dataset gets a new version.” |
| Inputs | “Nothing has come in yet.” |
| AI | “This integration has no activity to show.” |
Where integrations appear elsewhere
| Place | What you see |
|---|---|
| An alert rule | The Send to choice: every live notification integration and every output that receives rows |
| A pipeline’s Integrations tab | Under How it works: Input integrations, Output integrations and Alert rules for that pipeline, with Add input, Add output and Add alert rule tiles. See Pipelines |
| A run’s Integrations tab | In (what started or fed the run), Alerts (rules that fired) and Out (where its rows went). See Run detail |
| A dataset page | A Connections strip listing the inputs that feed it and any Publish an API output, with Sync when a pulled input exists |
| A pipeline’s Run dialog | “Pipeline Trigger attached”, or “2 triggers attached”, linking to the trigger |
| A Jason task | Notify me, with a Notify me by menu listing browser notifications and every live Slack, email and webhook integration |
| Conversations | Conversations started from Slack, the CLI or an assistant carry a badge naming where they came from |
Which integration do I need?
| You want to | Use |
|---|---|
| Hear about a failed run or a change in the data, in Slack or by email | A notification integration plus an alert rule |
| Keep a spreadsheet matching a dataset | A Google Sheets output plus an Every update rule |
| Load rows into your warehouse or database | A Snowflake, BigQuery, Postgres, MySQL or S3 output plus a rule. See Warehouses and S3 |
| Send rows to your own system when they change | A webhook output plus a rule, or Publish an API fetched by your loader |
| Let an app read the latest rows on demand | Publish an API |
| Feed rows from a form, a partner or an internal job into a dataset | A Receive JSON webhook input |
| Use a sheet, an endpoint or a query result as a pipeline input | Google Sheets, Read from an API, or a warehouse input |
| Start a run from a scheduler, a deploy or another tool | A pipeline trigger |
| Work with Jsonify from a terminal, a job or an agent | Jsonify CLI |
| Work with Jsonify from ChatGPT, Claude, Copilot or another assistant | An assistant connection |
| Let a Slack channel talk to Jason | Jason in Slack |
Who can do what
Anyone who can open the workspace can see the Integrations page, ask Jason for an integration, edit its settings and delete it. Three things are held to a tighter rule:
Removing an integration
Remove an integration from the card menu (Delete), the bulk bar after selecting several cards, or the integration page’s Delete tab (Delete integration). Each asks you to confirm.
Deleting is immediate and permanent. The Delete tab says what stops:
Assistant connections are not deleted with workspace integrations, because they belong to your account. Open one and use its Disconnect tab. See Managing connections.
Folders
Every tab supports folders: create, rename and delete them, and move integrations into them from the card menu or the bulk bar. Folders keep a busy page readable, for example one folder per customer whose CLI keys and webhooks you manage. They change nothing about how an integration behaves.
Assistant connections cannot be moved into folders; the page tells you so if you try.
A busy team usually ends up with one folder per destination system and one for keys. Keep names descriptive too: “Slack #pricing-alerts” reads better in a rule’s Send to list than “Slack”.