> ## 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.

# Goals & KPIs

> Set targets by tier, partner, or segment, track progress automatically from CRM data, and show partners exactly where they stand against their goals.

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>}
    </>;
};

> Partners perform to clear targets. Goals let you set what good looks like, by tier, partner, or segment, track it automatically from CRM data, and show partners their progress so they always know where they stand.

## What it does

Goals turn intent into measurable targets. You define a goal by what it counts, a count of CRM
objects or a sum of a property, set a frequency from one-time to yearly, and choose how targets are
assigned: the same target per tier, a custom target per partner, or per segment. Goals can also
track certifications, not just CRM objects.

Progress is calculated automatically from your CRM and certification data, with views for goals that
are achieved, on track, or at risk. You assign goals to partners, publish them so partners see their
own progress in the portal, and nudge partners who are falling behind, all keeping targets and
results tied to the CRM.

## The problem it solves

Targets that live in a spreadsheet do not drive behavior:

* **Targets are static and manual** → Goals track progress automatically from CRM data.
* **One target fits no one** → Set targets by tier, partner, or segment.
* **Partners do not know where they stand** → Published goals show progress in the portal.
* **At-risk partners go unnoticed** → At-risk views and nudges prompt action.

## From problem to solution

Goals make targets live. Define them once, let progress update from the CRM, and give partners and
your team a shared, current view of who is on track and who needs a nudge.

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
flowchart LR
  define["Define what it measures"] --> targets["Set targets by tier"]
  targets --> assign["Assign to partners"]
  assign --> progress["Live progress in the portal"]
```

## Use cases

<CardGroup cols={2}>
  <Card title="Set clear targets" icon="circle-check">
    Define what good looks like.
  </Card>

  <Card title="Tailor by tier or segment" icon="circle-check">
    Match targets to the program.
  </Card>

  <Card title="Track automatically" icon="circle-check">
    Progress updates from the CRM.
  </Card>

  <Card title="Motivate partners" icon="circle-check">
    Show progress and nudge.
  </Card>
</CardGroup>

## Impact

* **Low total cost of ownership** - Partner ops sets and manages goals with no engineering.
* **CRM-native** - Progress is computed from live CRM and certification data.

## Who it's for

<CardGroup cols={2}>
  <Card title="Partner Operations" icon="user">
    Defines and assigns goals.
  </Card>

  <Card title="Partner Marketing" icon="user">
    Publishes goals and nudges partners.
  </Card>
</CardGroup>

## Works with

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

<CardGroup cols={2}>
  <Card title="Dashboards" icon="chart-line" href="/features/reporting/dashboards">
    Goal progress shows on dashboards.
  </Card>

  <Card title="Partner Analytics" icon="chart-line" href="/features/reporting/partner-analytics">
    Measure progress against goals.
  </Card>

  <Card title="Tiers" icon="users" href="/features/partners/tiers">
    Tie goals to tier requirements.
  </Card>
</CardGroup>

## Headless

<Headless
  prompts={[
"How is Acme tracking against its KPIs this quarter?",
"Which partners are behind on their goals?",
"Show goal progress for my top five partners.",
]}
/>

## 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>
