Skip to main content
This page covers the connections that pull conversation data into Rippit on a schedule, currently Intercom, Zendesk, Granola, Gong, Fireflies, Attention, Decagon, Freshdesk, and Slack. For the MCP server and Rippit’s own MCP client, see MCP security.

How authentication works

Rippit connects to Intercom, Zendesk, and Slack through the OAuth 2.0 authorization code grant. You authenticate against your helpdesk, never against Rippit, and Rippit never receives a password or an API key. Granola, Gong, Fireflies, Attention, Decagon, and Freshdesk are the exceptions: they connect with credentials you create in the source system. See Granola: API key, Gong: access key, Fireflies: API key, Attention: API key, Decagon: API key, and Freshdesk: API key. The authorization request carries a single-use state nonce that expires if it is not redeemed, so a replayed callback matches nothing. After the exchange, Rippit verifies the token against the source system before storing the connection, and rejects a source account already connected to your workspace. Where the source system supports a scope parameter, Rippit requests read access in this step. Zendesk receives scope=read. Intercom has no scope parameter, so permissions come from the Intercom app configuration shown on its authorization screen. Slack receives a list of bot scopes, four of which the installing admin can decline. See Slack for the list.

The token Rippit holds

Rippit stores the OAuth token issued for the account that authorized the connection, and uses it for every scheduled sync. For Zendesk this is an access token and a refresh token, which Rippit uses to renew access before it expires. It acts as that account, which is why the account you choose determines what Rippit can reach. Slack is the exception: Rippit holds a bot token, which acts as the Rippit Data Ingestion bot rather than as the person who installed it. Revoking the grant in your helpdesk invalidates the token immediately.

Granola: API key

Granola connects with an API key you create in Granola and enter in Rippit. Rippit tests the key against Granola before saving the connection, stores it, and sends it as a bearer token on every scheduled sync. Every call to Granola is a GET. Remove makes no call to Granola, so revoke the key in Granola to stop it working. See Granola for the endpoints.

Gong: access key

Gong connects with an access key and access key secret you create in Gong, plus your Gong subdomain. Rippit tests them against Gong before saving the connection, stores both, and sends them as HTTP Basic authentication on every scheduled sync to https://<subdomain>.api.gong.io. Gong’s read endpoints take their filters in a POST body, so most calls to Gong are POSTs that only read. Remove makes no call to Gong, so revoke the access key in Gong to stop it working. See Gong for the endpoints.

Fireflies: API key

Fireflies connects with an API key you create in Fireflies and enter in Rippit. Rippit tests the key against Fireflies before saving the connection, stores it, and sends it as a bearer token on every scheduled sync to https://api.fireflies.ai/graphql. Fireflies has a single GraphQL endpoint, so every call is a POST that carries a read query, and Rippit sends no mutations. Remove makes no call to Fireflies, so revoke the key in Fireflies to stop it working. See Fireflies for the queries.

Attention: API key

Attention connects with an API key you create in Attention and enter in Rippit, either a user-level key or an organization-level key. A user-level key imports only its owner’s calls unless you choose all calls the owner’s teams can see. Rippit looks the key up in Attention to learn which kind it is, tests the key before saving the connection, stores it, and sends it as a bearer token on every scheduled sync to https://api.attention.tech. Every call to Attention is a GET. Remove makes no call to Attention, so revoke the key in Attention to stop it working. See Attention for the endpoints.

Decagon: API key

Decagon connects with an API key you create in Decagon and enter in Rippit. Rippit tests the key against Decagon before saving the connection, stores it, and sends it as a bearer token on every scheduled sync. The optional team ID only names the connection in Rippit and is not sent to Decagon. Every call to Decagon is a GET. Remove makes no call to Decagon, so revoke the key in Decagon to stop it working. See Decagon for the endpoints.

Freshdesk: API key

Freshdesk connects with an API key and your Freshdesk subdomain. The key must belong to a Freshdesk Administrator or Account Administrator, because Rippit’s credential check reads the agent list, which Freshdesk restricts to administrators. Rippit tests the key against Freshdesk before creating the connection, stores it, and sends it as HTTP Basic authentication on every scheduled sync to https://<subdomain>.freshdesk.com/api/v2. Every call to Freshdesk is a GET. Remove makes no call to Freshdesk, so regenerate the key in Freshdesk to stop it working. See Freshdesk for the endpoints.

Access scope

Rippit never modifies your data. There is no code path that creates, updates, or deletes conversations, users, or any other record in your helpdesk. The only non-GET calls to Zendesk are the OAuth token exchange, refresh, and the revocation Rippit sends when you remove the integration. Rippit creates no Intercom conversations, replies, notes, or tags. Every call to Granola is a GET. Calls to Gong are GETs or POSTs to Gong’s read endpoints, and none creates, updates, or deletes anything in Gong. Every call to Fireflies is a POST carrying a read query, and none is a GraphQL mutation. Every call to Attention is a GET. Every call to Decagon is a GET. Every call to Freshdesk is a GET. Rippit posts, edits, and deletes no Slack messages. Its only writes to Slack are joining the public channels you select and a private reply, visible only to that person, to whoever invites the bot to a channel. Rippit can read only what the connected credential can read. A Zendesk token, or a Fireflies, Freshdesk, or user-level Attention key, sees what its user sees. For those, authorize with a dedicated account where you can, so you control what Rippit can see. In Slack, Rippit reads only the public channels you select and the private channels you invite its bot to.

What reaches Rippit

Full conversation content, not just metadata: message bodies, participants, and attached fields including custom fields. Zendesk, Freshdesk, and Slack attachments, Gong call recordings, and Decagon voice recordings are downloaded and stored rather than linked. Rippit does not train any AI models. Your data is used for inference only.

Revoking access

Revoking Rippit’s authorization in the source system stops the token from working immediately. Remove in Rippit deletes the stored connection and stops future syncing. Neither deletes conversations already imported. See how data integrations work for what account deletion does and does not remove.

Hosting and compliance

Subprocessors: AWS (US and EU), MongoDB, Coralogix, Fullstory (no end user data), Google Cloud Platform (Gemini, US only, where used). Signing up for Rippit accepts the Terms of Service and Privacy Policy. No separately negotiated contract is required, and the Privacy Policy is what governs personal data by default. A standard Data Processing Addendum is available on request, alongside current certificates, audit reports, and the full subprocessor list, from the Rippit Trust Center.