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

# Signals overview

> Understand how PlainRouter collects, delivers, and measures first-party conversion signals.

Signals is PlainRouter's first-party conversion measurement layer. It receives website events through a managed collection subdomain or a same-origin forwarding route, records what happened, and can deliver consented events to a connected Meta dataset.

<Card title="The short version" icon="route">
  Your website sends one event to PlainRouter. PlainRouter records it, adds trusted request context at the edge, and routes eligible events to the destinations you connect.
</Card>

## How data moves

<Steps>
  <Step title="Your server or browser records an event">
    Your server can use the Conversion API. The optional Signals pixel can send browser events such as purchases, leads, checkouts, and custom events.
  </Step>

  <Step title="Your serving path receives it">
    Requests use a managed hostname such as `collect.example.com` or a generated same-origin forwarding route. PlainRouter validates the authorized Signal and website origin before accepting the event.
  </Step>

  <Step title="PlainRouter stores the event">
    PlainRouter records the canonical event, consent state, delivery state, and the trusted network context added by the collection edge.
  </Step>

  <Step title="Eligible events reach Meta">
    When you connect a Meta dataset and grant advertising consent, PlainRouter sends the server event through Conversions API. The managed browser Pixel sends a paired copy with the same event ID for deduplication.
  </Step>

  <Step title="Stored measurements become health evidence">
    The Signals dashboard combines the event ledger, delivery ledger, stored Event Match Quality snapshots, and daily reconciliation reports. It does not make a live Meta Marketing API call when the page loads.
  </Step>
</Steps>

## What Signals measures

| Area                | What it tells you                                                                                                   |
| ------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Event activity      | How many events PlainRouter received and when the last event arrived.                                               |
| Delivery acceptance | Whether non-test events were accepted, failed, or remain pending for the connected destination.                     |
| Match quality       | The latest stored Meta Event Match Quality score and its recent trend.                                              |
| Reconciliation      | The difference between gateway-verified accepted conversions and Meta-reported conversions in stored daily reports. |
| Diagnostics         | Which setup, activity, delivery, quality, or freshness condition needs attention.                                   |

<Warning>
  Signals health and reconciliation are account- or dataset-level measurements. They do not provide campaign, ad set, ad, spend, budget, learning-phase, or target-level CPA state.
</Warning>

## Consent behavior

Signals applies consent before browser measurement or advertising delivery:

| Consent state                                                          | Collection behavior              | Identifier behavior                                                                    | Destination delivery                 |
| ---------------------------------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------------- | ------------------------------------ |
| Missing, unknown, or malformed                                         | Sends no ordinary browser event. | Creates no visitor state.                                                              | Skipped.                             |
| Storage denied or withdrawn                                            | Sends no ordinary browser event. | Clears PlainRouter visitor and click identifiers.                                      | Skipped.                             |
| Storage granted; a downstream advertising permission denied or unknown | Sends no ordinary browser event. | May retain local visitor state, but sends no identity or event.                        | Skipped.                             |
| All three permissions granted                                          | Records events.                  | Creates first-party identifiers and includes permitted hashed identity and click data. | Eligible for connected destinations. |

Connect your consent-management platform by calling `signalq("consent", input)` with the structured permission state whenever the visitor's choice changes. See [Track events and consent](/docs/signals/track-events) for examples.

Server-side `POST /events` requests must include a `consent_basis` of `consent` or `legitimate_interest`. Requests using `consent` must include granted downstream advertising state. PlainRouter stores the normalized consent decision with the event and allows Meta delivery only for observed, joined, attributed events with consent.

## Browser and server deduplication

When Meta is connected, one `signalq("track", ...)` call can produce both a managed browser Pixel event and a server-side Conversions API event. PlainRouter assigns the same UUID to both copies so Meta can deduplicate them.

Do not keep a separate Pixel or CAPI integration sending the same events to the same dataset after you validate the managed setup. Duplicate integrations can inflate reporting.

## Setup path

<CardGroup cols={2}>
  <Card title="Configure DNS" icon="network" href="/docs/signals/configure-dns">
    Connect a first-party collection hostname.
  </Card>

  <Card title="Install the pixel" icon="code" href="/docs/signals/install-pixel">
    Add optional, consent-aware browser measurement.
  </Card>

  <Card title="Verify ingestion" icon="badge-check" href="/docs/signals/verify-ingestion">
    Complete activation through the API or MCP.
  </Card>

  <Card title="Configure serving" icon="route" href="/docs/signals/configure-serving">
    Install the generated block for your hosting stack.
  </Card>

  <Card title="Track events" icon="mouse-pointer-click" href="/docs/signals/track-events">
    Add consent, identity, and conversion events.
  </Card>

  <Card title="Connect Meta" icon="plug" href="/docs/signals/connect-meta">
    Select the destination ad account and dataset.
  </Card>
</CardGroup>
