Skip to main content

The Webhook plug-in

The Webhook Integration extension (odsl.integration_webhook) posts curves, timeseries and options as JSON to any HTTP endpoint: a webhook, an Azure Function or Logic App, Power Automate, or your own API.


What it needs​

Once installed, add a system that sends with it: select New system and choose Webhook under Sends with. The plug-in's codes, settings and secrets are listed on the system's System setup tab. Each system on the plug-in has its own secrets, groups and daily report, and its own codes when you choose them (see The codes a system sends with).

The System setup tab of a system on Webhook with its identity, group settings and secrets

KindNameWhat it is
Identitywebhook_codeThe code the receiving system knows the data by. Left empty, the data id is sent, such as NGE.GAS.TTF:MID.
Group settingURL (url)The address the JSON is posted to.
Group settingToken header (tokenHeader)Authorization unless you change it. The header the token secret is sent in, when it is set.
Group settingMessages (layout)item or group, group unless you change it. item: one message or file per data item; group: one for the whole run.
Group settingMost items in one message (maxItems)100 unless you change it. With one message per group, a bigger group is sent in several messages, each with part and parts.
Group settingTransformer (transformer)Optional: the name of a mustache script (# for a public one) to transform the data with. Its text is sent instead of the JSON or CSV. See Transforming with a Mustache template.
Group settingContent type (contentType)With a transformer: the content type of its text, such as text/csv or application/xml, text/plain unless you change it. It is sent as the content-type header.
Group settingSend (send)Ticked unless you change it. Untick for a dry run: everything is built and counted, nothing is sent.
Secret, kept in integration_webhook_tokenToken (token)Sent in the token header, for example Bearer and the token; leave it unset when the endpoint needs none.

Set the secret values in the Secrets part of the system's System setup tab (see Getting started). A group can use its own secret records instead, named on its Settings tab, for example to send to a second account.


How it sends​

With Messages set to group (the default), a run posts the whole group in one request, split into several when it has more items than Most items in one message. With item, each curve or timeseries is one request.

Each request is a POST with content-type: application/json. When the Token secret is set, it is sent in the Token header, Authorization unless you change it, so a token secret of Bearer abc123 gives Authorization: Bearer abc123.

An answer with a status other than 2xx is a failure, with the status in the message. With one request per group, every item of the group is then marked failed with that message.

What each message or file holds, the CSV columns and the file names are the same for every generic plug-in: see What the generic plug-ins send.


Examples​

Northgate Energy posts its curves to a Power Automate flow:

SettingValue
URLThe flow's HTTP trigger URL
Messagesgroup

The flow gets {"system": "Webhook", "group": "NGE_CURVES", "ondate": "2026-11-03", "part": 1, "parts": 1, "count": 2, "items": [...]}.


One plug-in, several destinations​

Each group sending to Webhook has its own settings, so groups can already send to different endpoints. To keep destinations apart, with their own secrets, codes, report and groups, add a system for each one on this plug-in: select New system and choose Webhook under Sends with, or Copy to a new system on a system's System setup tab (see Copying a system). The plug-in is installed once, and every system on it gets its updates.


Next​