🎉 Using or considering OpenSnowcat? We want to hear from you! Our repos are feeling lonely – give them a ⭐ star !
Collector

Amplitude SDK Compatibility

Use Amplitude SDKs with the OpenSnowcat Collector to ingest event data without reimplementation.

OpenSnowcat Collector includes an experimental Amplitude Bridge that allows you to use Amplitude SDKs to collect event data with no reimplementation needed.

Amplitude SDK Configuration

To send events to your OpenSnowcat Collector using the Amplitude SDK, you'll need to add the serverUrl configuration to your Amplitude SDK as shown below.

Amplitude JS SDK snippet
window.amplitude.init('<< YOUR KEY >>', {
      serverUrl: '<< OPENSNOWCAT COLLECTOR FQDN >>/com.amplitude/2/httpapi'
  });

The OpenSnowcat Collector can receive events from Amplitude SDKs through httpapi or batch.

How Does It Work?

Amplitude SDKs send events to the OpenSnowcat Collector, which wraps the payload in a com.amplitude/payload self-describing event.

OpenSnowcat Configuration

1. Enable Amplitude Bridge

To enable the Amplitude Bridge in OpenSnowcat Collector, add the following to your Collector configuration.

Collector config
collector {
...
    experimental {
        enableAmplitudeBridge = true
    }
...
}

To enhance data quality, you can enable CORS by adding a crossDomain section to your Collector configuration as shown below. If your Collector is called from outside these domains, the browser will block the request before it reaches the Collector.

Collector config, with CORS protection
collector {
...
    crossDomain {
        enabled = true
        domains = [ "*.yourdomain.com" ]
        # Whether to only grant access to HTTPS or both HTTPS and HTTP sources
        secure = false 
    }
...
}

2. Install Amplitude Schema

Install the Amplitude Payload schema in your Schema Registry so that the Enricher can validate incoming Amplitude events.

Amplitude payload Schema 1-0-0
{
  "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#",
  "description": "Amplitude Payload",
  "self": {
    "vendor": "com.amplitude",
    "name": "payload",
    "format": "jsonschema",
    "version": "1-0-0"
  },
  "type": "object",
  "properties": {
    "data": {
      "description": "Amplitude Payload",
      "type": "object"
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": true
}

Sample Amplitude OpenSnowcat Payload

Below is an event as recorded by OpenSnowcat Devkit with the Amplitude Bridge enabled.

OpenSnowcat partial event
  {
    "app_id": "amp_bridge",
    "collector_tstamp": "2026-01-28T03:00:41.039Z",
    "contexts_nl_basjes_yauaa_context_1": [
        {
            "agentClass": "Browser",
            "agentInformationEmail": "Unknown",
            "agentName": "Chrome",
            "agentNameVersion": "Chrome 144",
            "agentNameVersionMajor": "Chrome 144",
            "agentVersion": "144",
            "agentVersionMajor": "144",
            "deviceBrand": "Apple",
            "deviceClass": "Desktop",
            "deviceCpu": "Intel",
            "deviceCpuBits": "64",
            "deviceName": "Apple Macintosh",
            "layoutEngineClass": "Browser",
            "layoutEngineName": "Blink",
            "layoutEngineNameVersion": "Blink 144",
            "layoutEngineNameVersionMajor": "Blink 144",
            "layoutEngineVersion": "144",
            "layoutEngineVersionMajor": "144",
            "networkType": "Unknown",
            "operatingSystemClass": "Desktop",
            "operatingSystemName": "Mac OS",
            "operatingSystemNameVersion": "Mac OS >=10.15.7",
            "operatingSystemNameVersionMajor": "Mac OS >=10.15",
            "operatingSystemVersion": ">=10.15.7",
            "operatingSystemVersionBuild": "??",
            "operatingSystemVersionMajor": ">=10.15",
            "webviewAppName": "Unknown",
            "webviewAppNameVersionMajor": "Unknown ??",
            "webviewAppVersion": "??",
            "webviewAppVersionMajor": "??"
        }
    ],
    "contexts_org_ietf_http_header_1": [
        {
            "name": "Host",
            "value": "localhost:8080"
        },
        {
            "name": "User-Agent",
            "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"
        },
        {
            "name": "Origin",
            "value": "https://f7e22789919b.ngrok-free.app"
        }
    ],
    "derived_tstamp": "2026-01-28T03:00:41.039Z",
    "domain_userid": "201bace5-8c19-490d-9b66-d6680b2ec6fa",
    "dvce_created_tstamp": "2026-01-28T03:00:39.896Z",
    "etl_tstamp": "2026-01-28T03:00:43.122Z",
    "event": "unstruct",
    "event_fingerprint": "d88820a9c9fdd858926634b783f47809",
    "event_format": "jsonschema",
    "event_id": "5b90bd48-64e5-42fa-bdd2-3cd8c73010c7",
    "event_name": "payload",
    "event_vendor": "com.amplitude",
    "event_version": "1-0-0",
    "network_userid": "4fe0b108-1e02-4b74-af46-0782718c5742",
    "platform": "web",
    "unstruct_event_com_amplitude_payload_1": {
        "data": {
            "device_id": "201bace5-8c19-490d-9b66-d6680b2ec6fa",
            "event_id": 37,
            "event_properties": {
                "[Amplitude] Page Domain": "f7e22789919b.ngrok-free.app",
                "[Amplitude] Page Location": "https://f7e22789919b.ngrok-free.app/",
                "[Amplitude] Page Path": "/",
                "[Amplitude] Page Title": "Amplitude Event Tracking Demo",
                "[Amplitude] Page URL": "https://f7e22789919b.ngrok-free.app/",
                "[Amplitude] Previous Page Location": "",
                "[Amplitude] Previous Page Type": "direct"
            },
            "event_type": "Sign Up",
            "insert_id": "1e08ca17-eb57-4664-b74c-bd83252f5b4c",
            "ip": "172.18.0.1",
            "language": "en-US",
            "library": "amplitude-ts-script/2.34.0",
            "platform": "Web",
            "session_id": 1769567701407,
            "time": 1769569239896,
            "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
            "user_id": "demo_user_1897"
        }
    },
    "user_id": "demo_user_1897",
    "user_ipaddress": "172.18.0.1",
    "useragent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36",
    "v_collector": "osc-1.1.7-6-95fc4028-20260127-1858-kafka",
    "v_etl": "opensnowcat-enrich-kafka-1.2.7",
    "v_tracker": "amplitude-ts-script/2.34.0"
}