Connecting your tools
Connectors let you pull feedback into BAI Analytics directly from the tools your team already uses and analyse it alongside surveys, uploads, and scraped reviews. Once connected, a platform keeps feeding new tickets, survey responses, or rows into your Feedback Groups automatically, with no exports, no copy-pasting, and no scheduled scripts.
There are two kinds of connection, and both are managed from the same place:
Support and work tools (Zendesk, Intercom, Linear, GitHub Issues, and so on). You sign in to the platform from BAI Analytics, then import tickets into a Feedback Group with filters and a time range.
Survey and CX platforms, data warehouses, and file storage (Qualtrics, SurveyMonkey, Medallia, InMoment, Snowflake, BigQuery, Amazon S3, SFTP, and so on). You connect with credentials or a key, then add a sync that maps the platform's fields onto a Feedback Group and runs on a schedule.
This page covers how connectors work end-to-end: what platforms are supported, how the Integrations page is laid out, how to connect and configure each kind, and how the imported data behaves once it lands in BAI Analytics.
For the container that holds connector data, see Feedback Groups. For other ingestion paths, see Uploading an Existing Dataset, Social Listening, and Creating a Survey.
When to use a connector
Use a connector when:
Your support team uses Zendesk, Freshdesk, Intercom, Front, ServiceNow, Salesforce Service Cloud, Zoho Desk, or a similar help desk and you want every customer ticket (past and ongoing) analysed for themes, sentiment, and monitored issues.
Your product or engineering team tracks bugs and requests in Linear, GitHub Issues, GitLab, Azure DevOps, Asana, ClickUp, Trello, Shortcut, Wrike, or a similar tool and you want to mine those for recurring patterns.
Your survey programme runs in Qualtrics, SurveyMonkey, Medallia, or InMoment and you want open-ended answers analysed continuously, survey by survey, without exporting.
Your feedback already sits in a data warehouse (Amazon Redshift, Snowflake, Google BigQuery, Databricks) or arrives as files in an Amazon S3 bucket or on an SFTP server, and you want BAI Analytics to read new rows or files on a schedule.
Your tool isn't in the catalogue but it's one of the thousands of apps on Zapier, and a Zap can push its feedback into BAI Analytics (see Importing through Zapier below).
You want always-on ingestion: new records land in BAI Analytics on a fixed cadence without anyone exporting a CSV.
If your data is already exported as a spreadsheet, Uploading an Existing Dataset is faster. If you need responses from outside any platform you control (public reviews, social posts), see Social Listening.
Supported platforms
The Add a connection catalogue on the Integrations page is searchable and grouped by category. This is what it contains today:
Customer support
Dixa, Freshdesk, Freshservice, Front, Help Scout, Intercom, Kustomer, Re:amaze, Salesforce Service Cloud, ServiceNow, Zendesk, Zoho Desk
Surveys & CX
InMoment, Medallia, Qualtrics, SurveyMonkey
Work management
Asana, Basecamp, ClickUp, Hive, Teamwork, Trello, Wrike
Development
Azure DevOps, Bitbucket, GitHub Issues, GitLab, Linear, Pivotal Tracker, Shortcut, Zoho BugTracker
Legal & contracts
Ironclad, SpotDraft
Data warehouses
Amazon Redshift, Databricks, Google BigQuery, Snowflake
File storage
Amazon S3, SFTP
Each support or work tool exposes a slightly different feature set on the source side: for example, priority and due date exist in Linear but not in Trello, ticket type in Zendesk but not in GitHub Issues. BAI Analytics knows what each platform supports and only shows import options that are actually applicable, so you never see a filter that does nothing.
Availability
Connectors are enabled per organisation by the BAI Analytics team. When the feature is not enabled for your organisation, the Connectors tile in a Feedback Group reads Not enabled for your organization and the Integrations page is locked in the sidebar. Contact your account manager to have it switched on. Once enabled, every platform in the catalogue is available; there are no per-platform restrictions.
The Integrations page
Open Integrations from the main navigation. The page has three sections:
Connections: the tools and platforms your organisation has linked. Everything on this page lives here.
AI assistants: connect Claude or another MCP client to your data (read-only).
Developer tools: API keys and Webhooks, for pushing data in and getting notified of events. See the API documentation and webhooks.
The Connections section
The principle is simple: connect a platform once, then link it to the Feedback Groups that need its data.
Your connections lists every linked account, grouped by category (Customer support, Surveys & CX, Data warehouses, File storage, and so on). Each row shows the platform logo, the connection name, a health label, how many Feedback Groups it feeds (Used by 2 group(s)), and when it was last active.
Add connection opens the catalogue: search apps, filter by category, and pick a tile. Tiles you have already connected show a 1 connected count.
Expanding a row shows the Feedback Groups it feeds, one line per sync, each with a status chip (Syncing, Paused, Failing), the last sync time, a Sync now button, Pause / Resume, and a delete control. Below that are the connection-level actions: Test connection (survey, CX, warehouse, and storage connections), Feed a group… (to add a sync), Reconnect (support and work tools), and Disconnect.
Health labels on a connection row mean:
Connected
The platform accepts our credentials and at least one sync is healthy, or no sync is set up yet.
Sync paused
One or more syncs on this connection are paused.
Action needed
The platform rejected our credentials, or a sync is failing. Expand the row for the error message.
Setup incomplete
The connection was created but has not yet been verified (for example, an SFTP key not registered yet).
Disconnected
The platform dropped the connection. Reconnect to resume.
When any connection needs attention, a small badge appears next to Integrations in the sidebar.
Connecting a support or work tool
The flow takes about a minute and runs entirely inside BAI Analytics; there is nothing to install on the source platform.
You can connect several accounts of the same platform (for example, one Zendesk per region). Each connection is independent: adding one never disconnects another, and each keeps its own imports. If a connection was set up by someone who has since left the team, use Reconnect on its row; the connection keeps its name and its scheduled imports.
Importing tickets into a Feedback Group
Connecting the account is step one. Step two is telling BAI Analytics what to bring in, and that always happens inside a Feedback Group.
Where to start
Inside a Feedback Group, use the Add source button and choose Add connector (it reads Import data once an account is linked), or open Connect Data Source and pick the Connectors tile. The import wizard walks through Connect → Configure → Set up (labelled Review in groups with ongoing collection).
Connect
If you already have a connected account, the wizard shows it, with a dropdown to pick between accounts when you have more than one. Click Import Tickets to continue. If you have no account yet, Connect Your Platform opens the same secure sign-in described above. Right after a platform is first connected it may show Initial sync in progress for a few minutes while the platform prepares its data; the wizard tells you when it's ready.
This step also offers an alternative: API Endpoint, for receiving data from Zapier, Make, n8n, or your own code (see Importing through Zapier below).
Configure
Time range. Choose how far back to import:
Last 7 days / Last 30 days / Last 90 days / Last 6 months / Last year
…the chosen window.
All time
…the entire history of the source account.
Custom dates
…a specific start-and-end window.
Platforms that don't support date-based filtering show Number of Tickets instead, so you import the most recent N tickets. In a group with ongoing collection this step is labelled Backfill (How far back should we sync existing tickets?), because the connection keeps syncing forward after the initial load.
Advanced filters. Filters narrow what gets imported. Available filters depend on the source platform:
Status: open, closed, in progress, on hold (or all).
Priority: urgent, high, normal, low (or all).
Type: bug, feature, question, task, incident, and so on.
Assignee: assigned, unassigned, or all.
Due Date: overdue, due today, due this week, no due date, or all.
Collections: a multi-select picker for the platform's native containers (Trello Boards, Zendesk Groups, Freshdesk Groups, GitHub Repositories, and so on). Leave it empty to import from all.
Filters apply to both the initial import and to every continuous sync after it, so a "support tickets, closed, last 30 days" connector will keep importing freshly-closed support tickets in subsequent cycles, not random new ones.
Fields to import. Choose which Standard fields (status, priority, assignees, tags, and so on) and which Custom fields from the platform to bring in, up to 15 metadata fields. Standard fields become metadata you can segment by in the analysis view; custom fields are useful when your team relies on custom Zendesk tags or similar. If you don't want to think about this, leave the defaults.
Include conversation history. On by default: the ticket's comments are appended to the ticket body so the analysis sees the whole exchange.
Continuous import. A toggle controls whether the connection is one-shot or always-on:
One-time import: imports the matching tickets once, then stops. New tickets created later in the source platform will not appear unless you run another import.
Continuous import: imports the initial batch and keeps pulling new and updated tickets automatically.
Continuous import is on by default in groups with ongoing collection. The wizard also shows a Connection Name, generated from the platform and the time range; you can rename it.
Set up and start
The last step summarises your choices. Click Start syncing (or Connect & start syncing in a group with ongoing collection) for a continuous connection, or Run import for a one-time import. If you only need a snapshot, Just need a one-time import? Import without syncing switches modes without going back.
The initial import
When you start the import, BAI Analytics begins pulling your tickets in the background, working through them page by page, and shows a progress toast in the corner of the screen. You can navigate away and keep working; the toast follows you. When the job completes, the connector's data appears as a source in its Feedback Group with a Connector badge, and the analysis link becomes active. In a group with ongoing collection, the wizard's final screen confirms the platform is Live, syncing continuously and that existing tickets are importing now.
Very large historical imports are processed in batches automatically, so even a long history imports reliably.
Continuous import
For connections with continuous import enabled, BAI Analytics runs an incremental sync every 30 minutes in the background. Each sync:
Checks the source platform for tickets created or updated since the last successful sync, with the configured filters applied.
De-duplicates against tickets already imported into BAI Analytics.
Analyses the new tickets the same way as everything else.
Need fresher data than that? Use Fetch new data on the source's data-source card (see below) or Sync now on the Integrations page. Both ask the platform for its latest data now rather than waiting for the next cycle.
Connecting a survey platform, data warehouse, or file storage
These connectors work the other way round: you create the connection on the Integrations page first, test it, then add one or more syncs, each feeding a Feedback Group.
What you'll need per platform
Qualtrics
Your Datacenter ID and an API token, both from Account Settings, then Qualtrics IDs. Regenerating the token in Qualtrics revokes our access.
SurveyMonkey
Connect with SurveyMonkey opens SurveyMonkey so you can approve read access, with nothing to copy. Where that sign-in is not available, Use a private app token instead: choose the Data center (United States, Europe, or Canada), paste the private app's Access token, and optionally its Client ID and Client secret to enable real-time delivery.
InMoment
The Regional API host, your Organization ID, and the Client ID / Client secret provisioned by your InMoment contact.
Medallia
First, How does your Medallia data reach BAI? Choose Query API (the API gateway URL, OAuth token URL, Client ID and Client secret from your Medallia instance; the client's role needs the Query API capability) or File delivery (SFTP) (Medallia exports files to an SFTP folder on a schedule and BAI Analytics picks them up; no API licence needed).
Amazon Redshift and Amazon S3
Deploy the BAI reader role in your AWS account with the CloudFormation template we provide (read-only, locked to your External ID, revocable by deleting the stack), then paste the Role ARN plus the cluster or workgroup details, or the Bucket name and optional prefix and KMS key for S3.
Snowflake
The Account identifier, a Service user, and the Virtual warehouse. BAI Analytics generates a key pair; you register the public half on the service user with the statement shown, then test. No password ever leaves Snowflake.
Google BigQuery
The Project ID and Dataset ID. Grant the BigQuery Data Viewer role to the BAI service account shown, add the ownership label with the command shown, then test. No key or secret is exchanged. Every sync query is dry-run first and stopped if it would scan more than the configured budget (1 GB by default).
Databricks
The Workspace host, SQL warehouse ID, Catalog, and an OAuth service principal's client ID and secret. A Unity Catalog enabled workspace is required. Record the secret's expiry date and we remind you before it expires.
SFTP
Host, Port, Username, the Folder files are delivered into, and an optional File name pattern (for example feedback_*.csv). Authentication is by SSH key (recommended) or Password. Paste the vendor's Server fingerprint if you have one.
For file-based sources (S3 and SFTP), BAI Analytics reads CSV, TSV, JSON, NDJSON, or Parquet files, optionally gzipped, and detects columns from the most recent file.
Connecting
Hand over a key, if the platform needs one
Snowflake and SFTP end on a hand-off step. BAI Analytics generates its own key pair and shows the public key with a copy button and its fingerprint. Register it on the service user (Snowflake) or send it to whoever manages the SFTP account, then click The key is registered. Test connection. Finish later is always available: the connection stays as Setup incomplete and the public key remains on its row until the other side confirms. For SFTP, the server's identity is verified on first contact and pinned from then on.
Adding a sync
A sync maps the platform's data onto one Feedback Group. The form asks for:
Feedback group: where the records land.
What to read: the Survey (Qualtrics, SurveyMonkey, InMoment), the Schema and Table (warehouses), or the Files location (S3 and SFTP).
Feedback text field (or Feedback text column): the open-ended answer the AI analyses. SurveyMonkey and Medallia let you pick several Feedback text questions; each answered question then becomes its own piece of feedback, with a Question column saying which one.
Timestamp field (or column): when each record was created. Warehouses and files also need a Unique ID column so re-reads never duplicate.
Metadata fields (optional): other fields to bring in for segmentation.
Sync frequency: Every hour, Every 4 hours, or Daily.
Click Start syncing. The first import starts within a few minutes, and the sync then runs on the frequency you chose. Each run reads only what is new since the last run, de-duplicates against records already imported, and analyses the new records like any other source.
SurveyMonkey real-time delivery. When the connection has a Client ID and secret (or was made with Connect with SurveyMonkey), BAI Analytics registers a webhook on each synced survey, so a completed response triggers a pull within minutes instead of waiting for the next scheduled run. The sync's line on the Integrations page shows a Real-time chip; Real-time unavailable means the webhook could not be registered and the sync polls on its schedule instead.
Medallia: rehearse before you switch on
Medallia is the one platform where an empty result and a missing permission look identical from the outside, so its syncs get extra safeguards:
The sync form is organised in steps: where the feedback comes from (the Experience Program, and optional Limit this source to rules), what counts as feedback (the Feedback text fields), the Date field this sync follows (pick a field that records when feedback became available in Medallia, not when the customer answered; BAI Analytics marks the recommended one), and where it lands (the Feedback group and a Source name).
One connection can feed several sources. Add a Limit this source to rule (for example, feedback type is one of survey) to route survey responses into one Feedback Group and Google reviews into another, from the same Medallia connection.
New Medallia syncs are saved paused. Use Check setup on the connection to run readiness checks (credentials, Query API capability, Experience Programs, field discovery, and so on), then Preview on the sync to run it for real against Medallia and see what it would bring in: records read, excluded by your rules, already imported, would be imported, with sample records. Nothing is imported by a preview. When you're satisfied, click Switch on this sync. You can skip the preview, but only deliberately (Switch on without a preview).
Edit on the connection lets you rotate a secret or rename without recreating the syncs.
What connector data looks like in a Feedback Group
Once imported, the records appear as a single source inside the destination Feedback Group, with a Connector badge so you can tell at a glance which sources are live. Each sync on a survey, warehouse, or storage connection creates its own source.
Per-record mapping for support and work tools:
The ticket subject and body become a Long Answer response, the field the AI analyses for themes and sentiment.
Comments on the ticket are appended as additional context (where you kept Include conversation history on).
Status, priority, assignees, ticket type, tags, due date become metadata fields, available for segmentation in the analysis view.
Any custom fields you selected come through as additional metadata.
For survey, warehouse, and storage syncs, the Feedback text field becomes the Long Answer response, the Timestamp field dates it, and the Metadata fields you selected come through for segmentation.
This means a connector source participates fully in cross-source analytics inside its Feedback Group: Grouped Themes will cluster connector records together with relevant survey responses or scraped reviews, and group-scoped reports include them automatically.
The data-source card
On the qualitative overview of a connector source, a Connector Import card surfaces:
The connected platform (logo, name, status: Connected, Syncing, Failed, or Disconnected) and how many items have been imported.
Last import with full date and time-of-day precision.
Next auto-import, with a relative countdown, or Auto-import paused.
The Active import filters as read-only chips (Status, Priority, Type, Collections, Assignees, Due date) so you can see exactly why some tickets may be excluded.
A Fetch new data button to trigger a sync now. The result shows inline, and the Last sync error appears here if the latest run failed.
A Manage connector link to the Integrations page for pausing, editing, or disconnecting.
For a Medallia sync that is still paused and has never run, Fetch new data points you back to Preview rather than starting a sync silently.
Pausing, editing, and disconnecting
From the Integrations page (or via Manage connector on the data-source card), you can:
Pause a sync: it stops running but keeps its filters and field mapping, so Resume is one click.
Sync now: run the sync immediately rather than waiting for the next cycle.
Test connection: check that the platform still accepts our credentials (survey, CX, warehouse, and storage connections).
Delete a sync: the Feedback Group stops receiving updates from this connection. Imported data stays in the group.
Disconnect the account: stops every sync on it and removes the link to the source platform. Already-imported records stay in your Feedback Groups; only the live link is cut.
Failure handling
If a sync fails (for example, your platform credentials expired), the sync's line shows Failing with the platform's error message, and the connection reads Action needed. After five consecutive failures BAI Analytics stops retrying automatically, and the sync keeps showing Failing until you act. Once you have fixed the issue (Reconnect for support and work tools, or Edit / Test connection for the others), click Resume on the sync, or Sync now if it is not shown as paused.
Importing through Zapier
If a tool isn't in the catalogue, Zapier can bridge it: a Zap watches your source app and pushes each new piece of feedback into BAI Analytics through the API.
Create an API endpoint source
In a Feedback Group, open the connector wizard (Add source, then Add connector) and choose API Endpoint (Receive data from Zapier, Make, n8n, or custom code). Name the endpoint and define the fields that will receive data. BAI Analytics shows the endpoint's Group ID, Source ID, and Field IDs, and an example request.
Build the Zap
The endpoint's detail panel shows a Connect with Zapier walkthrough with an Add BAI Analytics to Zapier button. In Zapier, create a Zap, choose the app your data comes from as the trigger, add BAI Analytics → Send Feedback as the action, and connect it with your API key. Pick this group and this source from the dropdowns, then map your fields onto the questions.
Data imported through Zapier behaves exactly like native connector data: it participates in Grouped Themes, is covered by auto-covering monitors, and rolls into reports.
Building something more custom than a Zap? The same endpoint speaks a full API with bulk pushes, analysis read-back, and webhooks.
Best practices
One Feedback Group per source per audience. A single mixed group is fine for small operations; for larger ones, splitting "Support: EU", "Support: US", and "Engineering bugs" keeps Grouped Themes meaningful. With several accounts of the same platform, name each connection after the account so the right one is obvious in the importer.
Be specific with filters. "All tickets, all time" is rarely what you want. Filter to closed support tickets if you care about resolved issues; filter to a single board or repository if you only analyse one team.
Pick the custom fields you actually use. The standard fields cover most analyses; only add custom fields if your team uses them for routing, tagging, or escalation.
Test the connection right after setup. Test connection (or Fetch new data on the source) surfaces credential issues immediately rather than at the next scheduled run.
Preview Medallia syncs before switching them on. A mapping that runs fine and imports the wrong records is the failure nothing else catches; the preview shows exactly what would land.
Mind the schedule on metered warehouses. Snowflake bills a minimum per warehouse resume and BigQuery scans are budgeted per query, so Sync frequency is your main cost lever.
Re-authenticate proactively when seats change. If the team member who originally connected a support or work tool leaves, use Reconnect so the long-lived token doesn't unexpectedly expire.
Disconnect, don't delete. Disconnecting a connection or deleting a sync keeps imported records and analyses available; deleting the source loses them.
Last updated