Self-describing event (Unstructured)

Hi everyone!

I have several questions and troubles with Self-describing event (Unstructured events) using Java Script tracker.


  1. We have subdomain where schema exists
  2. Im using GTM to initialize tracker
  3. We are using Scala Collector


My tracker looks like:

snowplow('trackSelfDescribingEvent', {
	schema: 'iglu:ru.napolke.sp/schemas/ru.napolke.sp/main_test/jsonschema/1-0-0'
    data: {
        name: 'test',
		price: '100',

link on shema:


  "$schema": "",
  "description": "Napolke snowplow autogenerated schema",
  "self": {
    "vendor": "ru.napolke.sp",
    "name": "main_test",
    "format": "jsonschema",
    "version": "1-0-0"
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 500
    "price": {
      "type": "number"
  "additionalProperties": false,
  "required": [

Do we need to write link on schema like: 'iglu:ru.napolke.sp/schemas/ru.napolke.sp/main_test/jsonschema/1-0-0'
'' ?

  1. Does SnowPlow Debugger works correctly?
    I found that there 2 schemas and i don’t understand why

Can i just place schema on website and not making repos?

Actually i don’t understand:

  1. Syntax
  2. Where should i place schema
  3. How should i validate it

Thanks for help!

Hi @rodion_zhukov,

Do we need to write link on schema like: 'iglu:ru.napolke.sp/schemas/ru.napolke.sp/main_test/jsonschema/1-0-0' or '' ?

Neither of these is correct. You need to use iglu:ru.napolke.sp/main_test/jsonschema/1-0-0. You’re not specifying HTTP URI, but Iglu URI. Iglu Client in Stream/Spark Enrich will fetch it based on your resolver configuration. Collector knows nothing about your schemas.

Sorry I never used Snowplow Debugger, but it seems it just tells you that your format of Iglu URI is invalid.


JS syntax is fine.

Where should I place schema

Current placement also looks okay.

How should i validate it

I think what you’re missing is enrich and loader step. If you installed just a collector - you cannot do much, it just collects data, doesn’t validate nor transoform into canonical format. There’s a recent thread explaining how to install those components.