An intent score reads back a set number of days, and that lookback window decides what the score can see. This post compares three windows for intent scoring, 30, 60 and 90 days: what each gains in recency and gives up in evidence, how to choose one from the length of your own sales cycle, and how published scoring methods set theirs. One account is then scored on all three, with every figure shown, so you can repeat the arithmetic on your own data.
What a lookback window is
A lookback window is the period before a scoring date in which a signal is eligible to count. Attribution uses the same term: Google Analytics defines its key event lookback window as the limit on how old a touchpoint can be and still receive attribution credit, and its attribution settings set a default of 90 days for key events other than acquisition events, with 30 and 60 days as the other choices. Intent data puts a dated signal in place of the touchpoint.
The length is one of three settings, and a window quoted as one number leaves two unstated.
- Length. How many days back a signal may lie and still count.
- Weighting. Whether last week's signal counts the same as one of two months ago. The NIST/SEMATECH e-Handbook of Statistical Methods sets the two approaches side by side: a single moving average gives each past observation the same weight, and exponential smoothing gives an observation less weight the older it is.
- Comparison. Whether the result is read as a level, or against the account's own earlier activity.
HubSpot's score decay is an example of the second: it lowers what a single scored event contributes as the event ages, at intervals of 1, 3, 6 or 12 months, with a month counted as 30 days.
How a 30, 60 or 90 day lookback window changes intent scoring
A 30 day lookback window keeps an intent score close to the present and drops an account within a month of its last signal, at the price of thin evidence. A 90 day window gathers more signals and a steadier ranking, and needs recency weights so old signals do not outrank new ones. A 60 day window sits between.
| Window | What it gains | What it gives up | Where it fits |
|---|---|---|---|
| 30 days | Recency: a quiet account leaves the list within a month | Evidence: fewer signals behind each score, and a ranking that jumps from week to week | Short cycles and high-volume outbound |
| 60 days | Room for a second and a third signal to arrive | Some recency: a signal of seven weeks ago counts in full unless it is faded | Cycles of one to three months |
| 90 days | A quarter of evidence and a steadier ranking | Recency, unless signals are weighted: with equal weights the oldest counts like the newest | Long cycles and purchases by committee |
With equal weights a signal counts in full on its last day inside the window and for nothing on the next, so a score can fall on a day when nothing changed at the account. Fading removes that edge: with a half-life of 30 days a signal counts for half its weight at 30 days, a quarter at 60 and an eighth at 90.
For an account that produces signals at a steady rate, the newest 30 days then carry four sevenths of a 90 day sum, the middle 30 days two sevenths and the oldest 30 days one seventh. A 90 day window with a 30 day half-life reads mostly like a 30 day window, with a memory.
Example: one account scored on three windows
Acme Robotics is an invented company, and every figure in this example is illustrative.
Assumptions:
- The topic is CRM, and the scoring date is Sunday 4 October 2026.
- Acme Robotics shows five signals on the topic in the 90 days to that date.
- A window of N days counts every signal whose age is N days or less.
- With equal weights each signal counts at its full weight. With fading, it counts for its weight × 0.5 ^ (age in days / 30).
- The working stops at the sum of the weights, before any mapping to a scale.
| Signal | Date | Age in days | Weight | Faded weight |
|---|---|---|---|---|
| A partnership with a CRM consultancy announced | 16 July 2026 | 80 | 2 | 0.315 |
| A sales operations role opened | 30 July 2026 | 66 | 1.5 | 0.326 |
| A CRM administrator role opened | 15 August 2026 | 50 | 2 | 0.630 |
| A CRM tool adopted on the website | 27 August 2026 | 38 | 2 | 0.831 |
| A marketing role that asks for CRM experience | 28 September 2026 | 6 | 1 | 0.871 |
Each window sums the signals inside it.
| Window | Signals counted | Sum with equal weights | Sum with fading |
|---|---|---|---|
| 30 days | 1 | 1.0 | 0.87 |
| 60 days | 3 | 5.0 | 2.33 |
| 90 days | 5 | 8.5 | 2.97 |
Two things follow.
- The 30 day window sees one posting: 1.0 of the 8.5 points of evidence, about 12%. The tool adopted 38 days earlier lies outside it.
- With equal weights the two signals older than 60 days supply 3.5 of 8.5, which is 41% of the 90 day sum. With fading they supply 0.64 of 2.97, which is 22%.
Now move the scoring date four weeks on, to Sunday 1 November 2026, and assume that no new signal arrives. The ages become 34, 66, 78, 94 and 108 days, and the faded weights of the three signals still inside 90 days are 0.456, 0.435 and 0.330.
| Window | Signals counted | Sum with equal weights | Sum with fading |
|---|---|---|---|
| 30 days | 0 | 0 | 0 |
| 60 days | 1 | 1.0 | 0.46 |
| 90 days | 3 | 5.0 | 1.22 |
After four quiet weeks the 90 day sum with equal weights still stands at 5.0, which is 59% of its earlier value, although the newest signal is now 34 days old. The faded 90 day sum has dropped to 1.22, or 41% of its earlier value, and the 30 day window holds nothing. Fading inside the long window kept the evidence of the 90 day view with most of the freshness of the 30 day one.
How to choose the window from your sales cycle
Set the window from two durations in your own CRM: the lead time, from the first dated signal on the topic to the day an opportunity opened, and the cycle, from opening to close. The window has to be long enough to hold the signals that precede an opportunity, and short enough that an account drops out once the purchase is made or abandoned. The table gives starting points to test, and your own data decides.
| Your cycle, from opening to close | Start from | Check on your data |
|---|---|---|
| Under one month | 30 days with equal weights, or 60 days fading by half every 14 days | Whether enough accounts hold two or more signals inside the window |
| One to three months | 60 days, or 120 days fading by half every 40 days | Whether signals aged 31 to 60 days still precede opportunities |
| Over three months | 90 days with fading, read with a surge rule | Whether accounts with no signal in 45 days crowd the top of the list |
Then run one test.
- Take the opportunities opened in the last four quarters and, for each, the dated signals of the 180 days before it opened.
- Build a comparison set: accounts of the same fit tier with no opportunity, each given a random date in the same quarters.
- For each set, compute the share of accounts with at least one signal aged 0 to 30, 31 to 60, 61 to 90 and 91 to 180 days.
- Divide the first share by the second. The window ends at the band where the ratio falls to 1.
The test needs signals dated as observed and scores stored as they stood, which is what point-in-time data provides.
How fresh does intent data need to be for outbound prospecting?
As a starting point, intent data for outbound prospecting is fresh enough if the newest signal behind a score is days or a few weeks old when the rep calls. Measure that on three clocks: the age of the newest signal, the delay between a signal and its delivery to you, and how often the score is recomputed.
| Clock | What it measures | How to test it on a sample |
|---|---|---|
| Signal age | Days from the newest signal's own date to the scoring date | Subtract the newest evidence date from the score date, and read the oldest tenth |
| Delivery lag | Days from the date of a signal to the day it reaches your systems | Compare the date on each signal with the day your load first held it |
| Recompute cadence | How often a score is recalculated | Ask for the schedule, and whether a past score is ever rewritten |
For the third clock, read the documentation: 6sense states that each account's intent score is updated daily, and Demandbase that its keyword views are aggregated weekly. The first two are what data freshness means to a rep. A window sets the outer limit of age and nothing more: a 90 day score can rest on a signal of yesterday or of day 89, and the number does not say which.
The best practice for an intent data freshness window in outbound sales
The best practice is to separate two windows. The scoring window, 60 or 90 days with recent signals weighted more, decides which accounts have enough evidence. The freshness window, far shorter, decides whether a rep acts today: the newest signal must be younger than a limit you set and test, such as 14 or 30 days.
- Show the date of the newest signal beside every score in the rep's queue.
- Remove an account from a sequence once its newest signal is older than the scoring window.
- Keep both windows fixed for a quarter and hold out a random share of accounts, so the rule is tested against outcomes. The guide to prioritising accounts with intent scores sets out that test.
B2B buyer intent data for outbound prospecting: recency and the timing of signals
In outbound prospecting, the recency of B2B buyer intent data sets the order of the call list and the timing of signals decides who joins it. Rank on a score that counts recent signals for more, and add an account when its recent activity rises above its own baseline, which is what a surge or trending flag measures.
Published methods each set recent activity against a baseline or a threshold.
| Product | The recent period | What it is set against |
|---|---|---|
| Bombora Company Surge | The most recent three weeks of activity | A 12-week historical baseline, for each account and topic |
| Demandbase Trending Intent | The last 7 days | The last 8 weeks, with a rise of two standard deviations |
| 6sense momentum | The last 7 days | The previous 21 days |
| ZoomInfo Signal Score | Recent content consumption on a topic | A historical baseline |
| HubSpot buyer intent | Visits to the pages you name, in a period you set within the last 90 days | A minimum number of visits and of unique visitors from one company |
The lookback fixes the level of a score, and the baseline says whether that level is news. Use the level to rank and the change to time the first touch.
The kind of signal matters as much as its age. A role opened, a tool adopted or a capital raise reported stays true after the day it is seen, while a page read is over in a moment, so set the window by the kind of signal as well as by the sales cycle.
6sense buyer intent data: timing and signal recency for outbound sales
6sense documents its predictive intent score as the likelihood that an account opens an opportunity in the next 90 days, on a scale of 0 to 100, updated daily. For outbound sales, timing comes from the buying stage built on that score, and recency from a momentum measure that sets the last 7 days against the previous 21.
The buying stages divide the score into five bands: Target from 0 to 19, Awareness from 20 to 49, Consideration from 50 to 69, Decision from 70 to 85 and Purchase from 86 to 100. That page suggests outbound prospecting by sales at the Decision stage and describes telephone prospecting at the Purchase stage. Four of the windows in the 6sense documentation bear on timing.
| Setting | Window | What it does |
|---|---|---|
| Intent score | The next 90 days | The period the prediction looks forward over |
| Momentum in the Temperature model | The last 7 days against the previous 21 | Whether activity is rising or falling |
| Default definition of a 6sense Qualified Account | The last 60 days | One of its criteria: the account reached the Purchase or Decision stage in that time. A qualified account keeps the status for 60 days |
| Keywords Activity report | The last 30 days by default, 180 days at most | The period the report displays |
The 90 days of the 6sense score is a horizon, a different quantity from a lookback window of 90 days. The intent model page says the score uses an account's historical activity data. The pages cited here give no statement of how far back that activity reaches, so put the question to the vendor with the other two: the weighting and the comparison.
Testing a window on Fokals data
Fokals Intent Scores give a weekly score from 0 to 100 for each company and topic, each with the dated evidence behind it, so the age of the evidence is on the row. An intent surge flag marks a company that has become active on a topic against its own record. Each row is written once, after the week closes, and is never revised.
Company Signals delivers dated company signals daily, each with its observation date, kind and topics, so you can test a window of your own. The query counts, for each company, the CRM signals inside 30, 60 and 90 days of a scoring date, and returns the date of the newest one.
-- Postgres, with topics loaded as jsonb
select
company_id,
count(*) filter (where observed_at > :as_of - interval '30 days') as signals_30,
count(*) filter (where observed_at > :as_of - interval '60 days') as signals_60,
count(*) as signals_90,
max(observed_at) as newest_signal
from company_signals
where topics ? 'crm'
and observed_at <= :as_of
and observed_at > :as_of - interval '90 days'
group by company_id;Run it on sample data for several past dates, give each kind of signal the weight your own scheme sets, and you have the worked example on your own accounts. The weekly score remains the record to rank on and to back-test, because it is written once and never revised. What a Fokals intent score gives you shows how to read one, and the methodology describes each dataset.
Frequently asked questions
What is a lookback window in intent scoring?
It is the period before the scoring date in which a signal is eligible to count towards the score. A 30 day window reads the last month and a 90 day window the last quarter. The length is one of three settings. The other two are the weighting inside the window, where signals count equally or fade with age, and the comparison, where the result is read as a level or against the account's own baseline.
Should an intent score use a 30, 60 or 90 day lookback window?
Choose from your sales cycle and test it. A 30 day window suits short cycles and loses evidence. A 90 day window suits long cycles and needs recency weights, so that a signal from the start of the quarter counts for less than one from this week. A 60 day window sits between. A 120 day window that fades by half every 40 days puts four sevenths of the weight on the newest 40 days for a steadily active account.
What is the difference between a lookback window and score decay?
A lookback window is a cut-off: a signal inside it counts and a signal outside it counts for nothing. Decay is a weighting: a signal counts for less as it ages. They work together. A window with equal weights lets a score fall on the day a signal crosses the edge, and decay removes that edge. With a half-life of 30 days a signal has an eighth of its weight left when it leaves a 90 day window.
How old can an intent signal be before a sales rep should ignore it?
Set the limit from your own results. As a starting point, let a rep act when the newest signal is under 14 to 30 days old, and keep older signals as supporting evidence inside a 60 or 90 day scoring window. Then test it: compare the reply and meeting rates of accounts contacted at different signal ages, and move the limit to where the rates fall away.
Can you test a window of your own on Fokals data?
Yes. Company Signals delivers dated company signals daily, each with its observation date, kind and topics, so you can count the signals inside any window you choose and weight them as your own scheme sets. Intent Scores gives the weekly score from 0 to 100 for each company and topic beside them, each with the dated evidence behind it and written once, so the two can be compared on past dates.
Does a longer lookback window make an intent score more reliable?
It makes the score steadier, which is a different property. A longer window holds more signals, so one new signal moves the score less and the ranking changes less from week to week. It also keeps old signals in play, and with equal weights an account can stay near the top for weeks after its activity stopped. Weight the signals by recency and show the date of the newest one beside the score.
The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.
What this page says about the products it names was checked against their public documentation on 7 October 2026. Product and company names are trademarks of their owners. Fokals is not affiliated with them or endorsed by them.