Adding an Identifier

To build your identity graph, you should take every opportunity where the user identifies itself to create a link between the device and the identifier.

This will make identity stitching and aggregating behavioral event data for a given user significantly easier.

The identifier id property is unique per Identifier node and defined by the fields listed below:

  • FingerprintJS visitorId
  • Cookies if Available: (_gaexp, cart, ajs_user_id, ajs_anonymous_id)
  • Snowplow Cookies: domain_user, network_userid,
  • Snowplow user_id

But you can also add your own, by sending a self describing event to your Snowplow collector.

For example, a user on a website is prompted to input an e-mail or phone number; these are strong identifiers you can later use to join with backend data. As the user inputs the e-mail or phone, you can trigger an event that will associate that information with the device they are currently using.

  <input type="text" id="email" name="email" onblur="addIdentifier()" />

  // Function to trigger a Snowplow event with the identifier
  function addIdentifier() {
    // Consider hashing the identifier
    var email = document.getElementById("email").value;
    // Snowplow JS Tracker V3.x
    // Fire a self describing event adding an identifier
    snowplow("trackSelfDescribingEvent", {
      event: {
        schema: "iglu:com.snowcatcloud.iceberg/identifier/jsonschema/1-0-0",
        data: {
          id: email, // IDENTIFIER
          name: "email", // NAME
          source: "contact.form", // SOURCE


  • IDENTIFIER is a string with the actual identifier (e.g. hashed email, phone number, etc.)
  • NAME is a string with the name of the identifier (e.g. email, phone, etc.)
  • SOURCE is a string with identifying the source of the identifier (e.g. salesforce, website)