Prerequisites
- You are an organisation admin. Members can see the connection list, but only admins can add, edit, enable, or delete one.
- The AI board is available in your organisation (AI → Board in the sidebar).
- The destination is reachable from the public internet.
What gets synced
A new connection picks up your organisation’s live tickets plus anything that changes afterwards. The closed backlog stays out, so enabling Jira sync does not file a thousand finished tickets into a fresh project. Closed tickets only sync if they change again after the connection was created. Three filters narrow it further, all set in the same dialog:Step 1: Collect your provider’s details
Gather these before you open the dialog. It has no draft state, so a value you have to go and look up means starting the form again.- Jira
- Linear
- Webhook
You need four values, plus one optional one.That account needs these permissions in the target project, or deliveries fail with a Jira
1
Jira base URL
Your Jira site root, with no path after it - for example
https://my-team.atlassian.net. Copy it from the address bar while you are in Jira, and drop everything from /jira onwards.2
Project key
The short uppercase code for the project issues should land in. In Jira, open Projects and read the Key column, or take the prefix from any issue key in that project:
OPS-123 means the key is OPS.3
Issue type (optional)
The name of the issue type to create, exactly as it appears in Jira -
Task, Bug, Story. It has to exist in that project’s issue type scheme. Leave the field blank to use Task.4
Account email
The email address of the Atlassian account the API token belongs to. Issues and comments in Jira are attributed to this account, so a dedicated service account keeps your board traffic out of a person’s name.
5
API token
Sign in as that account, go to id.atlassian.com/manage-profile/security/api-tokens, and choose Create API token. Label it something you will recognise later, such as
ankra-ticket-sync, then copy the token.403:- Browse Projects - to address the project at all
- Create Issues - the issue Ankra opens per ticket
- Add Comments - the timeline relay
- Edit Issues - Ankra pushes the ticket title onto the issue when it changes
Ankra talks to Jira over the REST v2 API using HTTP basic authentication, which is the Jira Cloud email plus API token shape. Jira Data Center serves the same API, so a Data Center username and password go in those same two fields - as long as the instance is reachable on the public internet.
Step 2: Add the connection
1
Open the ticket sync settings
Go to AI → Settings → Connections and find the Ticket sync card.
2
Choose Add connection
The Add sync connection dialog opens on a provider picker with the three options. Pick one and the form for that provider appears.You can change your mind with Back, which returns to the picker. Re-picking keeps the name and filters you have typed, and clears the destination and credential fields, because those belong to the provider you just left.
3
Name the connection
A label for your own use, up to 200 characters, unique within the organisation. Saving a name that is already taken returns
A sync connection with this name already exists.4
Fill in the destination and credential
These are the values from step 1.
5
Set the sync filters
Tick the ticket kinds to sync, or leave them all unticked to sync every kind. Then set the Minimum priority and whether Timeline events are relayed as comments.
6
Decide whether it starts enabled
Start enabled is on by default, so live tickets begin syncing as soon as the connection is created. Turn it off if you want to review the settings, or brief the team, before anything lands in the tracker.
7
Create connection
Ankra validates the fields, stores the credential in Vault, and adds the connection to the list. The credential is never written to the database and is never returned by the API afterwards.
Verify it works
The connection row carries a status dot with four states, and it deliberately does not go green until something has actually been delivered:
To confirm the wiring end to end, change something on a live board ticket that matches the filters - move its status, or leave a comment. The sync loop runs roughly every 30 seconds, so within about a minute the row should show a Synced timestamp and the issue should exist in your tracker.
A large first batch drains over several passes rather than all at once: deliveries are throttled to stay under tracker rate limits, and each ticket relays up to 20 timeline events per pass. A busy board that has just been connected takes a few minutes to catch up.
What lands in Jira and Linear
The issue title is[T-<number>] <ticket title>, matching the board’s per-organisation ticket number.
The description opens with the classification, the cluster when the ticket names one, and a link back to the board, then the ticket body:
Status: triage → **investigating**, peer reviews as Peer review: **approve**, resolutions as Resolved (**fixed**), comments prefixed with who wrote them. Chat thread messages are not relayed to Jira or Linear, to keep conversation noise out of the tracker. When a ticket’s title or priority changes without producing a timeline event, Ankra pushes the updated title onto the external issue.
Webhook payloads
Webhook connections receive JSONPOST requests instead of rendered prose. Three event shapes exist, and each one carries the full ticket snapshot, so your consumer never needs a read-back call:
Every request carries these headers:
X-Ankra-Event- the event name aboveX-Ankra-Delivery- a unique id for this delivery attemptX-Ankra-Signature-sha256=<hex>, present only when the connection stores a signing secret
ticket.created body:
ticket.event body adds the event alongside the same snapshot:
ticket.updated has the same shape as ticket.created with a different event value.
Field vocabularies:
kind-incident,insight,gap,automation,request,chorepriority-urgent,high,medium,lowstatus-triage,investigating,planning,awaiting_review,awaiting_approval,executing,verifying,done,blocked,cancelledevent_type-comment,status_change,assignment,plan_draft,review,session_linked,workspace_linked,link_added,thread_message,resolution,run_outcomeauthor_kind-agent,user, or the board itselfpayload- the raw members of that event type, such asfrom_statusandto_statuson a status change,verdicton a review,resolutionon a resolution
Webhook consumers receive every timeline event, including the
thread_message chat echoes that the Jira and Linear connectors skip. sequence is monotonic per ticket, so use it to order and de-duplicate.Verifying the signature
The signature is the hex HMAC-SHA256 of the raw request body using your signing secret, prefixed withsha256=. Compute it over the bytes as received, before any JSON parsing or re-serialisation.
Manage a connection
- Disable - the switch on the row stops deliveries without losing the configuration or the cursor. Re-enabling resumes from where it stopped, and anything that changed in the meantime is delivered then.
- Edit - the pencil opens the same dialog with the provider locked, since a connection cannot change provider. Create a second connection instead.
- Rotate a credential - open Edit, fill in the credential fields, and save. Leaving every credential field blank keeps the stored one; filling them in replaces it wholesale. A partly filled credential is refused, because the replacement is all or nothing.
- Retry a failing connection - saving a failing connection again clears its failure state and retries immediately, rather than waiting out the normal cadence.
- Delete - the bin removes the connection and its stored credential.
Troubleshooting
Failures are retried automatically on the next pass. A failing connection does not block the others, and one failing ticket does not starve the queue behind it.
Related pages
- AI Board - ticket kinds, statuses, priorities, and the plan approval flow
- AI Connections - the rest of the Connections settings page
- Webhooks - alert and platform event destinations, a separate system from ticket sync
- Roles and Access - who counts as an organisation admin