Send a Webhook to Jira: Transform & Forward Any Payload

Send any webhook to Jira. Transform an incoming webhook into the Jira API format in flight and forward it — no glue server, no code to maintain.

Send a Webhook to Jira: Transform & Forward Any Payload

You have a service that fires webhooks — a form, a payment provider, a CI pipeline, a monitoring tool — and you want each event to create an issue in Jira. The problem: the Jira API won't accept the raw webhook. It expects its own JSON shape and authentication, and the payload your source sends never matches.

Webhook Relay sits in the middle. It receives the incoming webhook at a stable public URL, transforms the payload into the format Jira expects, and delivers it — no glue server, no Lambda, no maintenance.

How it works

  1. Your source service POSTs its webhook to a Webhook Relay endpoint.
  2. A transformation function parses the payload and builds a Jira API request.
  3. Webhook Relay forwards it to Jira, and the record is created.

Step 1: Get your Jira credentials

You need a Jira API token (id.atlassian.com) paired with your account email, sent as Basic auth.

Step 2: Create a Webhook Relay output to the Jira API

Create a bucket with a public input, then add an output pointing at the Jira API:

  • Output destination: https://YOUR_SITE.atlassian.net/rest/api/3/issue
  • Headers:
    • Authorization: Basic <base64 of email:api-token>
    • Content-Type: application/json

Step 3: Add a transformation function

Attach a function that reshapes the incoming webhook. Jira's REST API expects a fields object with a project (by key), an issuetype (by name), a summary, and a description (Atlassian Document Format).

-- incoming payload is in r.RequestBody
local body = json.decode(r.RequestBody)

local issue = {
  fields = {
    project = { key = "ENG" },
    issuetype = { name = "Task" },
    summary = body.title or "Issue from webhook",
    description = {
      type = "doc", version = 1,
      content = {{ type = "paragraph", content = {{ type = "text", text = body.message or "" }} }}
    }
  }
}

r:SetRequestBody(json.encode(issue))

Step 4: Point your source at the URL and test

Configure your source service's webhook to point at the Webhook Relay public URL. Trigger an event — or replay one from the Webhook Bin — and the record appears in Jira within seconds. If the API rejects the request, the Webhook Relay logs show Jira's exact error so you can fix the mapping.

Going further

Get started

Create a free Webhook Relay account and turn any webhook into Jira records — no servers to run. New to webhooks? Start with what is a webhook and how to transform webhooks.