# Dashboard apps

Show your own page beside each conversation in Texa Desk, with the conversation, the contact and the person using it.


A **dashboard app** is a page of yours that Texa Desk shows in a tab beside each conversation: the
customer's orders, their account, their loan schedule. Your team sees it without leaving the
conversation.

## 1. Add it

In Texa Desk, **Settings → Integrations → Dashboard apps → Add dashboard app**: a title and your
page's URL (`https`). It appears as a tab on every conversation, for everyone in the account.

## 2. Get the context

When the tab opens, Texa Desk sends your page the context with `postMessage`. Ask for it again at
any time by posting `chatwoot-dashboard-app:fetch-info` to the parent window.

```html
<script>
  window.addEventListener("message", (event) => {
    if (event.origin !== "https://desk.texadesk.com") return;   // only Texa Desk
    let msg;
    try { msg = JSON.parse(event.data); } catch { return; }
    if (msg.event !== "appContext") return;
    const { conversation, contact, currentAgent, theme } = msg.data;
    showCustomer(contact.phone_number, contact.email, contact.custom_attributes);
  });
  // ask again, e.g. after your page reloads
  window.parent.postMessage("chatwoot-dashboard-app:fetch-info", "*");
</script>
```

| Field | What |
|---|---|
| `conversation` | the open conversation: its id, inbox, status, labels, custom attributes, messages |
| `contact` | its contact: `id`, `name`, `email`, `phone_number`, `identifier`, `custom_attributes` |
| `currentAgent` | the person looking: `id`, `name`, `email` |
| `customAttributes` | the account's custom attribute definitions |
| `theme` | `light` or `dark`, sent again when it changes, so your page can match |

## Keep it safe

- **Check `event.origin`** is your Texa Desk address before trusting the message.
- The context says who is looking, but your page is still yours: protect it with your own sign-in
  (or a short-lived signed link your server makes), because anyone could open its URL directly.
- Show only what your team needs: the dashboard app is visible to everyone in the account.
