Article

Choosing a lookback window for intent scoring: 30, 60 or 90 days

A short window buys recency and pays for it in evidence. How to set the window from your own sales cycle, how published methods set theirs, and one account scored three ways with the arithmetic shown.

11 min read

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.

WindowWhat it gainsWhat it gives upWhere it fits
30 daysRecency: a quiet account leaves the list within a monthEvidence: fewer signals behind each score, and a ranking that jumps from week to weekShort cycles and high-volume outbound
60 daysRoom for a second and a third signal to arriveSome recency: a signal of seven weeks ago counts in full unless it is fadedCycles of one to three months
90 daysA quarter of evidence and a steadier rankingRecency, unless signals are weighted: with equal weights the oldest counts like the newestLong 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.
SignalDateAge in daysWeightFaded weight
A partnership with a CRM consultancy announced16 July 20268020.315
A sales operations role opened30 July 2026661.50.326
A CRM administrator role opened15 August 20265020.630
A CRM tool adopted on the website27 August 20263820.831
A marketing role that asks for CRM experience28 September 2026610.871

Each window sums the signals inside it.

WindowSignals countedSum with equal weightsSum with fading
30 days11.00.87
60 days35.02.33
90 days58.52.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.

WindowSignals countedSum with equal weightsSum with fading
30 days000
60 days11.00.46
90 days35.01.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 closeStart fromCheck on your data
Under one month30 days with equal weights, or 60 days fading by half every 14 daysWhether enough accounts hold two or more signals inside the window
One to three months60 days, or 120 days fading by half every 40 daysWhether signals aged 31 to 60 days still precede opportunities
Over three months90 days with fading, read with a surge ruleWhether accounts with no signal in 45 days crowd the top of the list

Then run one test.

  1. Take the opportunities opened in the last four quarters and, for each, the dated signals of the 180 days before it opened.
  2. Build a comparison set: accounts of the same fit tier with no opportunity, each given a random date in the same quarters.
  3. 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.
  4. 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.

ClockWhat it measuresHow to test it on a sample
Signal ageDays from the newest signal's own date to the scoring dateSubtract the newest evidence date from the score date, and read the oldest tenth
Delivery lagDays from the date of a signal to the day it reaches your systemsCompare the date on each signal with the day your load first held it
Recompute cadenceHow often a score is recalculatedAsk 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.

ProductThe recent periodWhat it is set against
Bombora Company SurgeThe most recent three weeks of activityA 12-week historical baseline, for each account and topic
Demandbase Trending IntentThe last 7 daysThe last 8 weeks, with a rise of two standard deviations
6sense momentumThe last 7 daysThe previous 21 days
ZoomInfo Signal ScoreRecent content consumption on a topicA historical baseline
HubSpot buyer intentVisits to the pages you name, in a period you set within the last 90 daysA 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.

SettingWindowWhat it does
Intent scoreThe next 90 daysThe period the prediction looks forward over
Momentum in the Temperature modelThe last 7 days against the previous 21Whether activity is rising or falling
Default definition of a 6sense Qualified AccountThe last 60 daysOne 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 reportThe last 30 days by default, 180 days at mostThe 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.