Skip to main content

For AI agents: a Markdown version of this page is at https://docs.snowplow.io/docs/signals/publish.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.

Publish and manage Signals configuration

Signals only acts on configuration that you've published. Until you publish an attribute group, Signals doesn't calculate its attributes, and until you publish an intervention, Signals doesn't check its criteria. This page explains the lifecycle that every Signals resource follows, how the resources depend on each other, and how to check a change after you publish it.

The steps are the same in Snowplow Console and the Signals Python SDK. In Console you use the Publish, Edit, Unpublish, and Delete actions on a resource's details page. With the SDK you call publish(), unpublish(), and delete().

Understand the publishing lifecycle​

Attribute groups and interventions move through these stages:

  1. Draft: in Console, a new resource is saved as a draft. You can edit it freely, and Signals ignores it.
  2. Test: preview the result before it goes live. For attribute groups, test the attribute definitions against recent events in your warehouse. For interventions, run a preview.
  3. Publish: send the configuration to your Signals infrastructure. Signals starts calculating attributes, syncing warehouse tables, or checking intervention criteria from this point. Stream attributes only include earlier events if you configured a backfill.
  4. Update: editing a published resource creates a new version and leaves the published version unchanged. In Console the version number increments automatically. With the SDK, increment version yourself.
  5. Unpublish: stop one version without losing its definition. Calculated values stay in the Profiles Store, and you can publish the version again later.
  6. Delete: permanently remove every version. Deleting an attribute group also removes its values from the Profiles Store. Unpublish an attribute group before you delete it.

How each resource is published​

Not every resource uses the full lifecycle. This table shows the differences.

ResourceDraftsVersionedHow it's published
Attribute groupsYesYesPublish in Console, or publish()
InterventionsYesYesPublish in Console, or publish()
ServicesNoNoAutomatically, as soon as you create the service
Agentic contextsYesNoPublishing a draft replaces the single published agentic context with that name
Direct interventionsNoNoSent as soon as you push them with the Python SDK or API

Dependencies between resources​

Resources refer to each other, so a change to one can affect another:

  • A service pins specific attribute group versions. To move an application to a new version of an attribute group, update the service definition. The application code doesn't change.
  • Before you unpublish or delete an attribute group version that a service uses, update the service so it no longer refers to that version.
  • Unpublishing or deleting an attribute group version that a published intervention uses also unpublishes the intervention.
  • Intervention criteria always use the latest published version of the attribute group that contains each attribute. Publishing a new attribute group version that drops an attribute doesn't break the intervention: Signals keeps using the latest version that still has it.

Use Signals with more than one pipeline​

Each pipeline has its own Signals deployment. If you run separate pipelines, for example for development and production, each has its own attribute groups, services, and interventions. Signals doesn't copy or migrate configuration between deployments: to use the same configuration in another deployment, define and publish it there. Defining your configuration in code with the Signals Python SDK lets you publish the same definitions to each deployment.

Check a change after you publish​

After you publish, confirm that Signals is doing what you expect:

  • For a stream attribute group with backfill, the attribute group's details page in Console shows a Backfill in progress status bar until the historical values have synced
  • Retrieve the attributes for a known attribute key ID, such as your own domain_sessionid, and check the values
  • For an intervention, send a test intervention from Console to check that your subscribed application receives and handles it

Was this page helpful?