# Card states on a Jira issue Most of the time the card is rows. The rest of the time it is one sentence, chosen to say what happened and who can fix it rather than to apologise for it. Two things are true of every state. No state ever prints the reporter's email address: each sentence says "this reporter", and the address never reaches the browser at all. And no state ever quotes Attio's own error text back at you, because an upstream message is written for a programmer and can quote the value that failed, which on the lookup that matters is the reporter's address. ## While it loads For the first 150 milliseconds the card shows nothing, so a fast, cached load never flashes a placeholder. If the wait is longer than that, a grey placeholder appears in the shape of the card that is coming: the same number of rows, the same layout, a bar where the link will be. Once shown it stays at least 300 milliseconds so it cannot blink out mid-glance, and it is announced once as "Loading customer details". The number of placeholder rows is the count already on the wire, otherwise the count the card drew last time, otherwise four. Only the first load of a card that has never been drawn falls back to four. When the real fields arrive they cross-fade in over 150 milliseconds, opacity only, so nothing moves, and a reader whose system is set to reduce motion gets the content with no animation at all. ## The states, in the words the card uses | **What has happened** | **What an agent sees** | **What a project administrator sees as well** | | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- | | A record was found | The chosen attributes, and "Open in Attio" at the bottom. | The same, plus a warning triangle beside any attribute Attio no longer returns. | | The issue has no reporter | "This request has no reporter, so there is no customer to look up." | The same. No Attio call is spent. | | Jira gave the app no email address for the reporter | "No email address is available for this reporter." | The same. The card gives no reason on purpose, because it cannot tell a hidden address from an absent one. | | Nothing in Attio matched | "No Attio record matches this reporter." | Plus "Which Attio attribute reporters are matched on is a project setting." and an "Open project settings" link. | | Several records matched | A warning triangle with "More than one record matches this reporter.", or "4 or more records match this reporter.", then up to three candidates. | The same. | | Attio rejected the stored key | "The Attio connection for this project needs attention." | Plus an "Open project settings" link. | | Attio asked the app to slow down, values already on screen | The values stay, with a quiet grey note under them: "Attio is rate limiting this app, so these values may be out of date." No button. | The same. | | Attio asked the app to slow down, nothing to show | "Attio is rate limiting this app. Try again in a minute." with a "Try again" control. | The same. | | Anything else failed | A sentence written for a reader, with "Try again". Where no sentence was supplied it reads "This customer card could not be loaded."; a request that failed in the browser reads "The customer card could not be loaded. Try again in a moment." | The same. | | Setup is unfinished | Nothing at all. | One sentence naming the gap, and an "Open project settings" link where the app can build one. | | The viewer is outside the chosen audience | Nothing at all. | Nothing at all. | ## The two states that render nothing A viewer who may open the issue but is not allowed to see the customer record gets no element on the issue: no message, no empty box. An agent looking at a project a project administrator has not finished setting up gets the same nothing. The app puts no content into the surface; what Jira does with its own tab or button around an empty surface is Jira's behaviour and not something this app sets. ⚠️ **An absent card looks exactly like an absent app** To the reader, both of these look like the app is not installed rather than like it is being careful. That is deliberate, and it means "the panel is missing" is never on its own a fault report. Ask whether the reader is inside the project's audience and whether the project's setup is finished before you look for a bug. ## What a project administrator is told is missing On a half-finished project, an administrator gets exactly one of these, naming the first missing piece. * "This project is not connected to an Attio workspace yet." * "Nobody has chosen which Attio object holds your customers." * "Nobody has chosen the attribute reporters are matched on." * "No attributes have been chosen for this card to show." * "Nobody has chosen where this card appears." If the app cannot recognise which piece is missing it falls back to "This project has not finished its Attio setup." rather than showing a blank or a placeholder word. The "Open project settings" link under it is offered only when the app can build a working link to that project's settings page; where it cannot, the administrator still gets the sentence but no link, rather than a link that leads nowhere. ## When several records match The card does not guess. It lists up to three candidates, each with the record's name and, where the record has one, an "Open in Attio" button beside it. There is no way to pick one from the card: it is telling you to go and disambiguate in Attio. Each candidate carries one line of distinguishing detail, and it is always the same thing: the word "Added" and the date the record was added to Attio. No CRM field is used and the email address is never used, because every candidate matched the same address anyway. The count is never an exact number above three. Attio's search answers carry no total and there is no count endpoint, so the app asks for one more record than it will list; once that ceiling is hit the copy reads "4 or more records match this reporter." and never invents a number. Which record is shown as the customer, and the order of the candidates, are stable between views rather than changing on a refresh. A project that matches on email domain behaves differently at the top end: a domain held by four or more Attio records shows no card and no candidate list, and reads as no match. A domain shared by that many records is almost always free mail, a shared host or a mail-sending domain, so every candidate on such a list would probably be the wrong customer. --- ## A few things worth knowing * Four different outcomes come out as one sentence. Where a project matches on email domain, a reporter on free mail, an address with no usable domain, a domain no record holds and a domain too many records share all render as "No Attio record matches this reporter." Nobody can tell from the issue which of the four happened. * The rate-limit wording always names Attio. When the slowdown actually came from Jira, the card still reads "Attio is rate limiting this app." * The connection sentence an agent sees is shorter than the one the app wrote. "The Attio connection for this project needs attention." is all it says; it does not say the key is no longer valid, and only a project administrator is offered anywhere to go. --- ## Related [The Attio card on an issue](https://help.gocapable.com/attio-for-jira/the-attio-card-on-an-issue.html) [Why the card has no Refresh button](https://help.gocapable.com/attio-for-jira/why-the-card-has-no-refresh-button.html) --- _One sentence is usually the whole truth available._