← Back to blog

AccountLens: B2B Website Personalization Without the JS Overlay

Your ABM program knows exactly which accounts to prioritise. Your events team knows which companies attended. Your sales team gets account-specific briefings before every call. And then every one of those accounts visits your website and sees the exact same page as everyone else. AccountLens closes that gap — natively, inside AEM, without a JavaScript overlay.

96%
of B2B website visitors see a generic page regardless of who they are. Company, industry, deal stage, ICP tier — the website is blind to all of it. It is the only channel in the enterprise marketing stack that does not respond to account intelligence.

The gap at the centre of every ABM program

Account-based marketing has matured into a sophisticated discipline. Enterprise teams maintain tiered account lists, deploy field marketing resources specifically to named accounts, run targeted paid campaigns against account audiences, and train sales teams to research and personalise every touchpoint. The investment is real and the results are measurable.

The website sits outside all of it. It is the highest-traffic channel in the demand generation mix — the place where the impact of every other activity eventually lands — and it serves a single static experience to every visitor. A Fortune 100 enterprise in late-stage evaluation of a $2 million deal sees the same homepage headline, the same customer logo wall, and the same call-to-action as a first-time anonymous visitor exploring free tier options.

This is not a resource problem. It is an architecture problem. The account intelligence exists — in Salesforce, in Adobe AEP, in the intent data platform. The content exists — in the AEM content model, authored and approved, sitting unpublished against most audience signals. What has been missing is an orchestration layer that connects the two at render time.

Why existing personalisation tools have not solved this

Demandbase, Mutiny, and similar tools have been the standard answer to B2B website personalisation for years. They are well-funded, widely adopted, and genuinely useful. They are also architecturally limited in ways that matter significantly for enterprise deployments.

LEGACY APPROACH · JS OVERLAY

How Demandbase and Mutiny work

  • JavaScript snippet injected after page load
  • Generic content renders first, then swaps
  • Visible flicker on every personalised page
  • Blocked by ad blockers and privacy tools
  • Outside the AEM content model entirely
  • No live CRM deal context at render time
  • No LLM-generated variant capability
  • Measures clicks — not pipeline
ACCOUNTLENS · CMS-NATIVE

How AccountLens works

  • Server-side render hook inside AEM
  • Right content at first paint — always
  • Zero content flicker, ever
  • Works across all browsers and privacy settings
  • Native to the AEM content model
  • Live Salesforce deal context at every render
  • LLM variant generation for unmatched contexts
  • Measures pipeline velocity and win rate
The architectural difference matters. A JS overlay is a patch applied to a generic page. AccountLens is a native rendering decision — the right content is assembled before HTML is sent to the browser. There is no version of the page that contains the wrong content.

The four-agent architecture

AccountLens is built as a sequence of four specialised agents, each with a defined scope and a hard latency budget. The full pipeline — from inbound request to personalised HTML — completes in under 50 milliseconds at the 95th percentile.

AGENT 01

Account Resolution

Receives the inbound IP address, checks the three-layer account cache (in-memory → Redis → DynamoDB), and on a miss performs IP enrichment followed by a Salesforce domain match. Returns a context object containing: company name, industry, ICP tier, open opportunity status, opportunity value, deal stage, and AE owner. Latency target: p95 under 50ms.

AGENT 02

Audience and Intent

Receives the account context object and enriches it with Adobe AEP signals: unified customer profile, segment membership, prior content consumption, and session behavioural history. Classifies the visitor by persona (economic buyer / technical evaluator / practitioner), funnel stage, and topic interest cluster. UTM campaign signals override inferred funnel stage when present.

AGENT 03

Content Decision (LLM)

Receives the enriched context envelope and queries the AEM content index — a vector index of all published content fragments tagged with audience signals. Scores candidates against the context using a weighted formula (industry 35%, funnel stage 30%, ICP tier 20%, persona 15%). Variants scoring above 0.85 are selected. Below threshold, Claude on Amazon Bedrock generates compliant copy within the brand prompt framework.

AGENT 04

Delivery and Test

Injects the selected or generated content payload into the AEM Sling Model render hook before HTML is assembled. Maintains a 20% holdout group assigned by the orchestrator before any agent fires. Coordinates with Adobe Target for existing A/B activities. Triggers the async AE pre-call brief pipeline when a tracked account visits, pushing a brief to Salesforce activity and Slack.

What AccountLens personalises

AccountLens manages six content zones on each page. Each zone has a defined personalisation signal set and a fallback to the default authored content when confidence is below the selection threshold.

How AccountLens measures success

AccountLens is designed to be measured in pipeline currency, not marketing currency. The measurement architecture has three layers:

Impression logging: Every variant served is logged to a Kinesis event stream with a full context envelope: account ID (non-personal), variant ID for each content zone, confidence score, holdout flag, and session timestamp.

