The visitor signal layer. Anonymous behavior. Real-time intent.

Stream anonymous behavior and predicted intent into any application. While the visitor is still on the page.

Designed to complement your existing stack, not replace it.

SC
Sarah Chen
VP Engineering · Plaid
RESOLVED
Engagement active reading
Intent 87
Next likely demo request
LIVE SIGNAL streaming
0msbehavior.cursorfocused
120msbehavior.scrollreading rhythm
340msidentity.resolvedSarah, Plaid
2.4sprediction.intent0.87 high
nowprediction.nextdemo request →
engine.on('behavior.signal', s => {
  // s.engagement, s.intent, s.next…
});
What SQID does

Three layers. One stream.

Recognize the visitor anonymously. Predict what they'll do next. Identify and enrich when you want to. All from one SDK, streamed in real time.

01

Behavior

Recognize and understand every visitor through anonymous micro-behavior. Scroll cadence, cursor rhythm, hesitation. The signal between the events your stack already captures.

02

Prediction

SQID's contextual engine matches each visitor against tens of millions of anonymous sessions and returns the three most likely next moves, live.

03

Identity & Enrichment

Anonymous by default. When you want, resolve identity and enrich with your CRM, identity graphs, or any data source. Either SQID does it, or your server does. The stream stays the same.

Behavior

What your stack can't see today.

Analytics shows you what happened. Identity tools show you who someone might be. Neither captures what visitors are doing between the events. SQID does. Anonymously, continuously, at the first mile.

EVENTS · WHAT YOUR STACK SEES pageview scroll click dwell submit MICRO-BEHAVIORS · CONTINUOUS SIGNAL UNDERNEATH WHAT SQID INFERS · EXAMPLES FROM THIS SESSION reading attentively comparing options decisive cursor no hesitation

Sharpen any engagement metric

  • Dwell, time-on-page, active session: all event-driven
  • SQID adds continuous cadence underneath
  • Active engagement, finally separable from passive presence

Qualify intent on anonymous visitors

  • Two visitors fill out the same form
  • One types fluidly. One hesitates and backspaces
  • SQID flags the real lead before they hit submit

Trigger on real behavior, not assumed

  • Two visitors land on pricing
  • One scrolls cleanly. One jumps tiers and hesitates on compare
  • Scroll pattern tells you when and which help to surface

Same events. Same models. Higher-fidelity signal underneath.

Prediction

Every visitor has a tell.
SQID reads it in real time.

SQID's domain-tuned AI matches each visitor's behavior against tens of millions of anonymous sessions and returns the three most likely next moves. Live. As they happen.

> > OBSERVING NOW LIVE scrolldeliberate cursoron pricing clicksmeasured hesitationlow return visits3rd this week PATTERN deep evaluator MATCHED AGAINST POPULATION 47.2M sessions anonymous · no PII NEXT LIKELY MOVES request a demo 64% view pricing 23% exit 9% RECOMMENDED ACTION → route to sales now
<50ms end-to-end prediction
Live same TCP socket. no round-trip API
In-session act before the visitor leaves
Marketing

Trigger the right offer at the right moment. Surface a newsletter prompt to readers about to leave. Hold back the paywall for someone who's about to subscribe anyway.

Sales

Route high-intent anonymous visitors to a rep before they bounce. Let your SDRs work on the leads most likely to convert in the next ten minutes.

Personalization

Adapt the page in real time. Show the case study someone like this visitor responds to. Soften the form for a hesitator. Skip steps for a decisive one.

A predictive engine, trained on behavior. Anonymous by design.

Identity & Enrichment

From anonymous to known. When you want.

Most visitors stay anonymous. SQID still recognizes them by behavior and predicts their intent. When you want to know who someone is, identity resolution is one flag away. SQID can resolve it, your server can, or both. Once identified, enrichment plugs into your CRM, identity graphs, or any data source you already use.

