{"id":8139,"date":"2026-07-15T05:05:59","date_gmt":"2026-07-15T05:05:59","guid":{"rendered":"https:\/\/www.coffee.ai\/articles\/inactivity-decay-deal-scoring"},"modified":"2026-07-15T05:05:59","modified_gmt":"2026-07-15T05:05:59","slug":"inactivity-decay-deal-scoring","status":"publish","type":"post","link":"https:\/\/www.coffee.ai\/articles\/inactivity-decay-deal-scoring","title":{"rendered":"How to Use Inactivity Decay in Deal Scoring"},"content":{"rendered":"<p><em>Written by: Doug Camplejohn, CEO &amp; Co-Founder, Coffee<\/em><\/p>\n<h2 id=\"key-takeaways\">Key Takeaways<\/h2>\n<ul>\n<li>Inactivity decay lowers a deal\u2019s engagement score after a set period without logged activity, so stale opportunities stop inflating forecasts.<\/li>\n<li>Apply decay only to the Engagement Score (0\u201350 points). Keep the Fit Score static and separate from time-based rules.<\/li>\n<li>Select step-down deductions for short cycles or percentage decay for longer ones, then tune thresholds with a decay table tied to your sales-cycle length.<\/li>\n<li>Accurate last-activity timestamps keep decay rules firing on the right deals. Bad data keeps phantom pipeline alive.<\/li>\n<li><a href=\"https:\/\/www.coffee.ai\/pricing\" target=\"_blank\">Automate activity logging with Coffee so every decay rule runs on ground-truth data.<\/a><\/li>\n<\/ul>\n<h2>Why Accurate Last-Activity Data Matters<\/h2>\n<p>B2B companies struggle with forecast accuracy when last-activity data is wrong or missing. Annual B2B contact data decay rates range from 22.5\u201370.3%. When timestamps drift, decay rules fire on the wrong deals or never fire at all. The result is a large portion of the pipeline that looks active in reports but has not seen real engagement in weeks.<\/p>\n<p>To prevent these accuracy issues, you need a solid foundation before implementing decay rules.<\/p>\n<h2>Readiness Checklist for Reliable Decay Rules<\/h2>\n<p>Confirm these prerequisites before you configure any decay logic:<\/p>\n<ul>\n<li>CRM admin access to create custom fields, workflows, and scheduled automations in Salesforce or HubSpot.<\/li>\n<li>Defined sales stages with documented average durations for each stage.<\/li>\n<li>A documented sales-cycle length (30-day, 60-day, or 90-day) that anchors your decay thresholds.<\/li>\n<li>A reliable source of last-activity data, either consistent manual logging or an automated activity-capture layer.<\/li>\n<\/ul>\n<p>The last item matters most and is the step teams skip most often. <a href=\"https:\/\/weflow.ai\/blog\/sales-activity-tracking\" target=\"_blank\" rel=\"noindex nofollow\">When 30% of activities go unlogged, sales metrics become fiction and inactivity decay rules cannot reliably identify stale deals.<\/a><\/p>\n<p><a href=\"https:\/\/www.coffee.ai\/pricing\" target=\"_blank\">Let Coffee\u2019s agent handle activity logging automatically so your prerequisites stay intact.<\/a><\/p>\n<h2>1. Keep Fit Score Separate from Engagement Score<\/h2>\n<p>Decay should never touch a deal\u2019s fit score. <a href=\"https:\/\/artemisgtm.ai\/how-to-implement-lead-scoring\" target=\"_blank\" rel=\"noindex nofollow\">Fit scores rely on static firmographic attributes such as company size, industry, revenue, tech stack, and growth stage that rarely change. Teams update these during monthly or quarterly enrichment refreshes.<\/a> Decay on fit would punish a perfectly qualified prospect just because a rep skipped logging a call.<\/p>\n<p>Structure your scoring model with two independent components:<\/p>\n<ul>\n<li><strong>Fit Score (0\u201350 pts):<\/strong> ICP attributes such as industry match, company size, title, and tech stack. Static. No decay.<\/li>\n<li><strong>Engagement Score (0\u201350 pts):<\/strong> Behavioral signals such as emails opened, calls logged, meetings held, and demo requests. Subject to time-based decay.<\/li>\n<\/ul>\n<blockquote><p><strong>Rule:<\/strong> Apply decay only to the Engagement Score. A deal\u2019s Fit Score changes only when enrichment updates a firmographic attribute.<\/p><\/blockquote>\n<p><a href=\"https:\/\/artemisgtm.ai\/how-to-implement-lead-scoring\" target=\"_blank\" rel=\"noindex nofollow\">Route deals to active sales queues only when both scores clear their thresholds, typically 30+ Fit and 25+ Engagement. Decay on the Engagement Score then removes disengaged deals from active views without discarding high-fit prospects.<\/a><\/p>\n<h2>2. Pick a Decay Method That Matches Your Cycle<\/h2>\n<p>Most teams use one of two practical patterns.<\/p>\n<p><strong>Step-Down (Fixed Deduction):<\/strong> Subtract a fixed number of points at defined intervals. This pattern is simple to configure and easy to explain to sales leadership. It works best for short cycles of 30 days or fewer where a clear active versus stale signal helps more than a gradual curve. Some teams apply point deductions after 30 days of inactivity so one old engagement spike cannot keep a dead prospect hot.<\/p>\n<p><strong>Percentage Decay:<\/strong> Reduce the current score by a fixed percentage each period. This pattern produces a smooth curve and keeps high-scoring deals visible longer before they drop below threshold. It suits longer cycles of 60 to 90 days where gradual signal degradation reflects reality better than a hard cutoff.<\/p>\n<h2>3. Build a Decay Table by Sales-Cycle Length<\/h2>\n<p>Use the table below as a starting configuration. Adjust thresholds after 60 to 90 days of live data once you see conversion patterns.<\/p>\n<table>\n<thead>\n<tr>\n<th>Inactivity Window<\/th>\n<th>30-Day Sales Cycle (Step-Down)<\/th>\n<th>90-Day Sales Cycle (Percentage)<\/th>\n<th>Trigger Action<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0\u20137 days<\/td>\n<td>No deduction<\/td>\n<td>100% of score retained<\/td>\n<td>None<\/td>\n<\/tr>\n<tr>\n<td>8\u201314 days<\/td>\n<td>\u20135 pts<\/td>\n<td><a href=\"https:\/\/salesmotion.io\/blog\/account-scoring-guide\" target=\"_blank\" rel=\"noindex nofollow\">75% of score retained<\/a><\/td>\n<td>Internal alert to rep<\/td>\n<\/tr>\n<tr>\n<td>15\u201330 days<\/td>\n<td>\u201310 pts<\/td>\n<td><a href=\"https:\/\/salesmotion.io\/blog\/account-scoring-guide\" target=\"_blank\" rel=\"noindex nofollow\">50% of score retained<\/a><\/td>\n<td>At-risk flag in CRM<\/td>\n<\/tr>\n<tr>\n<td>31\u201360 days<\/td>\n<td>Score zeroed<\/td>\n<td>25% of score retained<\/td>\n<td>Pipeline review required<\/td>\n<\/tr>\n<tr>\n<td>60+ days<\/td>\n<td>Deal marked stale<\/td>\n<td><a href=\"https:\/\/salesmotion.io\/blog\/account-scoring-guide\" target=\"_blank\" rel=\"noindex nofollow\">Score drops to zero<\/a><\/td>\n<td>Deal archived or closed-lost<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>What Counts as Inactivity<\/h2>\n<p>Inactivity means no qualifying logged interaction within the defined window. A deal becomes stale when it sits in its current stage longer than expected and shows no logged activity such as email, call, or meeting in the recent period.<\/p>\n<p>Qualifying activities that reset the decay clock must show real prospect engagement. These include outbound or inbound email exchanges, logged calls with a duration greater than zero, held calendar meetings, and inbound demo or contact form submissions. Each one represents a confirmed touchpoint rather than automated system noise.<\/p>\n<h2>4. Define Inactivity Triggers in Your CRM<\/h2>\n<p>Set enrollment criteria in your CRM workflow builder using AND logic:<\/p>\n<ul>\n<li>Deal stage is not \u201cClosed Won\u201d or \u201cClosed Lost.\u201d<\/li>\n<li>Deal stage is not in the pause list from Step 6.<\/li>\n<li>Last Activity Date is more than [threshold] days ago.<\/li>\n<li>Engagement Score is greater than 0.<\/li>\n<\/ul>\n<p>Create a custom date field named <code>Last_Qualifying_Activity_Date<\/code>. Populate it only with confirmed logged interactions, not with system metadata such as \u201crecord modified.\u201d <a href=\"https:\/\/entflow.app\/blog\/automating-lifecycle-stage-transitions-without-breaking-pipeline-reporting\" target=\"_blank\" rel=\"noindex nofollow\">System-generated last-modified timestamps are unreliable for decay calculations because any automation touch resets the clock.<\/a><\/p>\n<h2>5. Connect Decay Logic to Workflow Automation<\/h2>\n<p>Configure a scheduled workflow that runs daily at a consistent time.<\/p>\n<ol>\n<li>Use enrollment triggers for deals that meet the inactivity criteria from Step 4.<\/li>\n<li>Calculate days since <code>Last_Qualifying_Activity_Date<\/code>.<\/li>\n<li>Branch by cycle length and days elapsed using the decay table from Step 3.<\/li>\n<li>Apply the correct point deduction or percentage reduction to the Engagement Score field.<\/li>\n<li>Write a timestamp to an audit field named <code>Last_Decay_Applied_Date<\/code>.<\/li>\n<li>When Engagement Score reaches zero, set a \u201cStale Deal\u201d flag and enroll the deal in a re-engagement sequence.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/artemisgtm.ai\/how-to-implement-lead-scoring\" target=\"_blank\" rel=\"noindex nofollow\">You can also configure a weekly batch decay workflow that runs every Monday and reduces the Engagement Score by 10% for any deal with no activity in the prior seven days.<\/a> Any new qualifying activity should reset the decay clock and restore points based on the activity type.<\/p>\n<h2>6. Set Pause Rules for Structurally Quiet Stages<\/h2>\n<p>Decay must pause during stages where inactivity is structurally expected, such as legal review, procurement, or multi-stakeholder evaluation. During these stages, the deal moves through internal customer processes that do not require rep activity, so silence does not signal disengagement. Firing decay during these stages would penalize deals that are progressing through required workflows.<\/p>\n<p>Add a suppression condition to the enrollment trigger and exclude deals where Stage equals \u201cContract Review,\u201d \u201cLegal,\u201d or \u201cProcurement.\u201d When a deal exits a paused stage, reset <code>Last_Qualifying_Activity_Date<\/code> to today so the decay clock starts fresh instead of inheriting inactivity from the paused period.<\/p>\n<blockquote><p><strong>Reset rule:<\/strong> Any stage change should write today\u2019s date to <code>Last_Qualifying_Activity_Date<\/code>. Stage movement proves active progression and should reset the decay window.<\/p><\/blockquote>\n<h2>Pause Decay During Active Negotiations<\/h2>\n<p>Create a boolean field named <code>Decay_Paused<\/code>. Set it to TRUE with workflow when a deal enters a defined pause stage. Add <code>Decay_Paused = FALSE<\/code> as a mandatory enrollment condition on every decay workflow. When the deal exits the pause stage, set <code>Decay_Paused<\/code> back to FALSE and write today\u2019s date to <code>Last_Qualifying_Activity_Date<\/code>. <a href=\"https:\/\/support.gainsight.com\/Staircase_AI\/Configurations\/Staircase_AI_Health_Score\" target=\"_blank\" rel=\"noindex nofollow\">A two-phase decay pattern that holds full value through day 44, steps to 50% from day 45 to 89, then drops to zero at day 90 works well for enterprise deals with long negotiations.<\/a><\/p>\n<h2>7. Validate Decay Rules with Pipeline-Compare Reports<\/h2>\n<p>After the first two weeks of live decay rules, run a pipeline comparison report with two views. One view shows scored pipeline where Engagement Score is greater than zero. The second view shows total open pipeline. The gap between these figures represents phantom pipeline. <a href=\"https:\/\/weflow.ai\/blog\/sales-activity-tracking\" target=\"_blank\" rel=\"noindex nofollow\">A reported $5M pipeline may actually be closer to $3M once deals with no activity in the past 30 days are discounted.<\/a> Track this variance weekly so forecast accuracy improves over time.<\/p>\n<h2>8. Adjust Thresholds Based on Real Outcomes<\/h2>\n<p>After 60 to 90 days, compare win rates for deals that triggered decay with those that did not. When high-fit deals are being zeroed before reps can re-engage, extend the inactivity window by seven days. When stale deals still appear in forecast calls, tighten the threshold.<\/p>\n<p>Organizations with structured pipeline management improve forecast accuracy only when the underlying activity data stays trustworthy.<\/p>\n<h2>Manual Logging vs. Coffee Agent Activity Capture<\/h2>\n<p>The eight steps above depend on accurate <code>Last_Qualifying_Activity_Date<\/code> values. That accuracy comes from how activity data enters the CRM.<\/p>\n<table>\n<thead>\n<tr>\n<th>Dimension<\/th>\n<th>Manual Logging<\/th>\n<th>Coffee Agent (Automated)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Data entry method<\/td>\n<td>Rep logs after each interaction<\/td>\n<td>Agent captures from email, calendar, and call transcript automatically<\/td>\n<\/tr>\n<tr>\n<td>Activity capture rate<\/td>\n<td><a href=\"https:\/\/weflow.ai\/blog\/sales-activity-tracking\" target=\"_blank\" rel=\"noindex nofollow\">~70% (the 30% gap mentioned earlier)<\/a><\/td>\n<td>100% of connected interactions captured<\/td>\n<\/tr>\n<tr>\n<td>Timestamp accuracy<\/td>\n<td>Delayed, logged hours or days after interaction<\/td>\n<td>Real-time, written at interaction close<\/td>\n<\/tr>\n<tr>\n<td>Decay rule reliability<\/td>\n<td>Low, fires on wrong deals when logs are missing<\/td>\n<td>High, fires only when genuine inactivity exists<\/td>\n<\/tr>\n<tr>\n<td>Rep time cost<\/td>\n<td><a href=\"https:\/\/www.coffee.ai\/pricing\" target=\"_blank\">71% of reps say too much time spent on data entry<\/a><\/td>\n<td>0 hours, agent handles all logging<\/td>\n<\/tr>\n<tr>\n<td>Pipeline accuracy impact<\/td>\n<td>Forecasts can be inaccurate on stale data<\/td>\n<td>Decay rules reflect actual deal state<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Coffee Agent Setup for Accurate Decay<\/h2>\n<p>The Coffee Agent connects to Google Workspace or Microsoft 365 and starts logging every email thread, calendar event, and call transcript to the matching deal record in Salesforce or HubSpot. Reps do not need to take any action. The agent writes to the <code>Last_Qualifying_Activity_Date<\/code> field in real time, which supports the decay rules you configured in Step 4.<\/p>\n<p>Teams using the Coffee Companion App on an existing Salesforce or HubSpot instance complete setup with a single authentication. The agent then syncs activity data, enriches deal records, and writes structured interaction summaries, including BANT, MEDDIC, or SPICED qualification fields, back to the primary CRM. Every decay workflow from Steps 4 and 5 now runs on ground-truth data instead of rep-reported data.<\/p>\n<p>Because the agent captures call transcripts and meeting summaries, it can distinguish between a genuine qualifying interaction and an automated email bounce. This distinction prevents false resets of the decay clock that would keep stale deals artificially warm.<\/p>\n<p><a href=\"https:\/\/www.coffee.ai\/pricing\" target=\"_blank\">Coffee removes the garbage-in problem that quietly breaks most decay rules.<\/a><\/p>\n<h2>Validation Checklist for Ongoing Accuracy<\/h2>\n<ul>\n<li>Weekly: Run a pipeline-compare report and confirm scored pipeline variance moves closer to actual close rates.<\/li>\n<li>Weekly: Verify <code>Last_Decay_Applied_Date<\/code> populates on all eligible deals.<\/li>\n<li>Weekly: Check that a high percentage of open opportunities show at least one logged activity in the recent period. Low percentages may signal stagnation.<\/li>\n<li>Monthly: Audit deals where Engagement Score equals zero but Stage is not Closed. These are phantom deals and should be closed or re-engaged.<\/li>\n<li>Quarterly: Review decay thresholds against actual win-rate data and adjust windows by plus or minus seven days as needed.<\/li>\n<\/ul>\n<p>Once you validate your baseline configuration, you may need to adjust thresholds based on your specific sales-cycle length.<\/p>\n<h2>Variations for 30-Day vs. 90-Day Sales Cycles<\/h2>\n<p>For 30-day cycles, compress every threshold to match the faster pace. Flag at seven days, apply the first deduction at 14 days, and zero the score at 30 days. <a href=\"https:\/\/weflow.ai\/blog\/sales-pipeline-health\" target=\"_blank\" rel=\"noindex nofollow\">Discovery-stage deals average 10 to 12 days and should be flagged after 15 to 18 days with 14 days of no activity.<\/a> This compression reflects the quick decision velocity in short-cycle deals.<\/p>\n<p>For 90-day cycles, the longer timeline requires a different approach. Use the percentage method from Step 2 and extend the zero-score threshold to 90 days so you avoid zeroing deals that are progressing normally. Points can be reduced based on the age of the last activity. Pause rules from Step 6 become especially important in 90-day cycles where legal and procurement stages can consume 20 to 30 days without any rep-initiated activity.<\/p>\n<h2>Frequently Asked Questions<\/h2>\n<h3>Who should own the decay rule configuration, RevOps or Sales leadership?<\/h3>\n<p>RevOps should own the technical configuration, including field creation, workflow logic, and threshold tables. Sales leadership should approve thresholds and pause-stage definitions because they know which stages structurally require silence from the rep side. Without sales leadership buy-in, teams will override decay rules that zero out legitimate deals, which defeats the purpose of the system.<\/p>\n<h3>How often should decay thresholds be reviewed?<\/h3>\n<p>Review thresholds after the first 60 to 90 days of live data, then quarterly. The first version of any scoring model rarely survives contact with real pipeline data unchanged. Segment win rates by Engagement Score band at the time of close. When deals closing at a score of 15 win at the same rate as deals at 40, thresholds are too loose. When high-fit deals are being zeroed before reps can respond, windows are too tight.<\/p>\n<h3>What happens to a deal\u2019s score when a prospect re-engages after decay has zeroed it?<\/h3>\n<p>Any new qualifying activity such as an inbound email reply, a booked meeting, or a returned call should reset the Last Qualifying Activity Date to today and restore points based on the activity type. The deal re-enters the active scoring pool from its current Fit Score plus the points earned by the re-engagement action. It does not automatically return to its pre-decay score. The new score reflects current engagement instead of historical momentum.<\/p>\n<h3>Can decay rules work in HubSpot without a custom scoring setup?<\/h3>\n<p>HubSpot offers decay intervals of 1, 3, 6, or 12 months on a linear schedule. For more granular control such as weekly percentage decay or custom inactivity windows by sales-cycle length, you need a scheduled workflow that reads a custom Last Qualifying Activity Date field and applies point adjustments with calculated properties. The native decay tool provides a starting point. The workflow approach from Step 5 gives full control.<\/p>\n<h3>How does the Coffee Agent prevent false resets of the decay clock?<\/h3>\n<p>The Coffee Agent distinguishes qualifying interactions such as emails with substantive content, attended calendar events, and completed calls with transcripts from automated system touches such as bounce notifications or calendar invites with no attendee confirmation. Only confirmed qualifying interactions write a new timestamp to the Last Qualifying Activity Date field. This filter prevents automated outreach sequences from resetting decay on deals where the prospect has never responded, which is the most common way manual and basic automation setups create phantom pipeline.<\/p>\n<h2>Conclusion<\/h2>\n<p>Inactivity decay acts as a powerful tool for pipeline hygiene, but it stays only as reliable as the last-activity data behind it. The eight steps above give RevOps and sales leaders a complete implementation framework that includes separated fit and engagement scores, a decay table calibrated to cycle length, workflow automation with pause rules, and weekly validation checks. The framework fails the moment a rep forgets to log a call or an email goes uncaptured.<\/p>\n<p>The Coffee Agent removes that failure mode. By logging every email, calendar event, and call transcript to the correct deal record in real time, Coffee ensures that every decay rule fires on accurate data. This shift turns a theoretical pipeline hygiene system into a forecast engine you can trust.<\/p>\n<p><a href=\"https:\/\/www.coffee.ai\/pricing\" target=\"_blank\">Build a pipeline where every score reflects reality with Coffee\u2019s automated activity capture.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stop stale deals from inflating your forecast. Learn how to set inactivity decay rules in deal scoring \u2014 and automate it accurately with Coffee.<\/p>\n","protected":false},"author":11,"featured_media":8138,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-8139","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/posts\/8139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/comments?post=8139"}],"version-history":[{"count":0,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/posts\/8139\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/media\/8138"}],"wp:attachment":[{"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/media?parent=8139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/categories?post=8139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coffee.ai\/articles\/wp-json\/wp\/v2\/tags?post=8139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}