Real-time customer context
Act on live customer behavior.
Signals computes what your customer is doing right now and serves it to your product while they are still on the page.
Teams running on Snowplow







Signals, about you
connectingWhat Signals knows about your visit, right now
Signals is computing your first attributes from the events this page just sent.
Every highlighted part is an attribute Signals computed from the behavioral data your browser sent during this visit. Open the Product menu above and watch the sentence change.
Keyed on an anonymous session id. Signals drops these values a day after your last event.
Respond while they're still on the page
Attributes computed from events in <1s, served in 6ms p50 · 10ms p95, in-region.
<1s
Event in to attribute updated
6ms
p50, in-region API round trip
10ms
p95. Load-test benchmark
Runs in our cloud or yours
Managed SaaS, or deployed in your own AWS or GCP account with the same architecture.
You define what it computes
Compute an attribute from live events, such as how many times this visitor viewed a price in the last ten minutes, or bring one in from a warehouse table, such as a churn score. Your app reads both from one service.
The problem
Your product reacts after the customer has left.
Most systems learn what happened in a visit after it is over. Signals serves what your customer is doing right now to your app during the visit. Your ranker, messaging tool or agent decides what to do with it.
How it works
Live behavior and warehouse history, in one read.
Signals keeps each live attribute current as events arrive, and syncs warehouse tables as attributes beside them. One read returns what the customer is doing now and what your warehouse holds about them, so one decision can use both.
t = 0
Real-time events
on each sync
Warehouse history
- Snowflake
- BigQuery
- Databricks
t + <1s
Signals computes and serves
+ 6ms to read
Your product responds
Use cases
Where teams use real-time customer context.
Real-time personalization and recommendations
Rank against what this customer is doing in this session. Signals supplies the attributes. Your ranker decides.
showing_price_hesitation = trueReal-time features for ML
Your model reads features built from what the customer is doing right now, at the moment it scores. On Snowflake, the same definitions also build its training set.
failed_searches_session: 3Customer context for AI agents
Hand your agent what this customer is doing now, what they did before and any scores you sync from your warehouse, so it already knows they have been stuck on the same page for four minutes.
agentic context: JSON or narrativeState for System One models
System One models answer typed questions about the state you send. Signals puts the customer's recent behavior in that state, current as of this click.
state: JSON, current at this clickGet started
Create your first live attribute.
The short way
Add the Signals plugin or MCP server. Run one prompt.
It works in Claude Code, Cursor or any MCP client. The agent adds the SDK, defines the attribute and wires the read into your app.
1 · Add
$ npx plugins add snowplow/skills2 · Run this prompt
> Use the Snowplow MCP server and Signals skill, then help me plan and implement a use case. Make sure everything is tested and works as intended.
01 · Collect
Add the SDK and Signals starts collecting.
Events arrive validated against their schemas. There is no event pipeline to build first.
webiOSAndroidReact NativeFlutterNode.jsPythonJavaGoRuby.NET
02 · Define
Say what you want to know, such as how often a customer viewed a price.
Define it in Console or in code, and deploy it through CI/CD.
# illustrative
Attribute(
name="showing_price_hesitation",
events=["view_price", "remove_from_basket"],
window="10m", key="user_id",
)03 · Serve and fire
Your app asks Signals. Or a rule fires the moment it happens.
Your app reads attributes in 6ms at p50, in-region. A trigger watches for its condition and delivers to your app, Braze, Kafka, a webhook or Pub/Sub.
high_value_basket_idle→ your app
third_failed_search→ Braze
agent_context_requested→ webhook
See an attribute updating against your own traffic in the first session.
The free tier runs on the real engine, up to 5 million events a month, with no card and no sales call. Add the SDK, define one attribute and watch it change as you click around your product.
Talk to an engineer means an engineer, who will go through the architecture, the latency boundary, failure modes and running it in your cloud.