Privacy policy — Crosstab
Written from the architecture rather than from a template. The source is not public, so the honest version of that claim is narrower than it sounds: what you can check is the app's Forge manifest, which Atlassian shows you before installing, and which either declares an external host or does not. This one does not.
Last reviewed: ⟨decide — the date this is first published⟩.
Who this covers
Crosstab is a Jira dashboard gadget built on Atlassian Forge, distributed through the Atlassian Marketplace. It runs inside Atlassian's infrastructure. It has no servers, no database and no backend of its own.
Who is responsible for what. For the issue data the app reads, the controller is your own organisation: it is your Jira site, your data, and your agreement with Atlassian. Crosstab is a processor acting on your instruction — its code runs inside your site, and what it reads does not leave it.
For anything sent to the support address, the controller is Oleksandr Chmut, a sole trader registered in Ukraine, trading as oc — the vendor on the Marketplace listing. That covers the message, the address it came from, and whatever the sender chose to put in it.
Reading this page makes you a third: a static host serves it, and the request that fetched it is a request to a server somewhere. The vendor is the controller for that too.
Contact: ⟨decide — the support address, see docs/listing.md⟩.
What the app reads
Only what the grid needs, and only when a dashboard carrying the gadget is opened. There is no schedule and no background job: close the dashboard and the app reads nothing at all.
- The issues your configuration selects — through the saved filter you chose, or the search you wrote. Read with the permissions of whoever is looking at the dashboard, so the grid is never wider than that person's own view of Jira.
- The two axis fields and the numeric field, for those issues. Nothing else on the issue is used, and free-text fields are not among the fields an axis may be.
- The site's field definitions — what exists, what is numeric, what may be an axis — which is configuration rather than anybody's data.
- The order a board draws its statuses in, when an axis is status, and the site's own working-day settings, when the figure is one held in seconds.
Nothing is sent anywhere. The built bundle contains no external host, and the test suite asserts that rather than the documentation claiming it.
What the app stores
Nothing at all until somebody presses Keep this. After that:
- A kept grid — this app's own totals, and the four choices that produced them. No issue keys. No field values beyond the labels already drawn on the axes, which are things like Bug, In Progress and Payments.
- A saved setup — a name, and the same four choices.
Both go into your own site's app storage, which is inside Atlassian's infrastructure and under your agreement with them. Neither leaves it.
Personal data
No axis can be a person. Not assignee, not reporter, not creator, not any user field. This is enforced against the schema of every field your site returns, not against a list of names, so a custom multi-select called Reviewers is refused for the same reason Assignee is. It follows that no label on a kept grid is about a person.
Two things that rule does not cover, said plainly rather than left for a reviewer to find:
- A label your organisation chose is text your organisation chose. A component named after a colleague is indistinguishable from any other text, and no rule here can tell them apart.
- A search you write is your own words, and a line of JQL can name a person —
reporter = "someone@example.com"is a valid search. It is kept with the grid, because a figure whose population cannot be named is a figure nobody can check. The one place that reaches beyond you is a saved setup, which the whole installation can see, and the form says so where the search is typed.
Sub-processors
- Atlassian hosts everything the app does: the code, the storage and the data it reads. There is no second processor, because there is no second place for anything to be.
- Cloudflare hosts this page and the documentation beside it, as static files on Cloudflare Pages, and for that the vendor is the controller. The pages fetch nothing at render time — no font from a CDN, no analytics, no third-party anything — so reading them tells Cloudflare that a request was made and tells nobody else anything.
- Atlassian also passes the vendor the contact details attached to a paid licence, which your organisation gave them rather than us. ⟨decide — only if the app is listed as commercial.⟩
Retention
A kept grid and a saved setup stay until somebody forgets them, which the gadget offers for both. Uninstalling the app removes the app storage that holds them, on Atlassian's own schedule rather than ours.
Support correspondence is kept long enough to answer a follow-up about the same thing, and is not used for anything else: no marketing, no profiling, no list.
Your rights
For the issue data, the request goes to your own organisation: it is the controller, and the app holds nothing about you that your Jira site does not already hold.
For a support message, where the vendor is the controller, write to the support address above.
Changes
This page is versioned in the repository the app is built from, so a change to it is a change with a date and an author. Material changes will be noted here with the date they took effect.