Attribution joins: An nightly attribution engine joins impression events to Salesforce opportunity creation events (same Account ID within a 30-day window) and to closed-won events. This produces pipeline velocity change — the difference in days-to-opportunity between treatment and holdout cohorts — and win rate lift — the difference in closed-won rates — segmented by ICP tier and industry vertical.

AE pre-call brief: When any tracked account visits the site, an async pipeline assembles a brief — pages visited, variants served, content consumed, intent signals — and delivers it to the assigned AE in Salesforce as an activity record and in Slack as a direct message, 30 minutes before any scheduled meeting or within 15 minutes of the site visit.

The 90-day milestones

Day 30

First personalised page live

Homepage and top three product pages personalised for ICP Tier 1 and Tier 2 named accounts. Hero zone and CTA zone active. Holdout group running. Baseline pipeline metrics established.

Day 60

Engagement lift visible

Target account session depth up 20% over baseline. Form fill rate for Tier 1 accounts up 30%. AE pre-call brief adoption above 80%. All six content zones active. LLM variant generation live for unmatched contexts.

Day 90

Pipeline signal measurable

Pipeline velocity differential between treatment and holdout cohorts visible in the attribution dashboard. Win rate directional data across ICP tiers. Revenue influence attribution in Salesforce for all closed deals where AccountLens served a personalised experience within the 90-day window.

Who AccountLens is built for

AccountLens is designed for enterprise marketing and demand generation teams that meet three criteria. First, they run a genuine account-based motion: a tiered named account list, ICP definitions, and Salesforce as the system of record for account and opportunity data. Second, their website is built on or managed through Adobe Experience Manager — either AEM as a Cloud Service or Adobe Managed Services. Third, they can point to a specific pipeline problem that website personalisation would address: target accounts that visit without converting, deals that stall between site visit and first meeting, AEs who go into calls without knowing which content the prospect consumed.

AccountLens is not the right tool for teams without AEM, without a structured ABM program, or without Salesforce as the CRM. For those teams, SignalMint — Workflow 02 in the flowmatos platform — is the right starting point. It requires nothing but an API key and runs in under 10 minutes.

Frequently asked questions

What is B2B website personalization?

B2B website personalization is the practice of serving different content to website visitors based on their company, industry, ICP tier, deal stage, and buying intent. Unlike consumer personalization, B2B personalization resolves anonymous visitors to known CRM accounts using IP-to-company matching and reads account context in real time. The most effective implementations inject personalised content at server-side render time — before the page reaches the browser — to eliminate content flicker and maintain CMS-native content governance.

What is the difference between AccountLens and Demandbase?

Demandbase provides account identification and intent data but delivers personalisation through a JavaScript snippet injected after page load, causing visible content flicker and operating outside the CMS content model. AccountLens integrates directly into the AEM server-side rendering pipeline, injecting personalised content before the page reaches the browser. AccountLens also reads live Salesforce deal context — open opportunity value, deal stage, ICP tier — at render time, enabling deal-context-aware personalisation that Demandbase does not provide.

What is a JS overlay in website personalization and why is it a problem?

A JavaScript overlay is a script that swaps generic content for personalised content after the browser has already rendered the default page. This causes visible content flicker — the user briefly sees generic content before the swap — and is blocked by ad blockers and browser privacy settings. JS overlays also operate outside the CMS content model, creating a parallel content system that is difficult to govern, audit, or roll back. AccountLens eliminates the JS overlay entirely by operating at AEM server-side render time.

How does AccountLens resolve visitors to Salesforce accounts?

AccountLens resolves visitors through a three-stage pipeline. First, it extracts the visitor IP address from the inbound request. Second, it calls an IP enrichment API (such as Clearbit Reveal or IPinfo) to resolve the IP to a company domain and name. Third, it queries Salesforce using a domain match and fuzzy company name match to retrieve the Account record. Results are cached at three layers — in-memory, Redis, and DynamoDB — with a 5-minute TTL to achieve p95 latency under 50 milliseconds.

How does AccountLens measure pipeline impact?

AccountLens measures pipeline impact through a controlled attribution approach. Every personalised page impression is logged with the account ID, variant served, and a holdout flag. A 20% holdout group receives the default experience throughout the measurement period. An attribution engine joins impression data to Salesforce opportunity creation and close events, comparing pipeline velocity and win rates between the treatment and holdout cohorts. This produces a direct measurement of the pipeline revenue impact attributable to personalisation — in pipeline currency, not clicks.

AccountLens is in private beta.

We are working with a small group of enterprise marketing teams on AEM to co-build and validate the product. If you run a named account program on AEM and Salesforce, we would like to talk.

Request early access →

Automate your marketing workflows

SignalMint is live and free. AccountLens is taking design partners. CampaignMint is ready to use.