Before you begin
You need:- Freshservice administrator access to create an agent and a Workflow Automator workflow
- Your full FreshWorks URL, such as
https://yourcompany.myfreshworks.com - Your full Freshservice URL, such as
https://yourcompany.freshservice.com - Access to the Freshservice workspaces whose tickets you want to sync
1. Create a dedicated Freshservice agent
Create a service account that can sign in to FreshWorks and authorize Ravenna. Use a dedicated email address, such asravenna-integration@yourcompany.com, so the connection does not depend on an employee’s account.
1
Add the agent
In Freshservice, go to Admin > User Management > Agents, then select New Agent. In a multi-workspace account, you may need to open Global Settings or the relevant Workspace Settings first. Enter the service account’s name and email address, save it, and complete its activation so it can sign in.
2
Grant access to the workspaces and tickets you will sync
Assign the agent an appropriate role in every Freshservice workspace you will connect to a Ravenna channel. It needs access to view, create, and update tickets; view and manage ticket conversations or notes; and read the agents and requesters used for ticket assignment and requester mapping. Grant access across the relevant workspace, rather than only to tickets assigned to this agent. Freshservice’s agent roles and workspace access determine which tickets the account can reach.
3
Save the agent email
You will enter this email in Ravenna and sign in to FreshWorks as this same agent during OAuth authorization.
Use a regular Freshservice agent account for this OAuth connection. Freshservice’s separate integration users cannot sign in to the web portal, so they cannot complete this authorization flow.
2. Connect the agent to Ravenna
1
Open the Freshservice integration
In Ravenna, go to Settings > Integrations, find Freshservice under Ticketing, and select Connect.
2
Enter the connection details
Enter all three values before continuing:
- FreshWorks Domain: the full URL, including
https://, such ashttps://yourcompany.myfreshworks.com - Freshservice Domain: the full URL, including
https://, such ashttps://yourcompany.freshservice.com - Agent Email: the dedicated agent’s email address
3
Authorize the connection
Select Connect to start OAuth. Sign in to FreshWorks with the dedicated agent account, review the requested permissions, and authorize Ravenna. FreshWorks redirects you back to Ravenna when the connection is complete.
3. Configure the Freshservice webhook
The OAuth connection lets Ravenna access Freshservice, but Freshservice needs a Workflow Automator webhook to send ticket changes to Ravenna. Without this workflow, changes made in Freshservice will not sync inbound.1
Copy the webhook signing secret from Ravenna
In Settings > Integrations, select Manage for Freshservice, open the ⋯ menu, and select Configure. Copy the Webhook Signing Secret field. Keep this value private and use it as the webhook’s
Secret header below.2
Create an event-based ticket workflow in Freshservice
In Freshservice, go to Admin > Automation & Productivity > Workflow Automator. In a multi-workspace account, choose Global Settings for a global workflow or the relevant Workspace Settings for a workspace-level workflow. Create a new Ticket workflow and choose Event Based Workflow. Name it, for example,
Ravenna Sync.3
Select the ticket events
In the workflow’s Event block, select these events under When an event is performed:
- Ticket is raised
- Ticket is updated
- Reply is sent
- Note is added (any type)
4
Add the webhook action
Add an Action block and select Trigger Webhook. Configure it with:
- Request type:
POST - Callback URL:
https://core.api.ravenna.ai/api/webhooks/freshservice/ticket - Header:
Secretwith the Webhook Signing Secret copied from Ravenna as its value - Encoding:
JSON - Content:
Simple
{{ticket.id_numeric}}) and Event Performer ID ({{event_performer_id}}). Ravenna needs both fields: the numeric ticket ID identifies the ticket, and the event performer ID prevents changes made by the integration account from syncing back in a loop.5
Save and activate the workflow
Save the workflow and set it to Active. If you created a workspace-level workflow, repeat these webhook steps for each Freshservice workspace whose tickets you want to sync.
4. Enable ticket replication in Ravenna
For each Ravenna channel that should sync with Freshservice, open Channel Settings > Ticket Replication, enable Freshservice replication in the directions you need, and select Configure. Choose the matching Freshservice Workspace. Ravenna creates outbound tickets in this workspace and accepts inbound tickets only from this workspace. Status mapping is automatic; there is no status mapping form to complete. See ticket replication for the fields and statuses that sync.Verify the connection
Create a ticket in the configured Freshservice workspace using a regular agent account, then check that it appears in the matching Ravenna channel. Update the ticket or add a note in Freshservice to check inbound changes. Create a ticket in that Ravenna channel to check outbound sync. Events performed by the dedicated OAuth agent are intentionally ignored, so use another account for the inbound test.Troubleshooting
Freshservice changes do not appear in Ravenna
Freshservice changes do not appear in Ravenna
Confirm the workflow is Active, its events include the change you made, and the webhook uses the exact callback URL and the current Webhook Signing Secret in the
Secret header. Check that Simple content includes both numeric ticket ID and event performer ID. Verify inbound replication is enabled for the channel and its selected Workspace matches the ticket’s Freshservice workspace. Test with an account other than the OAuth agent.Ravenna changes do not appear in Freshservice
Ravenna changes do not appear in Freshservice
Confirm outbound replication is enabled for the channel, a Freshservice Workspace is selected, and the dedicated agent can create and update tickets in that workspace.