Skip to main content

Webhooks

The Shoplogix IMS platform offers two distinct webhook systems. Choose the one that matches what you want to receive.

SystemWhat Gets DeliveredAPI Endpoint
Event WebhooksMachine alarm state changes, steam trap condition changes/v2020-07/webhooks
Data Streaming WebhooksRaw sensor readings, gateway status messages/ds/v1/webhooks

Event Webhooks

Event webhooks fire when high-level equipment state changes occur — a machine enters alarm or a trap's condition changes. These are the best choice for alerting and CMMS work order automation.

Supported Event Types

EventTrigger
Machine alarm state changeA machine's alarm state transitions (e.g., Good → Alarm)
Steam trap state changeA trap's condition changes (e.g., Good → Unexpected Cold)

Registering an Event Webhook

  1. In Shoplogix IMS, go to the Webhooks section (requires the Developer role)
  2. Provide your endpoint URL and choose the event types you want to receive
  3. Save — you'll receive a signing secret

Or manage via the REST API at /v2020-07/webhooks.

Verifying Payloads

Every event webhook request is signed with HMAC-SHA256. The signature follows the draft-cavage-http-signatures-12 standard.

Signed headers included in every request:

  • (request-target)
  • date
  • digest
  • host
  • content-length

To verify a request:

  1. Extract the Signature header
  2. Reconstruct the signing string from the listed headers
  3. Compute HMAC-SHA256 using your signing secret
  4. Compare against the signature in the header

Request Headers

HeaderValue
everactive-event-typemachine-alarm-state-change-event or trap-state-change-event
content-typeapplication/json
dateRFC 7231 date (used in signature verification)
digestSHA-256 digest of the request body (used in signature verification)

Example Payloads

Machine Alarm State Change

{
"eventId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"eventTimestamp": 1699841520,
"equipmentName": "Pump #4",
"facility": "Plant 1",
"location": "Building A",
"machineStartAlarmState": "Good",
"machineEndAlarmState": "Alarm",
"machineId": "a1b2c3d4-0000-0000-0000-ef1234567890",
"machineDetailUrl": "https://api.data.everactive.com/v2020-07/machines/a1b2c3d4-0000-0000-0000-ef1234567890",
"machineInsightsUrl": "https://ims.shoplogix.com/machines/a1b2c3d4-0000-0000-0000-ef1234567890",
"machineType": "pump",
"sensorMacAddress": "AA:BB:CC:DD:EE:FF",
"description": "Detected Machine State Change on Pump #4 from Good to Alarm"
}

Possible machineStartAlarmState / machineEndAlarmState values:

ValueMeaning
GoodBelow all configured vibration thresholds
AlarmAbove one or more configured thresholds
AcknowledgedAlarm has been acknowledged by a user in Insights

Steam Trap State Change

{
"eventId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"eventTimestamp": 1699798320,
"facility": "Plant 1",
"location": "Building C — Line 3",
"sensorMacAddress": "AA:BB:CC:DD:EE:FF",
"serviceTag": "ST-142",
"trapStartState": "Good",
"trapEndState": "Unexpected Cold Condition",
"trapID": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"trapDetailUrl": "https://api.data.everactive.com/v2020-07/steam-traps/c3d4e5f6-a7b8-9012-cdef-123456789012",
"trapInsightsUrl": "https://ims.shoplogix.com/steam-traps/c3d4e5f6-a7b8-9012-cdef-123456789012"
}

Possible trapStartState / trapEndState values:

ValueMeaning
GoodTrap is operating normally
BlowthroughTrap has failed open — passing steam continuously
Intermittent Blowthrough - LightLow-frequency, low-volume intermittent blowthrough
Intermittent Blowthrough - MediumModerate intermittent blowthrough
Intermittent Blowthrough - HeavyHigh-frequency, high-volume intermittent blowthrough
Leaking ByPartial failure — some steam passing when trap should be closed
Unexpected Cold ConditionSteam stopped unexpectedly during an operational period
note

eventTimestamp is a Unix timestamp (seconds since epoch). Both payloads may include an integrationInfo object when the asset is linked to a partner integration (e.g., Armstrong SAGE).

Delivery Guarantees

  • Automatic retry — failed deliveries are retried with backoff
  • Dead-letter queue — persistently failed deliveries are captured for review; contact your account team if you suspect missed events
  • Delivery logs — receipts are retained for audit purposes

Data Streaming Webhooks (Data Services v1)

Data Services streaming webhooks push raw sensor readings and gateway status messages to your HTTP endpoint as they arrive — typically every ~60 seconds per sensor. This is the best choice for feeding sensor data into a custom pipeline, data historian, or OT platform that can accept HTTP but cannot use MQTT.

Supported Event Types

Event TypeWhat Gets Delivered
sensor_readingRaw sensor readings from Eversensors (temperature, vibration, etc.)
gateway_statusGateway connectivity and health status messages

Registering a Data Streaming Webhook

Manage streaming webhook subscriptions via the REST API at /ds/v1/webhooks (requires the Developer role).

Each subscription includes:

FieldRequiredDescription
callbackUrlYesYour HTTPS endpoint that will receive the data
eventTypeYessensor_reading or gateway_status
customerIdYesThe customer account whose data to stream
enabledYestrue to activate the subscription
headersNoCustom key/value headers to include in each request (e.g., an API key your endpoint requires)
errorHandlingNoRetry configuration (see below)

Retry Configuration

The errorHandling object lets you tune delivery retry behavior:

FieldDescription
retryDelayInitial delay (ms) before the first retry
retryBackoffMultiplier applied to delay on each subsequent retry
maxRetriesMaximum number of delivery attempts before giving up
requestTimeoutTimeout (ms) for each HTTP request to your endpoint

If all retries are exhausted, the message is routed to a dead-letter queue. Contact your account team if you suspect delivery failures.

Endpoint Requirements

For both webhook types, your endpoint must:

  • Accept POST requests
  • Return a 2xx status code within the request timeout to acknowledge receipt
  • Be accessible from the public internet (or reachable via your network configuration)

If your endpoint is behind a firewall, contact your account team for the list of Shoplogix source IP ranges to allowlist.


Choosing Between Webhooks and Other Integrations

Use CaseBest Path
Alert your team when a machine goes into alarmEvent Webhook (/v2020-07/webhooks)
Trigger a CMMS work order on trap condition changeEvent Webhook + Partner Integration
Stream all raw sensor data to a custom HTTP endpointData Streaming Webhook (/ds/v1/webhooks)
Stream sensor data via MQTTData Broker
Query current or historical data on demandREST API