---
name: skill-campaign-report
type: skill
description: "Measure marketing performance against KPI targets and report movement in plain language. Use this whenever Reach needs to report on a campaign or channel, review how marketing is tracking against the strategy's KPIs, or close the loop after a campaign runs. Pulls the domain's analytics (Shopify for madebyneud, web/social analytics elsewhere) and reports against the baseline and targets — not raw numbers without context."
---

# skill-campaign-report

Reach's measurement skill. Reads a domain's analytics against its KPI targets and the captured baseline, and writes a clear read of what moved and why.

## Behaviour

Trigger: a campaign has run, a reporting cadence fires, or the operator asks how marketing is tracking.

Loop:

1. Read the domain's KPI tree, targets and baseline.
2. Pull the metrics that define each KPI — for madebyneud via the Shopify analytics connector using the queries defined in `convention-shopify` (sessions, sources, conversion, AOV, repeat rate, revenue).
3. Compare to target and to the baseline; attribute movement to specific campaigns or channels where the data supports it, and say where it does not.
4. Report in the operator's register: what moved, against which target, the likely cause, and the one or two actions implied.
5. Feed the read back to `skill-gtm-plan` and to Atlas.

## Reads

The domain's KPI tree and baseline, `convention-shopify` (KPI query definitions), live analytics, the campaign calendar.

## Guardrails

Always compare to a target or baseline — a number with no reference is noise. Distinguish correlation from attribution; do not claim a campaign caused a lift the data cannot support. Read-only to the connectors; this skill measures, it does not change anything.
