Skip to main content
Connected Apps lets you link external platforms to SquawkVoice so your AI agents can interact with them during calls and conversations. Depending on the integration, connected apps unlock pre-built in-conversation actions, chat escalation, or a mailbox for your email agents — all configurable without writing custom API logic.

Supported Integrations

The following Freshworks products are available to connect:

Freshchat

Connect your Freshchat account to enable chat-channel escalation. When a chat user needs a human agent, the AI can hand the conversation off to the appropriate Freshchat channel.

Freshdesk

Link Freshdesk to give your AI agents pre-built actions for creating, looking up, updating and deleting support tickets and contacts directly during a call. A Freshdesk connection is also what an email AI agent uses to work a mailbox.

Freshservice

Connect Freshservice to give your AI agents pre-built actions for creating, looking up, updating and deleting IT service tickets, requesters, and Freshservice agents during a call.

How Authentication Works

All Freshworks integrations use API key authentication. You will need:
  • Your domain. Each app has its own format:
  • The API key for your account in that app
Freshchat additionally requires:
  • Your Chat URL (e.g. yourcompany.freshchat.com)
  • A Webhook public key (an RSA public key in PEM format). You enter it in a second step straight after you connect, and you can’t finish connecting Freshchat without it. SquawkVoice uses it to verify the webhook events Freshchat sends back, so without it a handoff to a human cannot complete and the conversation carries on with the AI.
API keys are encrypted at rest. SquawkVoice never exposes a stored key after it is saved — to rotate credentials you must delete the existing connection and create a new one with the updated key.
Where to find your API key. In Freshdesk or Freshservice, open your profile and go to Profile Settings → View API Key. For Freshchat, go to your Freshworks domain (myfreshworks.com), open Admin Settings, search for API Settings, and copy Your API Key. The info icons beside each field in the dialog show the same hints.

Connecting an Integration

Connected Apps isn’t in the default sidebar. Add it with Customize sidebar at the foot of the sidebar, or press Cmd/Ctrl+K and search for Connected Apps. See Navigating Studio.
  1. Open Manage → Connected Apps.
  2. Find the tile for the app you want to connect and click Connect. Use Search apps by name to narrow the list.
  3. A dialog named for the app opens (for example Connect Freshdesk). Fill in the required fields:
  4. Click Connect. SquawkVoice validates the credentials by making a test call to the Freshworks API before saving.
  5. Freshchat only: a Freshchat Webhook dialog opens. It can’t be closed until you finish it.
    1. Copy the Webhook URL shown (use the copy icon beside it).
    2. Click Open webhook settings in Freshworks, enable webhooks, and paste the URL into the Webhook field.
    3. In the Authentication section of that page, generate the public key if you need to, or copy the existing one. Paste the whole key, including the -----BEGIN RSA PUBLIC KEY----- and -----END RSA PUBLIC KEY----- lines, into Webhook public key in Studio.
    4. Click Continue. The button stays disabled until a key is entered.
  6. A Describe this connection dialog opens. It can’t be closed until you write a short description of when the AI should use this connection (for example, “Use this connection for Joe’s Freshdesk account.”) and click Save Connection. The description is required.
  7. The connection now shows in the connected accounts drawer for that app. See Managing Connections.
If validation fails, check these two things:
  • The domain format. Freshdesk needs a freshdesk.com address, Freshservice needs a freshservice.com address, and Freshchat needs a myfreshworks.com Domain plus a freshchat.com Chat URL. A myfreshworks.com address is rejected for Freshdesk and Freshservice. You can paste the full address — SquawkVoice removes https:// and anything after the domain, so a trailing slash is never the problem. The message Invalid domain format points to this.
  • The API key. Use the key from your profile in that app, and make sure it belongs to an active account with sufficient permissions. A message such as Invalid Freshdesk domain or API key means Freshworks rejected the key or the domain.
If you started from a Connect … link in a Co-pilot reply, the Co-pilot reopens on the same conversation once you save the description in step 6, and carries on with the setup. The Connect Freshdesk button the Co-pilot shows while it sets up an agent’s email works the same way: it carries on with the mailboxes you can choose for that agent. This only works if you finish within about 5 minutes of clicking the link or button.

Managing Connections

