Skip to main content

For AI agents: a Markdown version of this page is at https://docs.snowplow.io/docs/signals/data-sources/events.md. The index of all documentation pages is at https://docs.snowplow.io/llms.txt, and the index for this section is at https://docs.snowplow.io/docs/signals/llms.txt.

Send events to Signals

Signals calculates stream attributes from Snowplow events. On the free tier, event collection is included, so you add a Snowplow tracker to your application and point it at your Collector endpoint. If you already run Snowplow, Signals reads the events from your existing pipeline, and you don't need to change your tracking.

Signals free tier and Snowplow CDI

New to Snowplow: the Signals free tier is a hosted environment, with event collection included, capped at 5 million events a month, with no end date or credit card. Snowplow runs it on AWS, in the US or the EU depending on the region you sign up from.

Already run Snowplow CDI: Signals reads events from your existing pipeline, and is deployed in the AWS region you choose. See Set up Signals.

Use events as the data source when you need attributes that update in real time, such as the number of products a user viewed in the last ten minutes. To bring in pre-calculated values such as CRM or transactional data, sync warehouse tables instead. Choose a data source compares the options.

Before you begin​

You need a Signals environment. If you don't have one yet, set up Signals first. Then:

  • On the free tier: have your Collector endpoint and Signals API URL ready. Find the Collector URL in Console > Pipelines > select your pipeline > Configuration > Collector Domains, and the Signals API URL in Console > Signals > Overview.
  • With an existing Snowplow pipeline: nothing changes, because your trackers already send to your Collector.

On either path, these are the only additions Signals needs:

  • Set user_id in your tracker if you want attributes per logged-in user.
  • Add the Signals browser plugin if a web application receives interventions.
  • Check that your events carry the identifiers your attribute keys need.

Add tracking for Signals​

Follow these steps to add tracking, send the identifiers Signals needs, and check that events arrive.

Add a tracker to your application​

Each Snowplow tracker sends events to the Collector, and the Signals streaming engine inspects every event as it arrives. Choose the tracker for the platform that generates the behavior you want to calculate attributes from:

PlatformTrackerStart here
Website or single-page appJavaScript trackerWeb tracker quick start
iOS or Android appNative mobile trackersMobile trackers
Node.js backendNode.js trackerNode.js tracker
Python backendPython trackerPython tracker
Any other platformAll trackers

Built-in events such as page views, page pings, and screen views work without extra setup. For behavior that the built-in events don't cover, track self-describing events and attach entities, then define attributes on their properties.

To have a coding agent add the tracking for you, follow the Signals quickstart with your coding agent.

Send the identifiers your attribute keys use​

Signals calculates each attribute per attribute key, such as a user or a session. The built-in attribute keys read the atomic user fields that the trackers set on every event:

  • domain_userid and domain_sessionid: set automatically by the JavaScript tracker
  • network_userid: set by the Collector cookie
  • user_id: set by your application after the user logs in

If you want attributes per logged-in user, set the user ID in your tracker when the user logs in.

Check that events arrive​

Signals only calculates attributes from events received after you publish the attribute group, unless you enable backfill. To check your tracking:

  1. Open your application and generate a few events.
  2. Check your browser's network tab for tracking requests to the Collector endpoint. If an ad blocker stops them, see cookies and ad blockers.
  3. Inspect the events with the Snowplow Inspector browser extension to confirm they include the identifiers your attribute keys need.
  4. Retrieve the attributes to confirm Signals is calculating them.

Was this page helpful?