Skip to main content
Serval integrates with your existing ticketing systems to provide a unified view of all requests. Sync tickets bidirectionally to keep both systems up to date without manual data entry.

Supported Integrations

Jira Service Management

Sync issues, statuses, and comments between Serval and Jira

Zendesk

Connect Zendesk tickets with Serval for AI-powered resolution

Freshservice

Integrate Freshservice incidents and service requests

ServiceNow

Sync incidents and catalog items with ServiceNow

Salesforce

Sync Salesforce Service Cloud Cases with Serval tickets

Linear

Sync Linear issues for engineering-focused ticketing

How Syncing Works

When you connect an external ticketing system, Serval:
  1. Creates linked tickets - Tickets created in Serval can automatically create corresponding tickets in your external system
  2. Syncs updates bidirectionally - Status changes, comments, and assignments sync in real-time
  3. Maintains references - Each ticket displays links to its counterpart in the external system
Sync settings are configured per team. Each team can connect to different external systems or projects.

Setting Up a Sync

1

Connect the integration

Navigate to SettingsIntegrations and authenticate with your external ticketing system. See the integration-specific guide for setup details: Jira, Freshservice, ServiceNow, Salesforce, Linear, Zendesk.
2

Configure team mapping

In your team settings, select which external project or queue should receive tickets from this team.
3

Map ticket fields

Configure how Serval fields map to your external system:
4

Set sync direction

Choose your sync behavior:
  • Serval → External: Tickets created in Serval sync to external system
  • External → Serval: Tickets created externally appear in Serval
  • Bidirectional: Full two-way sync

Status mapping

Status mapping controls how ticket statuses translate between Serval and the connected system. Configure it in the ticket source’s Status mapping settings. Mappings are direction-aware, so incoming and outgoing changes can map differently:
  • Incoming (external → Serval): the Serval status a synced ticket takes when its status changes in the external system.
  • Outgoing (Serval → external): the external status Serval sets when the ticket’s status changes in Serval.
Outgoing status mapping is available for Jira, Zendesk, Freshservice, Linear, and ServiceNow. Configuring the outgoing direction is optional. If a Serval status has no explicit outgoing mapping, Serval falls back to the reverse of your incoming mappings when it pushes the status to the external system.
Serval can automatically map statuses by matching names across both directions. Start there, then adjust any statuses that don’t line up one-to-one.

Priority mapping

Configure priority mapping in the ticket source settings to control how a ticket’s priority translates between Serval and the connected system; your mappings are honored on every connector (Jira, Zendesk, Freshservice, Linear, Salesforce, ServiceNow). Outgoing, a priority with no mapping fails the sync rather than shipping a wrong default (a priority of None is never an error); incoming, Serval applies a matching mapping and otherwise leaves the priority unchanged. With no mappings configured, each system keeps its previous default behavior.

Automatic Channel Sync on Ticket Transfers

When a ticket is moved to a different team, all configured channels for the destination team automatically sync with that ticket. The ticket follows the new team’s syncing configuration — so if the destination team syncs to Jira, the transferred ticket creates a corresponding Jira issue automatically.

Sync Behavior

What Syncs Automatically

New tickets sync based on your configured direction. The linked ticket is created within seconds.
When a ticket status changes in either system, the corresponding status updates in the other. Status mapping is configurable.
Public comments sync between systems. Internal notes remain private to each system.
Assignee changes sync when the user exists in both systems.
Files attached to messages sync with the ticket for Jira, Zendesk, Freshservice, Linear, ServiceNow, and Salesforce. Attachments on internal notes sync only where the connected system supports private attachments (Zendesk and Freshservice). Files larger than the connected system’s size limit are skipped.

What Doesn’t Sync

  • Custom fields not mapped in configuration
  • Internal notes and private comments
  • The external system’s own workflow automations (these run independently in each system)

Running Workflows on Synced Tickets

When a ticket syncs into Serval from a connected system, it becomes a regular Serval ticket and can drive Serval automation like a native ticket. This includes tickets escalated in ServiceNow or Freshservice. You can have Serval run a workflow in response:
  • Event-triggered workflows: build a workflow with an event trigger, such as Ticket created, so it runs automatically when a matching ticket arrives. See workflow types.
  • Escalation workflow: a team can configure a workflow to run whenever a ticket escalates.
This is Serval running its own automation on the synced ticket. It’s separate from the external system’s native automations, which run independently and don’t carry over (see What Doesn’t Sync).

Best Practices

Map statuses carefully

Ensure your status mappings reflect equivalent workflow stages in both systems

Use Serval as the source of truth

Let Serval handle AI triage and routing, then sync resolved tickets to your system of record

Test with a single team first

Validate your sync configuration with one team before rolling out organization-wide

Monitor sync health

Check the integration status regularly to catch any sync failures early

Troubleshooting

  • Verify the integration is connected in Settings → Integrations
  • Check that the team has sync enabled and a project/queue selected
  • Ensure the user creating tickets has permission to create in the external system
  • Review your status mapping configuration
  • Confirm the target status exists in the external system
  • Check for any workflow rules in the external system that might prevent the update
  • Ensure you’re not creating tickets in both systems manually
  • Check that sync direction is configured correctly
  • Review any automation rules that might be creating tickets