Reliable attribution does not come from one dashboard. It comes from connecting different pieces of evidence without calling all of them “users.” Google Search Console reports when a page appeared in search and when someone clicked. Analytics can show anonymous visits and page views. A conversation records intent. The CRM qualifies an opportunity. Only the product or signup system can confirm that an account was actually created.
conversation_started, lead_qualified, and signup_completed. Join stages through an internal key only when there is a legitimate basis to do so. When evidence is missing, keep the source unknown instead of guessing.What each metric really proves
| Metric | What it proves | What it does not prove |
|---|---|---|
| Impression | The page appeared in a search result | That anyone opened or read it |
| Click | Someone opened the result or ad | A unique person or signup |
| Anonymous visit | A session accessed the site | Identity, lead, or customer |
| Conversation started | A contact entered a channel | Fit or purchase intent |
| Qualified lead | The contact passed defined commercial criteria | Revenue or account creation |
| Completed signup | The product confirmed account creation | Active use or payment |
One person can generate several clicks, visits, and conversations. Some search queries may also be omitted for privacy. Do not turn three clicks into “three users” or 150 impressions into “150 people.” Use the metric’s exact name.
Map the minimum journey before buying more traffic
Start with a short chain: source → landing page → conversation → qualified lead → completed signup. For each stage, define the source system, timestamp, identifier, success rule, and retention period. An event must represent something that happened, not something you expect.
A simple funnel can already answer which page attracts search traffic, which campaign creates conversations, how many conversations become leads, and how many leads finish signup. When two stages have no trustworthy shared key, report them separately. A precise boundary is better than a false join.
Preserve campaign context without mixing tool roles
UTM parameters help name source, medium, and campaign. Click identifiers can add detail when the platform and consent model allow it. Capture those values at entry, validate their format, and attach them to the internal record that begins the journey. Keep first touch and last touch separate when the distinction matters.
Cloudflare Web Analytics is useful for privacy-focused aggregate traffic, but its documentation says it does not log query strings, does not provide UTM metrics, and does not support custom events. It therefore cannot replace first-party campaign capture or a completed-signup event. Use each tool for the evidence it actually provides.
Confirm conversion in the system that performs signup
The signup_completed event should fire after the server has created the account, not when someone clicks the button. Record an internal identifier, timestamp, flow version, and the preserved source reference when appropriate. Avoid sending emails, phone numbers, or conversation content to analytics platforms when a pseudonymous key is enough.
If signup requires email confirmation, decide whether “account created” happens before or after that confirmation and keep the rule stable. If the commercial outcome is a paying customer, add a later event. Click, signup, and payment are different outcomes.
Create a metric contract across marketing, sales, and product
Write down who can change stages, which fields are required, and how duplicates are handled. “Qualified lead” might require a supported country, company fit, real problem, and identified decision-maker. “Customer” might require confirmed payment. Without a contract, teams use the same label for different events.
In Signaldesk, organize the conversations, owner, stages, and history available in your environment. Combine that with your product’s first-party signup source. Confirm the integrations and events available in your workspace before promising automatic end-to-end attribution.
Measure people only when you have a basis to recognize them
Anonymous visits should remain anonymous. Do not turn impressions, IP addresses, or browser fingerprints into identity. When someone starts a conversation or authenticates, document the purpose, limit access, and retain only necessary data. Aggregate analysis remains useful without identifying every visitor.
Mature reports also show what is unknown. Include rows for “source not preserved,” “conversation without linked signup,” and “signup without known campaign.” Those gaps show where instrumentation needs repair without rewriting the past.
Implementation checklist
- Name every metric and what it proves.
- Map the minimum funnel and the owner system for each event.
- Preserve source, medium, and campaign at entry.
- Create first-party events only after actions are confirmed.
- Use internal keys and minimize personal data.
- Define first touch, last touch, and the attribution window.
- Standardize qualified-lead and customer criteria.
- Test real search, ad, conversation, and signup journeys.
- Report gaps as unknown.
- Review data quality before increasing media spend.
