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

# Generate the Campaigns Report

> Pick a date range, campaign and tags, generate the report, and read the deliverability, open, reply and click rates.

export const Screenshot = ({id, alt, caption, frame = 'browser', url, marks = [], lang = 'en', workspace = 'northwind-outbound'}) => {
  const src = `/images/screenshots/${lang}/${id}.png`;
  const chrome = url ? `app.pipelime.ai/${workspace}${url}` : 'app.pipelime.ai';
  return <figure className={`pl-shot pl-shot--${frame} not-prose`}>
      <div className="pl-shot__frame">
        {frame !== 'bare' && <div className="pl-shot__bar">
            <span className="pl-shot__dots">
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
            </span>
            <span className="pl-shot__url">{chrome}</span>
          </div>}
        <div className="pl-shot__media">
          <img src={src} alt={alt} loading="lazy" />
          {marks.map(mark => <span key={mark.n} className="pl-shot__mark" style={{
    left: `${mark.x}%`,
    top: `${mark.y}%`
  }} aria-hidden="true">
              {mark.n}
            </span>)}
        </div>
      </div>
      {caption && <figcaption className="pl-shot__caption">{caption}</figcaption>}
    </figure>;
};

Generate a snapshot of your outreach: deliverability, opens, replies and clicks, broken down
by campaign, prompt and lead, for any date range, campaign and tag combination you choose.

<div className="pl-availability">
  <div className="pl-availability__row">
    <div className="pl-availability__label">Where</div>
    <div className="pl-availability__value"><span className="pl-path">Overview<span className="pl-path__sep">→</span>Analytics<span className="pl-path__sep">→</span>Campaigns Report</span></div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">Your role needs</div>
    <div className="pl-availability__value">Read access to Campaigns Report <code>read-campaigns</code>. Admin, Member and Viewer have it by default.</div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">To create or change</div>
    <div className="pl-availability__value"><code>create-campaigns</code> to add one, <code>update-campaigns</code> to change one, on top of the permission above.</div>
  </div>

  <div className="pl-availability__note">If you cannot find this in your sidebar, your workspace may have a custom menu configuration. Contact support and we will check it for you.</div>
</div>

## Before you begin

* Nothing to set up first. The report runs against whatever is already there.
* At least one campaign, if you want to filter to one. The **Campaign** list is built from the
  campaigns in this workspace, so in a workspace with none it offers **All Campaigns** and
  nothing else.

## Steps

<Steps>
  <Step title="Open the report">
    This report isn't in the sidebar. From the **Dashboard**, choose **Analytics** near the top
    of the page, then **Campaigns Report** from the menu that opens.

    You can also arrive already filtered. Opening the report from a single campaign's own
    analytics action puts that campaign in the filter and generates the report on load, which
    skips the next two steps. If the campaign id in the link doesn't match a campaign in this
    workspace, the filter is still set but nothing generates. Carry on from step 3.
  </Step>

  <Step title="Set your filters">
    The date range at the top opens on a default recent window. Change it before you generate
    if you need a different period. Below it, **Campaign** narrows the report to one campaign
    and starts at **All Campaigns**; next to it, a tag filter carries the placeholder
    **Filter by tags**.

    Until you generate, the body of the page is a placeholder headed "Generate Your Sales
    Report" rather than the report itself.

    <Screenshot id="analytics/campaigns-report--empty" url="/analytics/campaigns" alt="The Campaigns Report filter panel: a date range, a Campaign dropdown set to All Campaigns, a tag filter and a Generate Report button, above a large centered placeholder reading Generate Your Sales Report, with its own Generate Report Now button" caption="Nothing is wrong here. The report simply hasn't been generated yet." />
  </Step>

  <Step title="Generate the report">
    Choose "Generate Report" in the filter row. The larger "Generate Report Now" in the middle
    of the page does exactly the same thing. Both grey out while the report is being built, and
    the middle one reads "Generating..." until it arrives.

    The whole report arrives in one pass: every section appears together, and an
    "Export to PDF" button appears above it.

    <Screenshot id="analytics/campaigns-report--generated" url="/analytics/campaigns" alt="The generated report: eight KPI cards (Deliverability Rate, Open Rate, Reply Rate, Click Rate, Messages Sent, Leads Contacted, Companies Contacted, Opportunities), then a Campaign Performance table, a Prompt Performance table, an Opportunities table and two bar charts" caption="Every section is populated in one pass, so what you see first is what you get." />
  </Step>
</Steps>

## What happens next

<Check>
  Eight KPI cards appear first, in this order: **Deliverability Rate**, **Open Rate**,
  **Reply Rate**, **Click Rate**, **Messages Sent**, **Leads Contacted**,
  **Companies Contacted** and **Opportunities**.
</Check>

Six of those cards can draw a small trend line at the foot of the card: **Deliverability Rate**,
**Open Rate**, **Messages Sent**, **Leads Contacted**, **Companies Contacted** and
**Opportunities**. **Reply Rate** and **Click Rate** are not wired for one and never show it.

Below the KPI row, in order:

* "Campaign Performance": one row per campaign, with messages, leads, deliverability, open,
  reply and click rates, opportunities and conversion. It only appears once the report covers
  more than one campaign.
* "Prompt Performance": the same breakdown by prompt, and it appears whenever the report
  covers at least one prompt. It carries no conversion column, so it is not a like-for-like
  copy of the campaign table.
* "Opportunities": a table of leads with **Lead**, **Email**, **Company** and **Stage**
  columns and a **View** action that opens the lead's own record. With nothing to list it
  renames itself "Opportunities Generated" and says so instead of drawing the table.
* Two bar charts, one of messages and one of opportunities over the period.

Change a filter and generate again and the report stays on screen while the new one is
fetched, each section swapping its numbers for a loading state. Switching workspace is
different: it clears the report outright and puts the placeholder back, so you generate again
from scratch.

The exported PDF is titled "Sales Report", with "AI Campaigns Performance" printed under it in
capitals. The header and the KPI cards share the first page; every section after that starts a
new one.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Nothing appears after I open the page">
    That's normal. The report stays empty until you choose "Generate Report", unless you came
    in from a campaign's own analytics action, which generates it for you.
  </Accordion>

  <Accordion title="Campaign Performance is missing">
    It only renders when the report covers more than one campaign. Filtering **Campaign** down
    to one, or generating over a period where only one campaign sent anything, drops the table.
    Everything else in the report still covers the same filter.
  </Accordion>

  <Accordion title="The exported PDF looks off">
    The file name is your workspace's brand name, then "Sender\_Health\_Report", then today's
    date, whichever report you actually exported. The title and subtitle printed inside the
    PDF are right; only the file name is wrong. The PDF header also prints just your date
    range: it doesn't name the campaign or the tags you filtered by, even when you picked them.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="The Dashboard" icon="layout-dashboard" href="/en/analytics/dashboard">
    Agent and lead metrics at a glance, and the Analytics button that opens this report.
  </Card>

  <Card title="Senders Health report" icon="heart-pulse" href="/en/analytics/senders-health-report">
    The same report shape, one health score for your fleet instead of a campaign breakdown.
  </Card>

  <Card title="Metrics glossary" icon="book-open" href="/en/analytics/metrics-glossary">
    What every rate and count in this report actually counts.
  </Card>

  <Card title="AI Agents overview" icon="bot" href="/en/ai-agents/overview">
    What a campaign is made of, and how it connects to the agent that runs it.
  </Card>
</CardGroup>