Click the connected-accounts link on an app’s tile (for example 2 connected accounts) to open the drawer for that app. It is titled, for example, Connected Freshdesk Accounts. The tile counts only active connections. Until an app has one, its tile reads “0 connected accounts” and there is no link to click, even if the app still has disconnected connections. The drawer lists every connection in your account for that app, newest first, including your teammates’ and disconnected ones, which are dimmed and marked Disconnected. A Total: N accounts line at the top counts all of them, so it can be higher than the number on the tile. For each connection it shows the email address (where Freshworks provides one), the Description, the Instance URL and the date it was Connected. You can edit, disconnect or delete a connection you created. Connections your teammates created are listed but read-only: the … button doesn’t appear on them. To change a connection, click the … button on it. The menu offers Edit Description, Reconnect, Disconnect and Delete. Disconnect isn’t offered on a connection that is already disconnected.

Edit Description

Every connection carries a description. It is required when you connect, and it can’t be left blank. When an account has more than one connection to the same app, the AI uses the descriptions to decide which one to use (see Choosing a Connection), so make each one distinctive — for example “Use this connection for Joe’s Freshdesk account.” To change a description, click the … button on the connection, choose Edit Description, update the text in the Edit Connection Description dialog, and click Save.

Disconnect

Disconnecting a connection suspends its use across all agents without permanently deleting the record. The connection stays in the drawer, dimmed and marked Disconnected, and the AI is no longer offered it when it picks a connection for an integration action. To disconnect, click the … button, choose Disconnect, and confirm in the Disconnect account? dialog. Disconnecting also clears the stored API key. The dialog says you can reconnect later; for Freshworks apps that means creating the connection again, as described under Reconnecting.

Delete

Click the … button, choose Delete, and confirm with Delete Permanently. This permanently removes the connection and all associated credentials. This action cannot be undone.
Deleting a connection that is actively used by one or more AI agents will break any action or escalation that relies on it. Review which agents reference the connection before deleting.

Reconnecting

Freshworks apps use API key authentication, so Reconnect doesn’t reconnect anything. It appears in the … menu, but choosing it only shows a message telling you to delete the connection and create a new one with the updated API key. If you need to update credentials:
  1. Delete the existing connection.
  2. Create a new connection with the updated API key.
A connection can also change to Disconnected without you doing anything. Freshdesk and Freshservice connections are marked Disconnected automatically when Freshworks rejects the stored key, for example because it was revoked. Create the connection again with a valid key.

Using a Connection in In-conversation Actions

After connecting an integration, its pre-built actions become available to add to any AI Agent via the Integrations button on the In-conversation Actions tab.

Adding Integration Actions

  1. Open the agent in Studio and go to In-conversation Actions.
  2. Click the Integrations button (next to “Create New Action”).
  3. In the drawer that opens, select the integration you want to use from the dropdown (e.g. Freshdesk).
  4. Browse the Available Actions for that integration (e.g. “Create Ticket”, “Update Ticket”, “Create Contact”). Each action shows its name and a description.
  5. Check the action you want to add. A Create In-conversation Action drawer opens with the action’s name, description, and parameters pre-filled from the integration schema. The name is the integration action’s name with spaces and any other characters an action name can’t contain replaced by underscores, so Create Ticket is pre-filled as Create_Ticket.
  6. Review the pre-filled configuration. You can edit the action name and description, and customise parameter definitions — but the default parameters required by the integration cannot be removed. The name must be different from every other action on the agent, across its pre-, in- and post-conversation actions, ignoring capital letters and surrounding spaces.
  7. Click Create, or Save & Edit Flow to create the action and open its flow straight away. The action is created with a linked flow and appears in the in-conversation actions list, tagged with the integration’s icon. If the agent already has an action with that name, the save is refused with a message such as This agent already has an in-conversation action named “Create_Ticket”. Choose a different name. and the integration action isn’t added: choose a different name and create it again.
An integration action you add is saved to the agent’s draft, like any other action. On an agent you’ve published, it reaches live conversations at your next Publish, and so do later changes to its parameters or flow. See What Waits for Publish.
Parameters are copied from the integration’s schema at the moment you add the action, and stay with that action afterwards. When an integration gains a new parameter, existing actions keep the ones they were created with — re-add the action to pick up the change. For example, resolving or closing a Freshservice ticket needs the Resolution notes parameter, so an Update Ticket action built before it was introduced will need re-adding.Corrections to the description of a parameter an action already has are applied automatically — you don’t need to re-add the action.
Freshdesk and Freshservice each offer create, get, get many, update and delete actions: for tickets and contacts in Freshdesk, and for tickets, requesters and Freshservice agents in Freshservice. The AI can call whichever ones you add, including the delete actions (for example Delete Ticket), so add only the actions you want the agent to be able to use.
Not sure what an integration can do? Ask the Co-pilot to list its actions. It only adds actions to an agent when you describe a job for it to set up, such as “book and reschedule appointments”.

