Agent #007 · ABM

Account Engagement Monitor

🟡 Growth

Detects warming accounts from web visits, email clicks, event engagement, replies, and intent topics; alerts sales and ABM

Build time
0.5-1 day
Primary user
ABM Lead
Primary outcome
Sales and ABM follow-up alerts
Deployable pack
Yes: full pack

Adam's take

Most 'we missed the buying window' stories mean the signal sat in a dashboard nobody opened. Push the signal to where the team already lives.
Adam Woozeer, founder

Required tools

HubSpotn8nSlack

Optional tools

6senseDemandbaseRB2B

Expected value

Faster follow-up on warm accounts; fewer missed buying windows

Deployable workflow pack

The full pack includes the agent spec, deployment guide, architecture diagrams, n8n workflow skeleton, Clay template, HubSpot properties, JSON schemas, OpenAPI spec, cost and ROI calculators, demo data, QA checklist, and governance notes.

View pack on GitHub
Full deployment guide →Governance & failure modes →QA checklist →

How to deploy this agent

The buying signal is almost always already there — scattered across five tabs nobody has all open at once: web analytics, marketing automation, a webinar platform, CRM activity, intent data. This agent is the one place that actually watches all five, for every target account, in real time.

Core signals

Pricing/demo page visit: The highest-intent signal available — a reverse-IP-matched visit to a high-intent page carries the largest single score boost.
General website visit: Any page view matched to a target account, capped per day so passive browsing doesn’t inflate the score as much as a targeted visit.
Email click / webinar attendance: Marketing automation events that indicate active interest beyond a passive open.
Sales reply / meeting booked: The strongest signal in the model — an actual two-way interaction logged in the CRM.
Intent topic match: A third-party intent surge on a configured topic, when an intent provider is connected.

Input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://deploytheagent.com/schemas/agent-007-input.schema.json",
  "title": "Agent #007 Account Engagement Monitor Input",
  "type": "object",
  "required": [
    "record_id"
  ],
  "properties": {
    "record_id": {
      "type": "string",
      "description": "CRM record ID (company/contact/deal depending on agent)."
    },
    "domain": {
      "type": "string"
    },
    "config_version": {
      "type": "string",
      "description": "Versioned config used for this run."
    }
  },
  "additionalProperties": true
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://deploytheagent.com/schemas/agent-007-output.schema.json",
  "title": "Agent #007 Account Engagement Monitor Output",
  "type": "object",
  "required": [
    "record_id",
    "account_engagement_signal_score",
    "account_temperature",
    "account_top_signal",
    "account_last_signal_date"
  ],
  "properties": {
    "record_id": {
      "type": "string"
    },
    "account_engagement_signal_score": {
      "type": "string",
      "description": "Agent #007 output field."
    },
    "account_temperature": {
      "type": "string",
      "description": "Agent #007 output field."
    },
    "account_top_signal": {
      "type": "string",
      "description": "Agent #007 output field."
    },
    "account_last_signal_date": {
      "type": "string",
      "description": "Agent #007 output field."
    }
  },
  "additionalProperties": false
}

Scoring / classification logic

Score decays over a rolling 14-day window, so a one-time spike doesn’t keep an account flagged Hot indefinitely. Accounts crossing the Hot threshold trigger a real-time Slack alert to the account owner — or a shared queue if the account is unowned — but a human always decides what happens next.

HubSpot CRM properties

account_engagement_signal_score company
Written by Agent #007 (Account Engagement Monitor).
account_temperature company
Written by Agent #007 (Account Engagement Monitor).
account_top_signal company
Written by Agent #007 (Account Engagement Monitor).
account_last_signal_date company
Written by Agent #007 (Account Engagement Monitor).

n8n workflow skeleton

The Account Engagement Monitor watches website visits, pricing/demo page views, email clicks, webinar attendance, and sales replies across target accounts, and alerts sales/ABM the moment an account crosses a warm-or-hot threshold — instead of everyone finding out at the next QBR. Configure every node marked CONFIGURE before enabling the trigger.

  1. Trigger
    CONFIGURE: set cadence per agent-spec.md's What It Does section. Leave disabled until Step 6 of deployment-guide.md.
  2. Load versioned config
    CONFIGURE: replace with your versioned config built from real data (see deployment-guide.md Step 1).
  3. Fetch source data
    CONFIGURE: {{HUBSPOT_CREDENTIAL}}. Pull the fields listed in agent-spec.md's Inputs table.
  4. Validate + gate records
    Drops records missing required inputs or failing suppression/gate checks defined in agent-spec.md. Logs every drop.
  5. Apply workflow logic
    Implements the Workflow Logic table from agent-spec.md. Writes model/config version alongside every derived value for auditability.
  6. Write agent-owned CRM fields
    CONFIGURE: {{HUBSPOT_CREDENTIAL}}. Writes only: account_engagement_signal_score, account_temperature, account_top_signal, account_last_signal_date. Never writes sales-owned fields.
  7. Route to human review / alert
    CONFIGURE: {{SLACK_CHANNEL}}. Fires for records requiring human review per agent-spec.md's Governance section.

