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

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 Settings → Integrations 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

The direction applies to new tickets only:
  • Serval → External: tickets created in Serval are sent to the external system. Tickets created externally aren’t imported.
  • External → Serval: tickets created externally are imported into Serval. Tickets created in Serval aren’t automatically sent out.
  • Bidirectional: tickets created in either system are synced to the other.
Updates to synced tickets sync both ways under every direction. Changes made in Serval appear in the external system, and changes made in the external system appear in Serval. This covers comments and attributes (status, priority, assignment), as enabled by the Sync Scope toggles. At least one Sync Scope toggle must stay enabled on every source, so you can’t make a connected sync fully read-only. Under External → Serval, a ticket created in Serval isn’t automatically sent to the external system, but a change you make in Serval to a synced ticket does write back. There is no import-history-then-stop mode: Historical + New is a live, ongoing sync that begins with a backfill. For a one-time import with no live connection, use the team’s CSV ticket import page instead.

Jira routing workflows

Jira ticket sources can use an optional routing workflow to choose the destination for a new Jira issue. The workflow selects a project from the source’s configured projects and supplies its type and any required field values. Serval creates the issue and links it to the existing Serval ticket.
  • Service Management: return projectId, requestTypeId, and any fields needed by that request type.
  • Project Management: where PM project syncing is enabled, return projectId, issueTypeId, and any fields needed by that issue type. Subtask creation isn’t supported.
  • Use the default: return null to keep the configured default destination.
Field values are keyed by Jira field ID and must match the selected project and type. When routing to another destination, supply its required values; the default destination’s field configuration doesn’t automatically apply. The routing workflow chooses the destination and values without creating, updating, or linking Jira issues itself. Routing applies before the first Jira issue is created. Once a ticket is linked, updates continue to target that issue.

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. For ServiceNow, the Status Mapping dialog shows one tab per synced record type — Requested Item, Incident, and HR Case — and both directions follow the selected tab. ServiceNow incidents are created in Serval as incident tickets, so the Incident tab maps ServiceNow incident states to Serval’s incident statuses. Requested items and HR cases are created as requests and map to request statuses. A ticket’s type is set when Serval first creates it; tickets synced earlier keep the type they already have.
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

Choose which attributes sync

By default every field syncs, with Sync attributes turned on. To narrow that, open the ticket source’s sync settings, expand Choose which fields to sync, and turn off the fields you don’t want: Status, Priority, Assignment, Title, and Description. Turning Sync attributes off stops all field syncing at once. Comments sync independently, controlled by the separate Sync comments toggle. This applies to the native connectors: Jira, Zendesk, Freshservice, Linear, Salesforce, and ServiceNow.

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