Removing Integration Actions

There are two ways to remove an integration action from an agent:
  • Untick it in the Integrations drawer. This removes the action from the agent, together with its flow, straight away and without asking you to confirm. Any changes you made to the action or its flow are lost. Ticking it again starts over from a fresh pre-filled drawer. On an agent you’ve published, unticking also stops live conversations from offering the action straight away.
  • Choose Delete on the action’s card in the in-conversation actions list. This asks you to confirm first.

How Integration Actions Work at Runtime

Integration actions are invoked the same way as custom in-conversation actions — the AI calls the action based on caller intent. The linked flow handles the integration API call using the connected credentials, then returns results back to the agent to speak.
See In-conversation Actions for a full guide on flows, nodes, and runtime behaviour.

Choosing a Connection

An account can have more than one connection to the same app — for example when two teammates each connect their own Freshdesk account. During a conversation the AI chooses which connection to use each time it calls an integration action. It is given your active connections for that app, labelled with the description you wrote for each, and it asks the caller which one to use when that isn’t clear. A connection with no description reaches the AI only as an ID, so give every connection its own description. Disconnected connections aren’t offered. If an app has no active connection, the actions you added for it aren’t offered to the agent at all. In the action’s flow, the integration step shows the integration’s icon and a Select connection list in place of a method and URL. Use it to choose a connection when you test the step with Send. It is also used if no connection was supplied during the conversation.

Freshdesk — Email Agents and Automation Rules

A Freshdesk connection does two jobs. It gives your AI agents the pre-built ticket and contact actions described above, and it is what an email AI agent uses to work a mailbox. Once Freshdesk is connected, tick a mailbox in Build → AI Agents → Email Configuration → Inbox and the agent starts picking up new tickets there and replying in the thread. Until a Freshdesk connection exists, that panel reads “No Freshdesk accounts connected”.
Full setup instructions are covered in Email Agents.

Automation Rules SquawkVoice Manages for You

So that the agent sees new tickets as they arrive, and can follow a conversation once a human takes it over, SquawkVoice creates and maintains three automation rules inside your own Freshdesk account. They are created the first time a mailbox is ticked on the connection, not when you connect Freshdesk, and removed again when the last mailbox on the connection is un-ticked. They are named Squawk AI — new ticket, Squawk AI — customer reply and Squawk AI — live agent relay, followed by a [DO NOT DELETE, DO NOT REORDER] marker and a tag that identifies the connection. They are managed for you — there is nothing to write, and you should not rename, reorder, edit, or delete them. All three are placed at the top of their automation lists so that reordering rules in Freshdesk cannot stop the agent seeing new tickets.
If you rely on the order of your own Freshdesk rules, check it after SquawkVoice updates. Whenever SquawkVoice changes how these rules work, all three are deleted and re-created the next time a mailbox is ticked or un-ticked on that Freshdesk connection, or an agent holding one of its mailboxes is deleted. Until then the earlier rules keep running. The re-created rules land above your own automation rules, so if you rely on one of your own rules running first on the same tickets, review the order in Freshdesk afterwards and adjust your rules accordingly. Where Freshdesk rejects the pinned position, SquawkVoice places the rule without one so coverage is never lost, and the marker in its name is your cue to move it to the top yourself.

Freshchat — Additional Setup for Chat Escalation

Freshchat requires one extra step after connecting: you must link the connection to a specific AI Agent before the escalation feature becomes active.
  • Navigate to the AI Agent and open the Handoff section, then select the Chat tab.
  • Under Handoff Platform, select the Freshchat connection to use. (This used to sit under Chat Configuration → Widget Config → Agent Escalation.) Choosing a connection fetches your Freshchat channels straight away.
  • If channels change in Freshchat later, click Sync from Freshchat to fetch them again from the connection chosen under Handoff Platform. SquawkVoice asks you to confirm first, because a sync replaces the list. Saved outcomes for channels that are now disabled or missing in Freshchat are removed, any outcome you deleted comes back, and every description is generated again, so descriptions you edited are replaced.
  • Review or edit the AI-generated channel descriptions to guide the agent on when to route to each channel. Do this after you sync, because a later sync writes new ones.
If the agent has been published, publish straight after you choose or change the connection. Live chats use the new connection at once, but the channel list it brings in reaches them only at your next Publish, and so do any later Sync from Freshchat and your edits to the outcome options. If you publish late after switching connections, a handoff can fail in the meantime, because the live agent still has the previous channel list. See Chat Escalation.
Full setup instructions are covered in Chat Escalation with Freshchat.