Webhook Sources

Receive device data by having your IoT platform POST JSON messages to a PEEK webhook URL.

How Webhook Sources Work

When you create a webhook source, PEEK generates a unique URL containing a secret token. Your devices or IoT platform send HTTP POST requests to this URL with a JSON payload. PEEK processes each message, discovers devices, and tracks schemas just like it does for MQTT.

Adding a Webhook Source

Navigate to Sources in the dashboard, click Add Source, and select Webhook. PEEK will generate your ingest URL:

https://peekiot.com/ingest/d99437dd-444f-4d6b-8f66-82604457e4b4
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                          Your unique webhook secret
Warning
Keep your webhook URL private. Anyone with the URL can send data to your fleet. If you suspect the URL has been compromised, delete the source and create a new one.

Sending Data

Send a POST request with a JSON body. The payload must include a device identifier. PEEK checks for these fields (in order of priority):

  1. deviceId
  2. device_id
  3. thingName (AWS IoT convention)
  4. deviceName (Azure IoT Hub convention)

Example Payload

{
  "deviceId": "sensor-001",
  "messageType": "telemetry",
  "temperature": 22.5,
  "humidity": 48,
  "battery": 87
}

Example cURL

curl -X POST https://peekiot.com/ingest/YOUR_SECRET \
  -H "Content-Type: application/json" \
  -d '{"deviceId":"sensor-001","temperature":22.5}'

Supported Platforms

Webhook sources work with any system that can send HTTP POST requests. Common integrations:

  • AWS IoT Core — use an IoT Rule action to forward messages to the PEEK URL
  • Azure IoT Hub — route messages via an Azure Function or Logic App
  • The Things Network — add a Webhook integration in your TTN application
  • Custom firmware — have devices POST directly if they have HTTP capability

Performance

Webhook ingestion uses an async worker pool to handle burst traffic. Messages are validated and queued immediately, then processed in the background. The queue can absorb bursts of up to 10,000 messages.