Send a Webhook to Jira

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.

Frequently asked questions

How do I send a webhook to Jira?

Get your Jira API credentials, create a Webhook Relay endpoint that forwards to the Jira API, then add a small transform function that maps the incoming payload into the Jira format. Point your source service at the Webhook Relay URL and every event reaches Jira.

Why can't I point my service straight at the Jira API?

The Jira API expects a specific JSON shape and authentication. A raw webhook from a form, payment provider or monitoring tool sends a different payload, so Jira rejects it. Webhook Relay reshapes the request in flight so Jira accepts it.

Can one webhook reach multiple destinations?

Yes. Webhook Relay can route one incoming webhook to several destinations — for example create a Jira issue and also post to Slack — transforming the payload differently for each.