Find the pages that create pipeline
The job: know which pages bring in people who turn into revenue, as distinct from pages that bring in traffic. They are rarely the same pages, and the difference is where your content budget should go.
Who this is for: content and demand-gen teams who can see pageviews in analytics and cannot see what those pageviews were worth.
The one call
curl -s "https://app.signal.geysera.com/signal-api/v1/attribution?days=90" \
-H "Authorization: Bearer $SIGNAL_API_KEY"
{
"window_days": 90,
"has_data": true,
"computed_at": "2026-09-15T06:47:31Z",
"totals": {
"visitors": 38104,
"visitors_total": 41220,
"identified": 21068,
"identify_rate": 0.55,
"high_intent": 3310,
"high_intent_rate": 0.157,
"intent_threshold": 60,
"touch_coverage_pct": 31.2,
"median_hours_to_identify": 0.7,
"channels_active": 9
},
"sources": [
{
"source_medium": "google / organic",
"channel": "organic_search",
"visitors": 12044,
"identified": 7210,
"identify_rate": 0.599,
"high_intent": 1180,
"avg_intent": 41.2
}
],
"landing_pages": [ "..." ],
"channels": [ "..." ],
"campaigns": [ "..." ],
"first_vs_last": [ "..." ],
"trend": [ "..." ],
"revenue": { "...": "..." }
}
Read touch_coverage_pct before you read anything else
It is the share of visitors whose first touch we can actually see. When it is low — and it often is — every source and landing-page number below it describes that minority, not your traffic. Attribution built on a third of your visitors is still useful for comparing sources, and it is not a number to put in a board deck as a total.
The single biggest cause is that the pixel misses the landing pageview itself on a meaningful share of sessions, so the visitor's first recorded page is not the page they arrived on.
The comparison worth making
Traffic rank and quality rank are different lists:
a = get("/attribution", days=90)
by_traffic = sorted(a["sources"], key=lambda s: s["visitors"], reverse=True)
by_quality = sorted(
(s for s in a["sources"] if s["visitors"] >= 200), # ignore thin rows
key=lambda s: s["high_intent"] / s["visitors"], reverse=True,
)
The visitors >= 200 floor is not optional. Without it the top of your quality
list is a source with four visitors, two of whom were interested.
Asking for the analysis
Here is 90 days of acquisition data:
{attribution_json}
touch_coverage_pct is {n}. State clearly what that means for the confidence of
everything you are about to say.
Then: which three sources bring us visitors who become high intent, and which
three bring volume that does not? Use identify_rate and high_intent relative to
visitors, not raw counts. Ignore any source with fewer than 200 visitors and
say you ignored it. Do not recommend a budget change you cannot support with a
number from this payload.
What will go wrong
has_data: false. Attribution is a cached rollup. On a new workspace, or
one whose pixel has been down, it is empty rather than wrong — check the flag
rather than reading zeros as a finding.
Self-referral as first touch. A large share of unattributed visitors have your own domain as their first recorded referrer. That is the pixel missing the entry, not people arriving from nowhere.
computed_at is not now. The rollup runs nightly. If you are looking for
the effect of something you shipped this morning, it is not in here yet.
Next: turning content into pipeline · a weekly revenue brief your LLM writes
Markdown source: /developers/workflows/find-the-pages-that-create-pipeline.md