Liquid syntax in Webhook headers

I have…

I’m submitting a…

  • [ ] Regression (a behavior that stopped working in a new release)
  • [ ] Bug report
  • [ ] Performance issue
  • [x] Documentation issue or request

Current behavior

I am unable to create valid Liquid syntax for Custom Headers of Webhook Rule.

In the payload field the Liquid syntax works as expected, e.g.

  • MyPayload={{event.timestamp}}

But Custom Headers do not seem to work in the same way, e.g.

  • MyCustomHeader={{event.timestamp}}

When I run simulations against such a rule the ActionData ‘headers’ property appears malformed, e.g.:

      "headers": {
        "Liquid(MyCustomHeader": "{{event.timestamp}})"

I have also tried:

  • MyCustomHeader=Liquid({{event.timestamp}})

Simulation of that rule indicates that it tried to process the Liquid syntax, but the ActionData headers property again looks incorrect:

  "headers": {
    "Liquid(MyCustomHeader": "2022-03-14T10:47:55Z)"

I have tried other variations but always the simulation looks incorrect; and triggering an actual rule results in either no custom header being present, or it sets the header using the literal liquid value without parsing it.

Expected behavior

The Liquid syntax should work for headers field in a similar way to how it works for the payload field.

I want to use the reference function to look up some additional data, so I would expect something like the following to work:

{% reference 'ref',[0] %}
MyCustomHeader={{ }}

Minimal reproduction of the problem

Create a web hook rule and try to set a value for custom headers using Liquid, e.g.

  • MyCustomHeader={{event.timestamp}}

Observe that

  • ActionData headers property appears malformed in a simulated rule.
  • No custom header is included when the rule is triggered.


App Name: test

  • [ ] Self hosted with docker
  • [X] Self hosted with IIS
  • [ ] Self hosted with other version
  • [ ] Cloud version



  • [ ] Chrome (desktop)
  • [ ] Chrome (Android)
  • [ ] Chrome (iOS)
  • [ ] Firefox
  • [ ] Safari (desktop)
  • [ ] Safari (iOS)
  • [ ] IE
  • [X] Edge

Hi, the implementation is a little bit weird, right now. It runs the formatter over each value individually.

Therefore you have to do ikt like this:


I think my rule must have been cached / corrupted.

I created a new rule which is now being successfully processed.
For future reference I can also confirm that more advanced templates also work as expected, e.g:

MyOtherKey=Liquid({% reference 'ref',[0] %}{{ }})

Many thanks

1 Like