1
Anonymous behavior
2
Identity resolved (opt-in)
3
Enriched with your data
DATA SOURCES Identity graphs Enrichment APIs Your CRM Your internal APIs POINTS OF ACTION Your frontend Your AI agents Your backend Your sales team SQID.dev Data flows in real-time. No storage. No batch jobs. Just a live pipe from source to action.
service_provider.js
// Your server receives every identified visitor
app.post('/visitor_details', async (req, res) => {
  const visitor = req.body;
  // { name, email, company, company_role, linkedin_url }

  // Look up in YOUR database
  const record = await db.query({ email: visitor.email });

  // Send merged data back to the browser
  res.json({ ...visitor, ...record });
});
Trust

Anonymous by design.
Useful by default.

Anonymous behavior and intent are the default. Identity is optional. Activation is consent-aware.

01
No PII in the stream by default

SQID captures behavioral signal. Scroll cadence, cursor rhythm, click pattern, hesitation. None of it identifies a person. All of it scores intent. The stream you consume is anonymous unless you ask it not to be.

Identity is opt-in and source-transparent
02

When identity resolution is enabled, SQID uses opt-in third-party identity graphs already legal in your stack. Every match shows its provenance. You see where a resolution came from before you act on it.

03
GDPR and CCPA aware

Consent state propagates through the stream. Visitor opt-out is one API call and takes effect in the same session. SQID respects DNT, GPC, and your own consent management platform.

Stream, not warehouse
04

SQID is a pipe, not a database. By default, visitor signal is ephemeral. It exists in the stream long enough for your app to act on it. Storage is opt-in and you control where.

Powerful enough to predict the next move. Defensible enough to ship.

In practice

What it looks like when the gap closes.

Three patterns, anonymized from the publisher, SaaS, and retail categories. Same playbook: layer SQID's behavioral signal under existing events, and the same models suddenly know what they're looking at.

Subscription publisher

From dwell to depth.

A subscription site used dwell-style events to measure engagement. The model worked, but couldn't separate engaged readers from background tabs.

SQID's micro-behavior signal layered under the same events. Same instrumentation. Now the engagement model knew which readers were actually reading. Paywall prompts moved to the high-intent moments.

Higher subscription conversion from the same traffic.
B2B SaaS

Qualified before the form.

A B2B platform only knew which visitors were high-intent after a form fill. By then, most had bounced.

SQID scored anonymous intent during the browsing phase. The visitor's behavior — slow scroll, cursor on pricing, repeat visit — flagged them as a high-fit account before they ever filled anything out. Sales got the alert while the tab was still open.

Multiple times more qualified accounts engaged. No change to the form.
Retail & commerce

The hesitation before the bounce.

A retailer saw cart abandoners show hesitation signals long before the cart event — but the cart event was the earliest moment their stack could act.

SQID flagged hesitating visitors mid-session, before they put anything in a cart. A personalized offer or chat handoff fired in the moment the doubt appeared.

Conversions recovered from visitors who would have left silently.
How it works

Not an API. A runtime.

A persistent, bidirectional stream between every browser and your stack. Signal goes in. Predictions, identity, and enrichment come out. Real-time, both directions, always on.

YOUR APPLICATIONS Chat / AI agents Paywall / Pricing Sales / CRM ↑ COMPOSITE · IDENTITY SQID SIGNAL LAYER LIVE Behavior cursor cadence scroll rhythm hesitation typing pattern Prediction intent score next action engagement state friction signal Identity de-anonymize person profile enrichment persistence ↑ RAW BEHAVIORAL SIGNAL VISITORS · BROWSERS visitor visitor visitor

Traditional approach

Your app → HTTP request → API → JSON → done
200–500ms per request
  • One direction. One shot.
  • Want an update? Ask again.
  • Frontend and backend disconnected.
  • Signal is a lookup. Right or wrong, once.

SQID.dev

Your app ↔ SQID.dev Runtime ↔ Your backend
<50ms on the open stream
  • Persistent. Bidirectional. Always on.
  • Every subscriber gets every event instantly.
  • Frontend and backend synchronized.
  • Signal resolves continuously: behavior, prediction, identity.

Built on Apache Pulsar. The same distributed messaging infrastructure behind Yahoo, Splunk, and Verizon. Exposed as one SDK and a simple consumer API.

Recipes

Copy. Paste. Ship.

Real examples. Working code. Every recipe is a starting point you can deploy today.

Chat integration

Intercom / Drift / Crisp / Zendesk

