Real-time personalization

Personalize on what the customer is doing right now, not last night.

Signals computes live attributes from what your customer is doing and serves them to whatever you use to act, in 6ms, while they are still on the page.

  • 6ms p50 serve, in-region
  • <1s event to attribute current
  • Free tier, no card
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.
Why it stalls

Your ranking is smart. It just doesn't know what happened thirty seconds ago.

Before

Segments from last night's batch

The customer changed their mind three pages ago. Your model is scoring for who they were yesterday.

sessions_last_7d = 4
With Signals

Attributes computed on the live stream

Describe once what you want to know about a customer. Signals recomputes it on every event and serves it to your app mid-request.

showing_price_hesitation = true
Result

Your product responds in the same session

Value options move up. The bundle appears. The nudge lands while they are still deciding.

same page, same session
Why in the session

What your product can do once it knows what is happening now.

None of these work from a segment computed overnight. By the time the batch lands, the customer has decided.

Act on doubt before they leave

The reassurance, the bundle, the cheaper option appears while the basket is still open, rather than in tomorrow morning's abandonment email after they bought elsewhere.

session conversion · basket abandonment

Discount only the people who need it

When hesitation is visible in the moment, the discount goes to the people about to leave rather than to everyone in a segment, including the ones who were going to buy anyway.

discount rate · margin per order

Support that already knows what happened

Your agent, human or AI, opens the conversation already holding the last four minutes: three failed searches, stuck on checkout. The first three questions never get asked.

handle time · deflection rate

Find out today whether it worked

When the attribute behind a test updates in the session, the result lands in today's numbers rather than after tomorrow's batch, so a losing variant costs you an afternoon instead of a week.

experiment velocity · time to read a result
How it works

One definition. Live and against history.

The same attribute runs on a streaming engine for now and a batch engine for warehouse history, so what your app reads in production matches what data science trained on.

  1. 01Collect. Add a Snowplow SDK to your application and behavioral events start flowing in.
  2. 02Define. Say what you want to know about the customer, in the console or in code.
  3. 03Serve. An event updates its attributes in <1s, and your app reads them at 6ms p50, on every request.
Signals → your app6ms p50
showing_price_hesitationtrue
categories_viewed_10m3
basket_value184.00
last_search_results0
seconds_on_product_page47
Trigger price_hesitationdelivered to your app
Questions

Before you sign up

Do I need an event stream already?

No. Collection is part of Signals. Add a Snowplow SDK to your web, mobile or server application and events start flowing in, validated against your schemas on the way. If you already run Snowplow, Signals reads the pipeline you have.

Does it replace what I use to rank?

No. Signals does the knowing. Your ranking model, rules engine or CDP keeps doing the acting, with inputs that are seconds old instead of a day old.

Where does it run?

Managed SaaS, or a private deployment in your own AWS or GCP account. Identical architecture either way, so what you evaluate is what you run.

What does the free tier include?

The full product against your own traffic, up to 5 million events a month, with no card and no sales call. You should see an attribute updating against your own traffic in the first session.

Watch an attribute change on your own traffic today.

Add the SDK, define one attribute, then click around your own product and watch it change, the same way the panel at the top of this page changed for you.

The real engine · no card · no sales call
Or hand it to your coding agent
npx plugins add snowplow/skills
Then: Let's add Snowplow Signals to this app. Understand the app first, then define an attribute for price hesitation and read it back before the ranking runs.
Signals, about you
connecting...