Issue trackers

Turn a session into a ticket while you are watching it - one button in the player, your own words in the description, and the replay link already attached.

1. Why this one is manual

Every other bridge in MousePlayer fires by itself. This one does not, and that is the whole design.

A ticket is work for a person. If we opened one for every rage click, your board would fill with items nobody triaged, and within a week your team would filter them out - at which point the real ones get filtered out too.

So the trigger is you. You watch a session, you see the thing, you press the button and write what you saw. The recording link is already in the description; you supply the judgement.

The button only appears for owners and admins, and never in a shared-link view. Someone you sent a recording to should not be able to open tickets in your tracker.

2. The five trackers and what each one needs

Where it landsYou provide
Jiraan issue in a projectsite URL, account email, API token, project key, issue type
Linearan issue in a teamAPI key, team ID
Asanaa task in a projectpersonal access token, project ID
Trelloa card in a listkey, token, list ID
GitHuban issue in a repositorypersonal access token, owner/repo

One tile, one provider selected at a time. Adding a second tracker later is a change of selection, not a migration.

Where the identifiers come from

Linear's team ID and Asana's project ID are visible in the URL when you open the team or project in a browser. Trello's list ID is the hardest of the five: append .json to a board URL and look for the list you want. Jira's project key is the prefix in front of every issue number - ACME in ACME-1234.

3. The link in the ticket is built by our server

The description you type is yours. The replay link is not - it is assembled on our side from the session you were actually watching, and the form cannot influence it.

That matters because a ticket is a thing other people click. If the link came from the browser, a crafted request could put any address in front of your team inside something that looks like your own tooling.

HTTP 200 does not mean the ticket exists

Linear answers over GraphQL, and GraphQL answers 200 OK with an errors array when it refuses. A bridge that only looks at the status code would report success for a ticket that was never created. We read the body.

Where a tracker returns the new issue's identifier, we put it in the confirmation - so you can check that it is really there rather than trusting a green message.

4. What is deliberately not here

No automatic tickets

See above. If you want automation, the webhook bridge can send frustration signals to Zapier or Make, and you can decide there what deserves a ticket.

No two-way sync

Closing the ticket does not change anything in MousePlayer, and nothing in MousePlayer reopens it. A sync that runs one and a half directions is worse than none, because people start to rely on it.

No attachments

The recording stays with us and is watched with us. Exporting a video into a tracker would push personal data into a system with different retention rules than the ones you agreed with your visitors.

The token is stored AES-256-GCM encrypted and never shown again. It is also never put into the internal queue - this call happens while you wait, straight from the request.

5. GitLab, Azure DevOps and ClickUp

Three more trackers, same button, same manual trigger.

You provide
GitLabhost, project ID and a token - your own GitLab works too
Azure DevOpsorganisation, project, work item type and a PAT
ClickUplist ID and a personal token

GitLab asks for a host because you might own it

Unlike the others, GitLab is often self-hosted, so the host is a field rather than a constant. Paste gitlab.com if that is where you are.

Azure DevOps has two quirks at once

Its body is a JSON Patch document rather than an object, and its content type has to be application/json-patch+json - anything else answers 415. The dollar sign in front of the work item type in the URL is part of the address, not a placeholder we forgot to fill in.

ClickUp wants the token bare

No Bearer in front of it. A token with the word prepended is rejected with 401, which looks exactly like a wrong token.

All trademarks named here belong to their respective owners. MousePlayer has no business relationship with these providers.