> ## Documentation Index
> Fetch the complete documentation index at: https://docs.introw.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboards

> Assemble your saved reports into dashboards, see your whole program at a glance on the home page, and share dashboards with partners in their portal.

export const Headless = ({prompts = []}) => {
  const PromptRow = ({prompt}) => {
    const [copied, setCopied] = useState(false);
    const copy = () => {
      try {
        navigator.clipboard?.writeText(prompt);
      } catch {}
      setCopied(true);
      setTimeout(() => setCopied(false), 1600);
    };
    return <div className="group flex items-center justify-between gap-3 px-4 py-3 transition-colors hover:bg-[#FD90FF]/[0.06]">
        <span className="text-sm leading-relaxed text-zinc-700 dark:text-zinc-200">{prompt}</span>
        <button type="button" onClick={copy} aria-label={copied ? "Copied to clipboard" : "Copy prompt"} className={`shrink-0 rounded-md p-1.5 transition-all hover:bg-[#FD90FF]/10 focus:opacity-100 focus:outline-none ${copied ? "text-[#FD90FF] opacity-100" : "text-zinc-400 opacity-0 group-hover:opacity-100 dark:text-zinc-500"}`}>
          {copied ? <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <path d="M20 6L9 17l-5-5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg> : <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <rect x="9" y="9" width="11" height="11" rx="2" stroke="currentColor" strokeWidth="2" />
              <path d="M5 15V5a2 2 0 0 1 2-2h10" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg>}
        </button>
      </div>;
  };
  return <>
      <p>
        Introw is <strong>headless</strong> by design: run everything here in plain language from Claude, ChatGPT,
        Slack, Teams, or your own CRM through Introw's <a href="/features/developer/mcp">MCP server</a>, with every
        action written straight back to your CRM source of truth. The portal is one surface, never the only one.
      </p>

      {prompts.length > 0 ? <div className="not-prose my-6 overflow-hidden rounded-2xl border border-zinc-200/80 bg-white shadow-sm dark:border-white/10 dark:bg-white/[0.02]">
          <div className="flex items-center gap-2 border-b border-zinc-200/80 bg-gradient-to-r from-[#FD90FF]/10 via-[#FD90FF]/5 to-transparent px-4 py-2.5 dark:border-white/10">
            <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4 text-[#FD90FF]" aria-hidden="true">
              <path d="M12 2.5l2 5.5 5.5 2-5.5 2-2 5.5-2-5.5L4.5 10l5.5-2 2-5.5z" fill="currentColor" />
              <path d="M18.5 14l1 2.6 2.6 1-2.6 1-1 2.6-1-2.6-2.6-1 2.6-1 1-2.6z" fill="currentColor" opacity="0.55" />
            </svg>
            <span className="text-xs font-semibold uppercase tracking-wider text-zinc-500 dark:text-zinc-400">
              Try it from your LLM
            </span>
          </div>

          <div className="flex flex-col divide-y divide-zinc-100 dark:divide-white/[0.06]">
            {prompts.map(prompt => <PromptRow key={prompt} prompt={prompt} />)}
          </div>

          <a href="/headless" className="flex items-center justify-between gap-2 border-t border-zinc-200/80 px-4 py-2.5 text-sm font-medium text-zinc-600 no-underline transition-colors hover:text-[#FD90FF] dark:border-white/10 dark:text-zinc-300">
            <span>See the full headless playbook</span>
            <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
          </a>
        </div> : <Card title="See the headless motion" icon="wand-magic-sparkles" href="/headless">
          The agentic playbook - lifecycle deep dives and a Claude Code skill library that run your partner program
          from Claude, ChatGPT, Slack, and your CRM.
        </Card>}
    </>;
};

> Reports answer one question; dashboards answer many at once. Drag your saved reports into a dashboard, and get a program-wide overview the moment you log in to the home page.

## What it does

Dashboards are collections of your saved reports, arranged on a drag-and-drop grid. You can create
multiple dashboards as tabs, set audience filters and a date-range preset that apply across the
whole dashboard, and control who can see each one. Because dashboards reuse saved reports, updating
a report updates it everywhere it appears.

The home page gives you a program overview automatically: new partners, portal visits, top assets,
top revenue partners, and highlights like deals to act on and form submissions, scoped to a pipeline
and date range you choose. And any dashboard can be embedded in a partner portal, so partners see a
curated view of their own performance.

## The problem it solves

Scattered reports do not give you the full picture:

* **Reports live in isolation** → Dashboards group related reports into one view.
* **There is no single landing view** → The home page shows the program at a glance.
* **Partners lack visibility** → Embed a dashboard in their portal.
* **Filters are reset every time** → A dashboard's audience and date settings apply across it.

## From problem to solution

Dashboards bring your reporting together. Assemble reports into focused views, rely on the home page
for the daily overview, and share curated dashboards with partners, all from the same building blocks.

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
flowchart LR
  reports["Build reports"] --> assemble["Assemble on a dashboard"]
  assemble --> scope["Scope with filters and date range"]
  scope --> view["View at a glance"]
```

## Use cases

<CardGroup cols={2}>
  <Card title="See the program at a glance" icon="circle-check">
    Land on a program overview.
  </Card>

  <Card title="Group related reports" icon="circle-check">
    Build focused dashboards.
  </Card>

  <Card title="Share with partners" icon="circle-check">
    Embed dashboards in portals.
  </Card>

  <Card title="Apply filters once" icon="circle-check">
    Set audience and dates per dashboard.
  </Card>
</CardGroup>

## Impact

* **CRM-native** - Dashboard data comes from live CRM reports.
* **Time to value** - Dashboards read live CRM data from day one, with no data warehouse or BI project to build first.
* **Low total cost of ownership** - Partner ops assembles dashboards with no engineering.

## Who it's for

<CardGroup cols={2}>
  <Card title="Partner Operations" icon="user">
    Builds and shares dashboards.
  </Card>

  <Card title="RevOps" icon="user">
    Curates the program overview.
  </Card>
</CardGroup>

## Works with

{/* CONNECTS:START - generated content goes here */}

<CardGroup cols={2}>
  <Card title="Report Builder" icon="chart-line" href="/features/reporting/report-builder">
    Dashboards show the reports you build.
  </Card>

  <Card title="Goals & KPIs" icon="chart-line" href="/features/reporting/goals">
    Track goal progress on dashboards.
  </Card>

  <Card title="Partner Analytics" icon="chart-line" href="/features/reporting/partner-analytics">
    Surface partner performance.
  </Card>
</CardGroup>

## Headless

<Headless
  prompts={[
"Which partners drove the most sourced pipeline this quarter?",
"Show partner-attached revenue broken down by tier.",
"How many deals did partners register this month?",
]}
/>

## Going deeper

<CardGroup cols={2}>
  <Card title="How to" icon="screwdriver-wrench" href="./technical">
    Setup, configuration, and all how-to guides.
  </Card>

  <Card title="API reference" icon="code" href="/general/introduction">
    Integration surface and code.
  </Card>
</CardGroup>
