---
title: "Memory for customer-facing agents | Snowplow Signals"
description: "Your agent cannot see what the customer just did. Signals hands it their recent activity as JSON or narrative, current as of this session."
source: https://signals.snowplow.io/lp/agent-memory
---

Context for AI agents

# Give your agent perception of the customer.

Signals turns what this customer has been doing into something a model can read, as JSON for a tool call or a short narrative for the prompt, in 6ms.

* **6ms** p50 serve, in-region
* **2** shapes, JSON or narrative
* **Free** tier, no card

## Start free

5M events a month · unlimited attributes · no card 

Work email Continue

A work address, please. We cannot provision on a personal domain.

Or [talk to an engineer](https://signals.snowplow.io/start?intent=engineer&lp=agent-memory).

The agent below is reading your session. It will speak up to five times on its own, then wait for you. 

### Signals returns this 

connecting 

Waiting for the first read of your session.

t+s event event\_context 

waiting for your first event…

attributes · 0 from signals\_site\_session getServiceAttributes · show 

The same JSON your agent receives, by API request or through the MCP server.

### Your agent uses it

Signals on 

The agent is reading your session. It will speak first, on its own.

Send

Why it starts from nothing

## The model is good. It cannot see what happened three minutes ago. 

Before 

### A profile written overnight

The agent opens with the conversation and a record from last night. Everything the customer did in the last ten minutes is missing from it.

`last_seen = yesterday` 

With Signals 

### Recent activity, shaped for a model

The same events your application already sends become a compact context, structured for a tool call or written out for a system prompt.

`minutes_on_checkout = 4` 

Result 

### The first reply already knows

The agent answers the question the customer actually has, rather than asking them to describe what your own product just watched them do.

`one call, before the reply` 

Why perception

## What a customer-facing agent can do once it can see the session. 

None of this works from a profile computed overnight. By the time the batch lands, the conversation is over.

### Stop asking what already happened

Three failed searches, four minutes on the checkout page, a basket that has not moved: the agent opens holding all of it, so the first three questions never get asked.

`handle time · first contact resolution` 

### Escalate on behavior, not on sentiment

A rule over live attributes hands the conversation to a human the moment the pattern says it is going badly, rather than after the customer says so.

`escalation rate · satisfaction score` 

### Answer from what they were looking at

A shopping agent that knows which two jackets were compared and which size guide was opened can answer the real question instead of a generic one.

`assisted conversion · basket value` 

### Smaller prompts, fewer tokens

A short context computed from the stream beats stuffing raw history into the prompt, which costs tokens on every turn and still misses the moment.

`tokens per conversation` 

How it works

## The same events, shaped so a model can use them. 

Nothing extra to instrument. Agentic context is the activity you already collect, rendered as JSON for a tool call or as a narrative for a system prompt.

1. 01 **Collect.** Add a Snowplow SDK to your application and behavioral events start flowing in.
2. 02 **Shape.** Choose what the agent should know about, and whether it arrives as JSON or as a narrative.
3. 03 **Read.** What the customer just did is in the context <1s later, and the agent asks for it in 6ms p50, from your framework, the REST API or the MCP server.

Signals → your app 6ms p50 

minutes\_on\_current\_page 4 

failed\_searches\_session 3 

items\_compared 2 

basket\_value 184.00 

recent\_activity last 30 events 

Trigger escalate\_to\_human delivered to your agent 

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.

### Which agent frameworks does this work with?

Any of them. Ask through the Python or Node.js SDK, the REST API, or the MCP server, as one tool call. Signals supplies what the customer has been doing; your model decides what to do with it.

### Is this a vector store?

No, and it holds neither your documents nor your conversation history. What it remembers is behavior: it computes what the customer has been doing from their own events and hands that over as context, alongside whatever you already use for recall.

### 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. On a private deployment the activity Signals computes stays in your own cloud; what your agent then sends to a model is your call either way.

### 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.

## Hand your own agent the last five minutes today.

Add the SDK, define one attribute, then ask for a customer's context from the agent you already run. The panel at the top of this page is the same thing, reading you.

[Start free](https://signals.snowplow.io/start?lp=agent-memory) [Talk to an engineer](https://signals.snowplow.io/start?intent=engineer&lp=agent-memory) 

The real engine · no card · no sales call 

Or hand it to your coding agent 

$ `npx plugins add snowplow/skills` Copy Copied 

Then: Let's add Snowplow Signals to this agent. Understand the app first, then fetch the customer's recent activity as narrative and put it in the system prompt before the first reply.
