1. Home
  2. Docs
  3. Snowplow Open Source Quick Start
  4. Quick Start Installation Guide on AWS
  5. Further exploring your pipeline

Further exploring your pipeline

In this section, you will add tracking to your own application, create your custom schema on your Iglu registry and track the custom event, and enable an enrichment. By the end, you will have a clear picture of how flexible and robust the Snowplow pipeline is.

Step 1: Add tracking to your own application

  • Learn how to add the Javascript tracker to your application and also how to self host itSet up your SSL certificate so that your collector can receive HTTPS traffic on a domain you already own
    • You can create your SSL certificate using Amazon Certificate Manager Once you have done that you will need to add the SSL certificate as an input variable for your Collector load balancer (ssl_certificate_arn) and run terraform apply
  • Step 2: Create a schema & track a custom event

    You can track a large number of standard web events out-of-the-box with Snowplow. For example, with the Javascript tracker:

    It is often the case that you need to track & collect events that better reflect your business. In this step, you will define your custom event by creating a schema for it and uploading it to Iglu, your schema repository, and then start tracking it. 


    Learn why schemas are a powerful feature of Snowplow, and about the anatomy of a schema here.

    • First create the schema for the event
      • You can create / edit this schema to better suit your needs, but for the purposes of this tutorial we will keep it as-is
    { "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#", "description": "Schema for a button click event", "self": { "vendor": "com.snowplowanalytics", "name": "button_click", "format": "jsonschema", "version": "1-0-0" }, "type": "object", "properties": { "id": { "type": "string" "minLength": 1 }, "target": { "type": "string" }, "content": { "type": "string" } }, "required": ["id"], "additionalProperties": false }
    Code language: JSON / JSON with Comments (json)
    • You should save this schema in the following folder structure, with a filename of 1-0-0:
      • /schemas/com.snowplowanalytics/button_click/jsonschema/1-0-0
      • Note: If you update the vendor string in the example, you should update the above path too.
    • Upload your schema to your Iglu registry that you created when setting up your pipeline
      • Download the latest igluctl if you haven’t already
      • To upload your schemas on localhost to the Iglu Server, use the following command:
        • igluctl static push --public <local path to schemas/> <Iglu server endpoint> <iglu_super_api_key>
        • You can find more information on the Igluctl docs page
    • To send an event using this schema you’ll want to track a Self Describing Event. Here is an example of how to do so with the JavaScript Tracker:
    snowplow('trackSelfDescribingEvent', { event: { schema: 'iglu:com.snowplowanalytics/button_click/jsonschema/1-0-0', data: { id: 'purchase-button-1', target: '/checkout', content: 'Purchase Now' } } });
    Code language: JavaScript (javascript)

    Once you’ve sent this event at least once, you can take a look at this event in Postgres. You’ll find the core event properties in atomic.events and the event specific properties in atomic.com_snowplowanalytics_button_click_1. You can join to atomic.events using root_id = event_id.


    See our list of tutorials on how you can use & query your data for specific use cases such as web analytics, content analytics, and more.

    Step 3: Enable an enrichment 

    For the purposes of this exercise, we will enable the IP anonymisation enrichment but you can enable and disable the full suite of enrichments in a similar manner. Note that the IAB and IP Lookups enrichments require a 3rd party database to function. 

    • Find details on enabling the IP anonymisation enrichment, updating the anonOctets and anonSegments according to the number of octets/ segments that you would like to be anonymised
    • Then run terraform apply
    • Now when you send an event to your pipeline and query that event in Postgres you will notice that the user_ipaddress has been anonymised