Laudspeaker Event Structure

Laudspeaker supports the ingestion of events, and can ingest at a high throughput. Our endpoint https://app.laudspeaker.com/api/events/batch/ accepts events in batches. From as little as one event in a batch. Lets start off with an example you can run and then explain what is happening:

You can adapt the following curl example, by adding your api key (found in settings)

curl --location 'https://app.laudspeaker.com/api/events/batch/' \
--header 'Authorization: Api-Key [your_key_here]' \
--header 'Content-Type: application/json' \
--data '{
    "batch": [
    {
      "timestamp": "2024-03-15T02:31:05.295Z",
      "uuid": "F451DF0A-D713-4076-AE20-41AB1641BC98",
      "event": "purchase",
      "source": "mobile",
      "correlationKey": "_id",
      "payload": {
        "cart": true
      },
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5"
    },
    {
      "timestamp": "2024-03-15T02:31:05.313Z",
      "uuid": "A97E8A44-AAB0-45C6-B68D-3CAD9A0ED0DD",
      "correlationKey": "_id",
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5",
      "source": "mobile",
      "event": "agree_to_marketing",
      "payload": {
        "agreement": true
      }
    },
    {
      "correlationKey": "_id",
      "source": "mobile",
      "uuid": "24291D14-944D-4C7B-B0E4-EC98B8A9DF46",
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5",
      "event": "onboarding_started",
      "payload": {
        "service": "something",
        "campaign": "utm-1234",
        "tap": "open"
      },
      "timestamp": "2024-03-15T02:31:05.333Z"
    },
    {
      "source": "mobile",
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5",
      "event": "onboarding_started",
      "correlationKey": "_id",
      "uuid": "46300C36-EB75-483D-9955-555233CE648C",
      "payload": {
        "service": "MY",
        "user": "utm-234",
        "tap": "main"
      },
      "timestamp": "2024-03-15T02:31:05.353Z"
    },
    {
      "source": "mobile",
      "correlationKey": "_id",
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5",
      "payload": {
        "id": 2,
        "service": "MY"
      },
      "timestamp": "2024-03-15T02:31:05.443Z",
      "uuid": "C3EE7322-CBA2-49C4-B118-87DD86AAA5D0",
      "event": "item_to_cart"
    }
  ]
}'

and you should see the resulting events in the event tracker!

Breaking down the batch of events

A batch consists of an array of events and looks like this:

{
    "batch": [
    {
      "timestamp": "2024-03-15T02:31:05.295Z",
      "uuid": "F451DF0A-D713-4076-AE20-41AB1641BC98",
      "event": "checking_out",
      "source": "custom"
      "correlationKey": "_id",
      "payload": {
        "checkout": true
      },
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5"
    }
  ]
}

Each event in the batch must adhere to the laudspeaker schema, at a minimum each event must contain an event field, correlationKey field, correlationValue field, and a source set to “custom”

Optionally it should also contain a timestamp, and uuid like below:

    {
      "timestamp": "2024-03-15T02:31:05.295Z",
      "uuid": "F451DF0A-D713-4076-AE20-41AB1641BC98",
      "event": "checking_out",
      "source": "custom"
      "correlationKey": "_id",
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5"
    }

To customize your event with data you want to send, you should include a payload object:

    {
      "timestamp": "2024-03-15T02:31:05.295Z",
      "uuid": "F451DF0A-D713-4076-AE20-41AB1641BC98",
      "event": "checking_out",
      "source": "custom"
      "payload": {
        "checkout": true
      },
      "correlationKey": "_id",
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5"
    }

Putting everything together an event batch could look like:

{
    "batch": [
    {
      "timestamp": "2024-03-15T02:31:05.295Z",
      "uuid": "F451DF0A-D713-4076-AE20-41AB1641BC98",
      "event": "checking_out",
      "source": "mobile"
      "correlationKey": "_id",
      "payload": {
        "checkout": true
      },
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5"
    },
    {
      "timestamp": "2024-03-15T02:31:05.313Z",
      "uuid": "A97E8A44-AAB0-45C6-B68D-3CAD9A0ED0DD",
      "correlationKey": "_id",
      "correlationValue": "FBBBCB26-B75E-4342-B40B-568BF879F7C5",
      "source": "mobile",
      "event": "marketing_agreed",
      "payload": {
        "agreed_to_marketing": true
      }
    },
  ]
}

API Endpoint

Our event endpoint is:

https://app.laudspeaker.com/api/events/batch/

Identifying users

We are able to attribute events to the right users by using the correlationValue and correlationKey pair. The correlationKey tells Laudspeaker which unique attribute of a user to use when correlating an event with a user, and for custom events should always be set to the primary key of the user. The primary key of your users is set up under the audience tab: