Real-time customer context

Act on live customer behavior.

Signals tells you what your customer is doing right now so your product can respond while they are still on the page.

Try it on yourself

Below is your own visit to this page, computed by Signals as you read.

Signals, about you

connecting

See live events firing as you browse this page on the left; what Signals computed about you on the right, refreshed every few seconds.

this page · events0 writes
nothing sent yet
write
attribute store · your sessionno read yet
reading_now
pages_last_5_min
seconds_since_last_action
sections_read
seconds_engaged
pricing_views
menus_explored
features_wanted
cta_clicks
arrived_from
waiting for the first computed value…
Your first events are in flight through a real Snowplow pipeline. Attributes appear as the stream computes them, usually within a few seconds.
It's fast

Attributes computed from events in <1s, served in 6ms p50 · 10ms p95, in-region.

Built to scale

Runs in our cloud or yours, AWS or GCP. Scales with your traffic.

You define what it computes

Any attribute over your events, on any key, over any window. One definition serves live from the stream and from your warehouse history.

The problem

Your data knows. Your product doesn't.

Behavior is collected. Nothing computes it, serves it, or flags it fast enough to act inside the session. Signals computes what your customer is doing right now and serves it to your app while they are still there. Deciding what to do with it stays in your stack: your ranker, your messaging tool, your agent.

The loop is too slow

"Our recommender doesn't know what the user did thirty seconds ago."

We built it, now we own it

"We built a profile API. Now two engineers maintain it forever and it pages us."

It never reaches production

"Our data scientists build features in notebooks that never make it to production."

The app is blind to the moment

"Our support agent has amnesia. It can't see the customer has been stuck on the same page for four minutes."

How it works

One event in. One answer out. Within a second.

One definition serves live from the streaming engine and builds the training set over warehouse history, so production features match what data science trained on. Managed SaaS or private deployment in AWS or GCP, identical architecture.

t = 0
Your customer acts

Views, searches, adds, abandons. The SDK you already run sends the event.

view_price · 3× in 10 minutes
t + <1s
Signals knows

Recomputes what you defined, on the stream, before the customer has moved. One definition, live and against history.

showing_price_hesitation = true
+ 6ms to read
Your product responds

Reads it mid-render, or a trigger pushes it wherever acts on it.

Ranker moves value options up
01 · the customer actsIllustrative. Your product decides; Signals supplies what this session has been doing.
Get started

Create your first live attribute today.

The short way

Add the Signals plugin or MCP server. Run one prompt.

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/skills
2 · 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.

See an attribute updating against your own traffic in the first session.

The free tier runs on the real engine: no card, no sales call. Add the SDK, define one attribute, watch it change while you click around your own product.

Talk to an engineer means an engineer: architecture, latency boundary, failure modes, how it runs in your cloud. Not a demo script.