---
title: "Send a Webhook to Jira | WebhookRelay"
meta:
  "og:description": "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."
  "og:title": "Send a Webhook to Jira"
  description: "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."
---

![Stripes](https://webhookrelay.com/blog/webhook-to-jira/images/stripes.svg)

# **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 &amp; Forward Any Payload](https://webhookrelay.com/blog/webhook-to-jira/images/blog/heroes/route.jpg)

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](https://webhookrelay.com) 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](#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](#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](#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](#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](#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](https://webhookrelay.com/blog/webhook-to-jira/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](#going-further)

- **Fan out:** send the same event to [Trello](https://webhookrelay.com/blog/webhook-to-jira/blog/webhook-to-trello/) or [Slack](https://webhookrelay.com/blog/webhook-to-jira/blog/webhook-to-slack/) at the same time with [multiple destinations](https://webhookrelay.com/blog/webhook-to-jira/features/webhook-multiple-destinations/).
- **Filter:** use [forwarding rules](https://webhookrelay.com/blog/webhook-to-jira/features/forwarding-rules/) so only the events you care about reach Jira.
- **Inspect first:** see the raw payload in the [Webhook Bin](https://webhookrelay.com/blog/webhook-to-jira/webhook-bin/) before writing the mapping.

## [Get started](#get-started)

[Create a free Webhook Relay account](https://my.webhookrelay.com/register) and turn any webhook into Jira records — no servers to run. New to webhooks? Start with [what is a webhook](https://webhookrelay.com/blog/webhook-to-jira/blog/what-is-webhook/) and [how to transform webhooks](https://webhookrelay.com/blog/webhook-to-jira/features/transform-webhooks/).