Cost calculator

Cost Calculator — Agent #007: Account Engagement Monitor

Fill in your own volumes and rates — do not use these as benchmark numbers.

Cost driverYour volumeUnit costMonthly cost
n8n execution (workflow runs)___ runs/month$___ / run$___
Enrichment/sourcing credits (if applicable)___ records/month$___ / record$___
LLM API calls (if applicable)___ calls/month$___ / call$___
Human review time___ hrs/month$___ / hr (loaded)$___
Total$___

Build cost (one-time)

Estimated build time: 0.5–1 day. Multiply by your builder's loaded hourly rate for a one-time build-cost estimate.

Notes

Costs scale with the volume of records this agent processes, not with the size of your whole CRM — scope your volume estimate to the specific object/list this agent actually touches (see `agent-spec.md`'s Inputs table).

ROI calculator

ROI Calculator — Agent #007: Account Engagement Monitor

MetricBeforeAfterBasis
Time to notice a buying signalDays, if noticed at allReal-time (hourly poll)Automated aggregation across sources
Signal sources actually watched per account1 (whichever a rep checks)All connected sourcesAggregation covers every configured channel
False person-level identity claimsRisk with some reverse-IP toolsZero — account-level onlyGovernance rule enforced in scoring logic

Faster follow-up should correlate with higher engagement-to-meeting conversion; validate that lift against your own pre-agent baseline.

Your numbers

InputValue
Records processed per month___
Manual time saved per record (before)___ min
Loaded hourly rate$___
Monthly time-savings value$___ (records × minutes saved ÷ 60 × rate)

Compare this to the cost calculator's monthly total for a net ROI. Do not add a revenue-impact number unless you've measured it against your own baseline — see `agent-spec.md`'s ROI note.

Governance notes

Failure modes

QA checklist

QA Checklist — Agent #007: Account Engagement Monitor

To be completed by a non-builder reviewer before go-live.

Deployment checklist

  • At least one signal source connected and verified
  • Four HubSpot company properties created
  • Signal weighting and decay config written and versioned
  • n8n workflow imported, marked nodes configured
  • Demo-data run matches `demo-data/sample-output.json`
  • Anonymous-identity governance test passes
  • Slack alert routing verified for owned and unowned accounts
  • QA checklist completed by a non-builder
  • Rollback tested

Failure-mode verification

  • Verified: Alert fatigue from too many Hot flags does not occur (mitigation: QA checks weekly Hot-flag volume against a sane ceiling; threshold tuned if exceeded)
  • Verified: Anonymous visitor treated as a named contact does not occur (mitigation: Schema enforces account-level-only signal records; QA test asserts no person field is populated from reverse-IP data)
  • Verified: Stale spike keeps account Hot for weeks does not occur (mitigation: Rolling 14-day decay window is a required config field, not optional)
  • Verified: Alert goes to no one does not occur (mitigation: Alerts route to a shared queue Slack channel when `hubspot_owner_id` is empty)

Governance verification

  • Agent writes only to its agent-owned fields: `account_engagement_signal_score`, `account_temperature`, `account_top_signal`, `account_last_signal_date` (company)
  • No auto-send, auto-close, auto-route, or auto-create action occurs without the human step described in `agent-spec.md`
  • Confidence/model-version is present on every written record where applicable
  • Demo-data run output matches `demo-data/sample-output.json` in structure

Sign-off

Reviewer name: _______________ Date: _______________ Result: Pass / Fail (attach notes)

FAQ

Does this agent know who specifically visited the pricing page?
No — unless that visit is tied to an authenticated click or a CRM-logged activity, the signal stays account-level. Claiming to know an anonymous visitor’s identity is explicitly against this agent’s governance rules.
What happens when an account goes Hot?
A real-time Slack alert goes to the account owner, or a shared queue if the account has no owner yet. The agent surfaces the signal; a human decides what to do with it.
Can this agent run with just website analytics and nothing else?
Yes — it degrades gracefully. More connected signal sources (marketing automation, intent data) improve the score, but at least one real signal source is enough to start.
Why does the score decay over time instead of staying high?
A single old spike shouldn’t keep an account marked Hot for weeks after the actual interest has cooled — the rolling decay window keeps the signal current.

Related agents