Skip "What's your email?" — the chat widget knows who they are before they type.

engine.on('visitor.identified', event => {
  const visitor = event.detail;
  window.Intercom('boot', {
    app_id: 'YOUR_APP_ID',
    email: visitor.email,
    name: visitor.name,
    company: { name: visitor.company }
  });
});

Pricing personalization

browser + service provider

Enterprise companies see enterprise pricing. Developers see API features. Managers see analytics.

engine.on('visitor.identified', event => {
  const visitor = event.detail;
  if (visitor.company_role?.match(/engineer/i))
    highlightFeatures(['API', 'SDK', 'Webhooks']);
  else if (visitor.company_role?.match(/manager/i))
    highlightFeatures(['Analytics', 'SSO', 'Reports']);
});

Exit intent

browser + service provider

"Before you go, Sarah..." — personalized offers by name, company, and role. Suppress for existing customers.

document.addEventListener('mouseout', e => {
  if (e.clientY < 0 && visitorData) {
    showModal({
      title: `Before you go, ${visitorData.firstName}...`,
      message: `Demo for ${visitorData.company_role}s`
    });
  }
});

Analytics enrichment

GA4 / Segment / Mixpanel / Amplitude / 8 more

Feed identity into every analytics tool at once. Connect anonymous sessions to known users.

engine.on('visitor.identified', event => {
  const v = event.detail;
  gtag('set', 'user_properties', {
    user_id: v.id, company: v.company
  });
  analytics.identify(v.id, { email: v.email });
  mixpanel.identify(v.id);
});
View all recipes in the playground
Get started

Five minutes to real-time signal.

From zero to streaming behavior, prediction, and identity.

01

Add the SDK

One script tag in your frontend.

// Add to your page
;(function(squid){
  (window.$quid) || (window.$quid = {});
  document.head.appendChild((function(s){
    s.src='https://app.asksquid.ai/tfs/'
      +squid+'/sdk';
    s.async=1; return s;
  })(document.createElement('script')));
})('YOUR_SDK_ID');
02

Listen

Get visitor data the moment identity resolves.

const engine = new squid.engine();

engine.on('visitor.identified',
  event => {
    const v = event.detail;
    // v.name, v.email, v.company,
    // v.company_role, v.linkedin_url
});
03

Build anything

Identity, behavior, enrichment — streaming to your code. What you build is up to you.

// AI agent context
// Website personalization
// Sales routing
// Embedded analytics
// Your idea here
Built for

Anywhere visitor signal drives revenue.

SQID is a horizontal data layer. The verticals that need anonymous, real-time behavioral intelligence the most:

SaaS & B2B

Convert anonymous traffic to qualified leads. Route high-intent visitors to sales before they bounce. Personalize the page based on who's actually evaluating.

Retail & commerce

Recognize the buyer before the cart event. Predict the purchase moment. Surface the right product, the right offer, at the right hesitation.

Advertising & adtech

Signals over segments. Intent over profiles. Anonymous behavioral targeting that survives cookie deprecation, built for buyers who've moved past demographic boxes.

Publishers & media

Time paywalls, newsletter prompts, and subscription offers to real engagement, not pageviews. Higher-fidelity signal feeding the same audience and engagement models you already run.

AI agents

A visitor lands on pricing for the third time this week. Before they type, your agent already knows they're comparing plans, likely evaluating enterprise, and should offer procurement answers. Context, before the first message.

Platforms & data partners

Embed SQID into your product, or license the dataset behind it. Tens of millions of anonymous behavior signatures. A new primitive to build on.

Two paths in

Embed the SDK. Or partner on the dataset.

For builders

Embed the SDK

One script tag. Real-time behavior, identity, and intent streaming into your stack. Ship in a day, scale with your product.

Get your API key →
For partners

Partner on the dataset

License the behavioral data layer. Anonymous behavior signatures across tens of millions of sessions. The new primitive for adtech, retail intelligence, and audience platforms.

Talk to us →

The visitor signal layer
for modern applications.

Stop building behavioral signal infrastructure from scratch. One SDK gives your product real-time behavior, prediction, and identity. Focus on what makes your app unique.

Get your API key Read the docs

No credit card. No sales call.