# F7 — Intent Signals

_Lead Generation_

Real-time scoring of every contact based on intent signals: page visits, email opens, form starts (without finishing), repeat visits, pricing-page hits, and high-value content downloads. Hot contacts (score >70) bubble to the top of dashboards regardless of source channel.

## Steps
1. Go to Tools > Lead Generation > Intent Signals (or /dashboard/leadgen/intent).
2. Configure signal weights — defaults are sensible (pricing page = 25 points, repeat visit within 7d = 15 points, email open = 5 points, etc.). OWNER/ADMIN can tweak.
3. Watch the live feed: every signal fires here as it happens. The top "Hot leads" panel shows contacts with score >70 in the last 14 days.
4. Each contact's score decays over time (signals lose weight after 30/60/90 days) so the list always reflects RECENT intent, not historical noise.
5. Hot leads also show on the F10 Lead Gen Dashboard and on contact records as a colored intent badge.

## Tips
- Page visit attribution: F4 visitor ID feeds intent signals when an identified visitor matches a known Contact (by company OR a previously-known IP).
- ICP boost: contacts whose company matches your F1 ICP get a 1.3× score multiplier — they show up higher than equivalent non-ICP contacts.
- Score decay: linear from day 0 to day 30 (full weight → zero). Beyond 30 days the signal is dropped from the score entirely.
- No new schema for signal storage — uses existing ActivityLog entries with signal-typed actions.

## Example
A B2B fintech's SDR opens the Hot Leads panel Monday morning. Top of the list: an existing Contact who hadn't been touched in 60 days now has score 87 — viewed pricing twice last week, opened the last 2 cold emails, downloaded the security whitepaper from /resources. SDR fires off a personalized note ("Saw you back on the pricing page — anything I can answer?"). 4 hours later: demo booked. Without intent signals, that lead would still be sitting in the bottom of a "stale" segment.

## Troubleshooting
- **A contact has page visits but score is 0** — Page visits only count when CRMown can attribute them to a Contact — either via F4 visitor ID matching, a logged-in user, or a UTM/cookie tying the visit to a known contact. Anonymous traffic doesn't score. Fix: Make sure your tracking snippet is installed AND your forms set the cookie that attributes future visits.
- **Everyone has the same score** — Every contact is hitting the cap (typically 100), or weights are misconfigured to flat values. Fix: Reset signal weights to defaults. The cap is 100 — if many contacts hit 100, lower weights so the distribution spreads.
