Skip to main content

Send events via Snowplow CLI

The events subcommand of Snowplow CLI sends events to a Snowplow Collector from the command line. Use it to embed Snowplow tracking into your shell scripts and terminal sessions, or to send a quick test event while validating a pipeline.

Each event is sent as an individual payload, and the command exits once the Collector has responded.

Prerequisites

You need Snowplow CLI installed. Sending events does not require Console credentials, so you can skip the configuration step if you only use the events subcommand.

Send an event

The events send command sends a single self-describing event to your Collector. You can either pass a complete self-describing JSON, or pass a schema URI and its data separately and let the CLI assemble the event for you.

The only required flag is --collector, the domain of your Snowplow Collector. The examples below use the built-in com.snowplowanalytics.snowplow/custom_event schema, so they produce a valid event as long as you point --collector at a real Collector.

Send a self-describing JSON

Pass a complete self-describing JSON with --sdjson:

bash
snowplow-cli events send \
--collector collector.example.com \
--sdjson '{"schema":"iglu:com.snowplowanalytics.snowplow/custom_event/jsonschema/1-0-0","data":{"category":"test","action":"click"}}'

Send a schema and data separately

Pass the schema URI with --schema and a plain (non-self-describing) JSON payload with --json. The CLI combines them into a self-describing event:

bash
snowplow-cli events send \
--collector collector.example.com \
--schema iglu:com.snowplowanalytics.snowplow/custom_event/jsonschema/1-0-0 \
--json '{"category":"test","action":"click"}'

Attach entities

Attach entities with --entities, passing a JSON array of self-describing JSON objects:

bash
snowplow-cli events send \
--collector collector.example.com \
--sdjson '{"schema":"iglu:com.snowplowanalytics.snowplow/custom_event/jsonschema/1-0-0","data":{"category":"test","action":"click"}}' \
--entities '[{"schema":"iglu:com.snowplowanalytics.snowplow/web_page/jsonschema/1-0-0","data":{"id":"550e8400-e29b-41d4-a716-446655440000"}}]'

Command options

Set the application ID with --app-id, the HTTP method with --method (defaults to POST), and the protocol with --protocol (defaults to https). For the full list of flags, see the events send command reference.

Migrate from the Snowplow Tracking CLI

The standalone Snowplow Tracking CLI (snowplow-tracking-cli) has been merged into Snowplow CLI as the events send command. The old tool is deprecated and its repository will be archived. Migrate any scripts that use snowplow-tracking-cli to snowplow-cli events send.

The flags are largely the same, with a few renames and one changed default:

Snowplow Tracking CLISnowplow CLI events sendNotes
--collector--collectorUnchanged, required
--appid--app-idRenamed; defaults to snowplowcli
--method--methodDefault changed from GET to POST
--protocol--protocolUnchanged, defaults to https
--sdjson--sdjsonUnchanged
--schema--schemaUnchanged
--json--jsonUnchanged
--ipaddress--ip-addressRenamed
--contexts--entitiesRenamed

For example, this Snowplow Tracking CLI command:

bash
snowplow-tracking-cli --collector collector.example.com --appid myappid --method POST --sdjson '{"schema":"iglu:com.snowplowanalytics.snowplow/custom_event/jsonschema/1-0-0","data":{"category":"test","action":"click"}}'

becomes:

bash
snowplow-cli events send --collector collector.example.com --app-id myappid --sdjson '{"schema":"iglu:com.snowplowanalytics.snowplow/custom_event/jsonschema/1-0-0","data":{"category":"test","action":"click"}}'