Add tutorial: Signals + Google Gemini Enterprise for CX (CX Agent Studio)

Open
#2,014 1 comment 0 reactions 1 assignee View on GitHub

Maintainers usually reply within 1 day

@jrpeck1989 is already working on this.

Since Nov 5, 2026.

Assessment

This issue has not been assessed yet.

Description

Summary

We have a public reference integration between Snowplow Signals and Google’s CX Agent Studio, but nothing on docs.snowplow.io points to it. The ADK accelerator is documented at /tutorials/signals-google-adk-agent/; the Agent Studio build lives only at github.com/snowplow-industry-solutions/signals-google-cx-agent-studio.

This is valuable commercially. Google Cloud sellers and their retail customers build on Agent Studio (no-code, console-configured), not ADK. It is the build cited in the Google co-sell battlecard and the one we will be asked for in every Gemini Enterprise for CX conversation.

Requested

A tutorial in the Solution accelerator series, use case “Customer-facing AI agents”, parallel in shape to the ADK one, covering:

  • What the integration does: agentic personalisation (agent reads Signals attributes plus the agentic context narrative for the shopper’s domain_sessionid) and agentic analytics (the agent’s tool calls, intents and decisions tracked back into the pipeline).
  • Architecture, including why there is a customer-hosted tool endpoint between Agent Studio and Signals (Signals API uses a bearer JWT obtained by token exchange; Agent Studio OpenAPI auth supports service agent, service account, OAuth or static API key; one operation per OpenAPI tool).
  • Step by step: publish the Signals config, deploy the tool endpoint (show Cloud Run as the primary option, Vercel as the repo default), import get-user-context.openapi.yaml, configure API-key auth via Secret Manager, declare the snowplow_session_id / snowplow_user_id / snowplow_turn_id agent variables and the x-ces-session-context bindings, verify in the simulator, embed ces-messenger with setQueryParameters.
  • The degraded-session behaviour (unknown or cookieless visitor) and why the session id must come from a bound variable, not $context.session_id and not the model.
  • Optional sections: the self-tracking toolset and the BigQuery queries in analytics/; the Terraform for google_ces_* resources.
  • A clear “not production-hardened” note matching the repo’s SECURITY.md.
Also worth settling in the same piece of work

Whether Agent Studio’s MCP tools can call the Signals MCP server directly (streamable HTTP, X-API-Key-Id and X-API-Key headers) and drop the proxy. Open questions: Agent Studio API-key auth carries one header, Signals needs two; and the session id would have to reach the agent via instructions rather than a bound parameter. If it works, document it as the simpler path. If not, say so, because the battlecard currently implies it.
Cross-link from the ADK tutorial and from the Signals MCP server page.

Source material

Repo: snowplow-industry-solutions/signals-google-cx-agent-studio (README, docs/setup-cx-agent-studio.md, agent/README.md)
Blog: “A concierge that already knows you”, signals.snowplow.io
Google docs: CX Agent Studio OpenAPI tools, MCP tools

Dominant language
JavaScript
Stars
10
Forks
9
Avg merge
1d 19h
Merged PRs (30d)
36

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from snowplow/documentation

All issues in snowplow/documentation

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.