Payload library · 10 events across 5 sources

Webhook payload samples.

Short answer: Each sample pairs the raw provider webhook with a destination template that turns it into an agent task. Copy the payload into the inspector or use the template as the starting point for a destination.

The files live in the public repository at public-repo/samples/<source>/<event>.json, with one template per event under templates/. Payloads are raw provider bodies; templates read the normalized event fields (event.type, event.subject, event.raw, delivery.id) documented in the templates guide.

Every value is fictional and sanitized: identifiers, names, emails, and URLs use demo or example.test placeholders, and no live secrets are included.

Browse by source

GitHub

Issues, pull requests, comments, pushes, releases, and workflow runs with the X-GitHub-Event header.

issues.opened

public-repo/samples/github/issues.opened.json

View raw payload
{
  "action": "opened",
  "issue": {
    "url": "https://api.github.com/repos/acme/example-service/issues/42",
    "repository_url": "https://api.github.com/repos/acme/example-service",
    "labels_url": "https://api.github.com/repos/acme/example-service/issues/42/labels{/name}",
    "comments_url": "https://api.github.com/repos/acme/example-service/issues/42/comments",
    "events_url": "https://api.github.com/repos/acme/example-service/issues/42/events",
    "html_url": "https://github.com/acme/example-service/issues/42",
    "id": 2400000042,
    "node_id": "I_kwDOExample42",
    "number": 42,
    "title": "Checkout retries twice on timeout",
    "user": {
      "login": "octocat-demo",
      "id": 1000001,
      "node_id": "U_kgDOExample1",
      "avatar_url": "https://avatars.githubusercontent.com/u/1000001?v=4",
      "html_url": "https://github.com/octocat-demo",
      "type": "User",
      "site_admin": false
    },
    "labels": [
      {
        "id": 7001,
        "node_id": "LA_kwDOExample1",
        "url": "https://api.github.com/repos/acme/example-service/labels/bug",
        "name": "bug",
        "color": "d73a4a",
        "default": true,
        "description": "Something is not working"
      },
      {
        "id": 7002,
        "node_id": "LA_kwDOExample2",
        "url": "https://api.github.com/repos/acme/example-service/labels/agent",
        "name": "agent",
        "color": "5319e7",
        "default": false,
        "description": "Ready for an automated triage run"
      }
    ],
    "state": "open",
    "locked": false,
    "assignee": null,
    "assignees": [],
    "milestone": null,
    "comments": 0,
    "created_at": "2026-10-31T14:02:11Z",
    "updated_at": "2026-10-31T14:02:11Z",
    "closed_at": null,
    "author_association": "MEMBER",
    "active_lock_reason": null,
    "body": "When the payment provider times out, checkout retries the request twice and creates duplicate orders.\n\nSteps to reproduce are in the linked runbook. Please add a regression test before changing the retry policy.",
    "reactions": {
      "url": "https://api.github.com/repos/acme/example-service/issues/42/reactions",
      "total_count": 0,
      "+1": 0,
      "-1": 0,
      "laugh": 0,
      "hooray": 0,
      "confused": 0,
      "heart": 0,
      "rocket": 0,
      "eyes": 0
    },
    "timeline_url": "https://api.github.com/repos/acme/example-service/issues/42/timeline",
    "performed_via_github_app": null
  },
  "repository": {
    "id": 5000001,
    "node_id": "R_kgDOExample",
    "name": "example-service",
    "full_name": "acme/example-service",
    "private": false,
    "owner": {
      "login": "acme",
      "id": 2000001,
      "node_id": "O_kgDOExample",
      "type": "Organization"
    },
    "html_url": "https://github.com/acme/example-service",
    "description": "Fictional checkout service used in Hooks payload samples.",
    "fork": false,
    "default_branch": "main",
    "visibility": "public"
  },
  "organization": {
    "login": "acme",
    "id": 2000001,
    "node_id": "O_kgDOExample"
  },
  "sender": {
    "login": "octocat-demo",
    "id": 1000001,
    "node_id": "U_kgDOExample1",
    "type": "User"
  },
  "installation": {
    "id": 3000001,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzAwMDAwMQ=="
  }
}
View destination template

public-repo/samples/github/templates/issues.opened.json

{
  "task": "Triage this GitHub issue.\n\nRepository: {{event.repo}}\nTitle: {{event.subject.title}}\nURL: {{event.subject.url}}\nLabels: {{event.subject.labels | join:\", \"}}\n\n{{event.subject.body | truncate:2000}}",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}",
    "sender": "{{event.actor.login}}"
  }
}

pull_request.opened

public-repo/samples/github/pull_request.opened.json

View raw payload
{
  "action": "opened",
  "number": 108,
  "pull_request": {
    "url": "https://api.github.com/repos/acme/example-service/pulls/108",
    "id": 1800000108,
    "node_id": "PR_kwDOExample108",
    "html_url": "https://github.com/acme/example-service/pull/108",
    "diff_url": "https://github.com/acme/example-service/pull/108.diff",
    "patch_url": "https://github.com/acme/example-service/pull/108.patch",
    "issue_url": "https://api.github.com/repos/acme/example-service/issues/108",
    "number": 108,
    "state": "open",
    "locked": false,
    "title": "Deduplicate retry attempts with an idempotency key",
    "user": {
      "login": "octocat-demo",
      "id": 1000001,
      "node_id": "U_kgDOExample1",
      "avatar_url": "https://avatars.githubusercontent.com/u/1000001?v=4",
      "html_url": "https://github.com/octocat-demo",
      "type": "User"
    },
    "body": "Adds an Idempotency-Key to every outbound retry so a timed-out request cannot create a second order. Includes a regression test for the timeout path.",
    "created_at": "2026-10-31T16:21:09Z",
    "updated_at": "2026-10-31T16:21:09Z",
    "closed_at": null,
    "merged_at": null,
    "merge_commit_sha": null,
    "assignee": null,
    "assignees": [],
    "requested_reviewers": [],
    "requested_teams": [],
    "labels": [
      {
        "id": 7003,
        "node_id": "LA_kwDOExample3",
        "name": "agent-review",
        "color": "0e8a16",
        "default": false,
        "description": "Request an automated review"
      }
    ],
    "milestone": null,
    "draft": false,
    "commits": 3,
    "additions": 128,
    "deletions": 22,
    "changed_files": 6,
    "base": {
      "label": "acme:main",
      "ref": "main",
      "sha": "9f0c1d2e3b4a5c6d7e8f901234567890abcdef01",
      "user": {
        "login": "acme",
        "id": 2000001,
        "type": "Organization"
      },
      "repo": {
        "id": 5000001,
        "name": "example-service",
        "full_name": "acme/example-service",
        "private": false
      }
    },
    "head": {
      "label": "octocat-demo:idempotent-retries",
      "ref": "idempotent-retries",
      "sha": "1a2b3c4d5e6f7890abcdef1234567890abcdef12",
      "user": {
        "login": "octocat-demo",
        "id": 1000001,
        "type": "User"
      },
      "repo": {
        "id": 5000002,
        "name": "example-service",
        "full_name": "octocat-demo/example-service",
        "private": false,
        "fork": true
      }
    },
    "author_association": "MEMBER",
    "auto_merge": null,
    "active_lock_reason": null
  },
  "repository": {
    "id": 5000001,
    "node_id": "R_kgDOExample",
    "name": "example-service",
    "full_name": "acme/example-service",
    "private": false,
    "owner": {
      "login": "acme",
      "id": 2000001,
      "type": "Organization"
    },
    "html_url": "https://github.com/acme/example-service",
    "description": "Fictional checkout service used in Hooks payload samples.",
    "fork": false,
    "default_branch": "main",
    "visibility": "public"
  },
  "organization": {
    "login": "acme",
    "id": 2000001
  },
  "sender": {
    "login": "octocat-demo",
    "id": 1000001,
    "type": "User"
  },
  "installation": {
    "id": 3000001
  }
}
View destination template

public-repo/samples/github/templates/pull_request.opened.json

{
  "task": "Review this pull request.\n\nRepository: {{event.repo}}\nTitle: {{event.subject.title}}\nURL: {{event.subject.url}}\nAuthor: {{event.actor.login}}\n\n{{event.subject.body | truncate:2000}}\n\nFocus on correctness and missing tests. Do not push commits.",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}"
  }
}

Linear

Issue, project, cycle, and comment events signed with Linear-Signature and a webhookTimestamp.

comment.create

public-repo/samples/linear/comment.create.json

View raw payload
{
  "action": "create",
  "actor": {
    "id": "usr_demo_1",
    "name": "Alex Example",
    "email": "alex@example.test",
    "avatarUrl": null,
    "type": "user"
  },
  "createdAt": "2026-10-31T15:11:42.000Z",
  "data": {
    "id": "comment_demo_1",
    "body": "Can you pick this up? Please add a regression test for the double-retry path before changing the policy.",
    "issueId": "iss_demo_123",
    "issue": {
      "id": "iss_demo_123",
      "identifier": "ENG-42",
      "title": "Add an idempotency key to the retry path"
    },
    "user": {
      "id": "usr_demo_1",
      "name": "Alex Example"
    },
    "url": "https://linear.app/acme/issue/ENG-42/add-an-idempotency-key-to-the-retry-path#comment-demo-1",
    "createdAt": "2026-10-31T15:11:42.000Z",
    "updatedAt": "2026-10-31T15:11:42.000Z"
  },
  "organizationId": "org_demo_1",
  "webhookId": "wh_demo_2",
  "webhookTimestamp": 1761923502123,
  "type": "Comment"
}
View destination template

public-repo/samples/linear/templates/comment.create.json

{
  "task": "Read this new Linear comment and update the issue plan if it changes the requested work.\n\nComment: {{event.subject.body}}\nComment URL: {{event.subject.url}}\nTeam: {{event.project}}\n\nReply with the concrete next step; do not change issue state without approval.",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}"
  }
}

issue.create

public-repo/samples/linear/issue.create.json

View raw payload
{
  "action": "create",
  "actor": {
    "id": "usr_demo_1",
    "name": "Alex Example",
    "email": "alex@example.test",
    "avatarUrl": null,
    "type": "user"
  },
  "createdAt": "2026-10-31T15:04:05.000Z",
  "data": {
    "id": "iss_demo_123",
    "identifier": "ENG-42",
    "title": "Add an idempotency key to the retry path",
    "description": "Retries currently resend the same request without an idempotency key. Add a stable key per delivery and a regression test for the timeout path.",
    "priority": 2,
    "priorityLabel": "High",
    "state": {
      "id": "state_demo_1",
      "name": "Todo",
      "type": "unstarted",
      "color": "#e2e2e2"
    },
    "team": {
      "id": "team_demo_1",
      "key": "ENG",
      "name": "Engineering"
    },
    "assignee": {
      "id": "usr_demo_2",
      "name": "Sam Example"
    },
    "labels": {
      "nodes": [
        {
          "id": "label_demo_1",
          "name": "agent",
          "color": "#5e6ad2"
        }
      ]
    },
    "url": "https://linear.app/acme/issue/ENG-42/add-an-idempotency-key-to-the-retry-path",
    "createdAt": "2026-10-31T15:04:05.000Z",
    "updatedAt": "2026-10-31T15:04:05.000Z",
    "archivedAt": null
  },
  "organizationId": "org_demo_1",
  "webhookId": "wh_demo_1",
  "webhookTimestamp": 1761923045123,
  "type": "Issue"
}
View destination template

public-repo/samples/linear/templates/issue.create.json

{
  "task": "Work on this Linear issue.\n\nTeam: {{event.project}}\nIdentifier: {{event.subject.id}}\nTitle: {{event.subject.title}}\nState: {{event.subject.state}}\nLabels: {{event.subject.labels | join:\", \"}}\nURL: {{event.subject.url}}\n\n{{event.subject.body | truncate:2000}}",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}"
  }
}

Sentry

Issue and alert-rule events delivered with Sentry-Hook-Resource and a Request-Id.

event_alert.triggered

public-repo/samples/sentry/event_alert.triggered.json

View raw payload
{
  "action": "triggered",
  "installation": {
    "uuid": "install_demo_1"
  },
  "data": {
    "event": {
      "event_id": "e5f6a7b8c9d01234567890abcdef1234",
      "title": "Checkout latency above 2s (p95)",
      "culprit": "checkout.createOrder",
      "level": "warning",
      "message": "Checkout latency above 2s (p95)",
      "datetime": "2026-10-31T15:20:00.000Z",
      "web_url": "https://sentry.io/organizations/acme-example/issues/4500000002/events/e5f6a7b8c9d01234567890abcdef1234/",
      "issue_id": "4500000002",
      "issue_url": "https://sentry.io/organizations/acme-example/issues/4500000002/",
      "project": "checkout-web",
      "metadata": {
        "value": "Checkout latency above 2s (p95)"
      },
      "tags": [
        [
          "environment",
          "production"
        ],
        [
          "release",
          "checkout-web@1.42.0"
        ],
        [
          "region",
          "us-east-1"
        ]
      ]
    },
    "triggered_rule": "Checkout latency above 2s for 5 minutes"
  },
  "actor": {
    "type": "application",
    "id": "sentry",
    "name": "Sentry"
  }
}
View destination template

public-repo/samples/sentry/templates/event_alert.triggered.json

{
  "task": "A Sentry alert rule fired. Investigate the metric and summarize the blast radius.\n\nProject: {{event.project}}\nLevel: {{event.subject.level}}\nAlert: {{event.subject.title}}\nDetails: {{event.subject.body}}\nURL: {{event.subject.url}}\n\nDo not restart production services. Report findings in the incident thread.",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}"
  }
}

issue.created

public-repo/samples/sentry/issue.created.json

View raw payload
{
  "action": "created",
  "installation": {
    "uuid": "install_demo_1"
  },
  "data": {
    "issue": {
      "id": "4500000001",
      "shareId": null,
      "shortId": "CHECKOUT-42",
      "title": "TypeError: Cannot read properties of undefined (reading 'id')",
      "culprit": "checkout.createOrder",
      "permalink": "https://sentry.io/organizations/acme-example/issues/4500000001/",
      "logger": null,
      "level": "error",
      "status": "unresolved",
      "statusDetails": {},
      "isPublic": false,
      "platform": "javascript",
      "project": {
        "id": "4600000001",
        "name": "checkout-web",
        "slug": "checkout-web"
      },
      "type": "error",
      "metadata": {
        "type": "TypeError",
        "value": "Cannot read properties of undefined (reading 'id')",
        "filename": "src/checkout/create-order.ts",
        "function": "createOrder"
      },
      "numComments": 0,
      "assignedTo": null,
      "isBookmarked": false,
      "isSubscribed": true,
      "subscriptionReason": "own",
      "firstSeen": "2026-10-31T15:10:00.000Z",
      "lastSeen": "2026-10-31T15:10:00.000Z",
      "count": 1,
      "userCount": 1,
      "firstRelease": null,
      "lastRelease": null
    }
  },
  "actor": {
    "type": "application",
    "id": "sentry",
    "name": "Sentry"
  }
}
View destination template

public-repo/samples/sentry/templates/issue.created.json

{
  "task": "Triage this new Sentry issue.\n\nProject: {{event.project}}\nLevel: {{event.subject.level}}\nState: {{event.subject.state}}\nTitle: {{event.subject.title}}\nCulprit: {{event.subject.body}}\nURL: {{event.subject.url}}\n\nFind the smallest failing input and propose a fix with a regression test.",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}"
  }
}

Slack

Events API callbacks such as app mentions and channel messages, signed with X-Slack-Signature.

app_mention

public-repo/samples/slack/app_mention.json

View raw payload
{
  "token": "verification-token-redacted",
  "team_id": "T0EXAMPLE1",
  "api_app_id": "A0EXAMPLE2",
  "event": {
    "type": "app_mention",
    "user": "U0EXAMPLE3",
    "text": "<@U0EXAMPLE4> summarize the failed-checkout alerts from overnight and open an issue if the count is above ten",
    "ts": "1761900123.456789",
    "channel": "C0EXAMPLE5",
    "event_ts": "1761900123.456789",
    "channel_type": "channel"
  },
  "type": "event_callback",
  "event_id": "Ev0EXAMPLE6",
  "event_time": 1761900123,
  "authorizations": [
    {
      "enterprise_id": null,
      "team_id": "T0EXAMPLE1",
      "user_id": "U0EXAMPLE4",
      "is_bot": true,
      "is_enterprise_install": false
    }
  ],
  "is_ext_shared_channel": false,
  "event_context": "ec0example"
}
View destination template

public-repo/samples/slack/templates/app_mention.json

{
  "task": "Respond to a Slack mention.\n\nUser: {{event.actor.id}}\nChannel: {{event.raw.event.channel}}\nThread: {{event.raw.event.ts}}\nMessage: {{event.subject.body}}\n\nReply in the same thread. Keep the answer short and actionable.",
  "context": {
    "event_type": "{{event.type}}",
    "event_id": "{{event.id}}"
  }
}

message.channels

public-repo/samples/slack/message.channels.json

View raw payload
{
  "token": "verification-token-redacted",
  "team_id": "T0EXAMPLE1",
  "api_app_id": "A0EXAMPLE2",
  "event": {
    "type": "message",
    "user": "U0EXAMPLE3",
    "text": "The nightly export finished with 3 skipped rows; can someone confirm whether that is expected?",
    "ts": "1761900456.789012",
    "channel": "C0EXAMPLE5",
    "event_ts": "1761900456.789012",
    "channel_type": "channel",
    "client_msg_id": "7a1b2c3d-4e5f-6789-abcd-ef0123456789"
  },
  "type": "event_callback",
  "event_id": "Ev0EXAMPLE7",
  "event_time": 1761900456,
  "authorizations": [
    {
      "enterprise_id": null,
      "team_id": "T0EXAMPLE1",
      "user_id": "U0EXAMPLE4",
      "is_bot": true,
      "is_enterprise_install": false
    }
  ],
  "is_ext_shared_channel": false,
  "event_context": "ec0example"
}
View destination template

public-repo/samples/slack/templates/message.channels.json

{
  "task": "Classify this Slack channel message and decide whether it needs an owner.\n\nUser: {{event.actor.id}}\nChannel: {{event.raw.event.channel}}\nMessage: {{event.subject.body}}\n\nIf it reports a production issue, open a P2 issue with the message link.",
  "context": {
    "event_type": "{{event.type}}",
    "event_id": "{{event.id}}"
  }
}

Stripe

Invoice, checkout, and subscription events carried in a Stripe event envelope, signed with Stripe-Signature.

checkout.session.completed

public-repo/samples/stripe/checkout.session.completed.json

View raw payload
{
  "id": "evt_1Qb3c4D5e6F7g8H9",
  "object": "event",
  "api_version": "2025-06-30.basil",
  "created": 1761912345,
  "data": {
    "object": {
      "id": "cs_test_a1B2c3D4e5F6g7H8i9J0",
      "object": "checkout.session",
      "amount_subtotal": 9900,
      "amount_total": 9900,
      "cancel_url": "https://app.example.test/checkout/cancel",
      "client_reference_id": "workspace_demo_1",
      "created": 1761912000,
      "currency": "usd",
      "customer": "cus_Q1w2E3r4T5y6",
      "customer_details": {
        "email": "buyer@example.test",
        "name": "Dana Example",
        "address": {
          "city": "Springfield",
          "country": "US",
          "line1": "1 Example Street",
          "postal_code": "00000",
          "state": "IL"
        }
      },
      "expires_at": 1761915600,
      "livemode": false,
      "metadata": {
        "plan": "pro",
        "workspace": "workspace_demo_1"
      },
      "mode": "payment",
      "payment_intent": "pi_3Qb3c4D5e6F7g8H9",
      "payment_status": "paid",
      "status": "complete",
      "submit_type": "pay",
      "success_url": "https://app.example.test/checkout/success?session_id={CHECKOUT_SESSION_ID}",
      "url": null
    }
  },
  "livemode": false,
  "pending_webhooks": 1,
  "request": {
    "id": "req_demo_1",
    "idempotency_key": "checkout_demo_1"
  },
  "type": "checkout.session.completed"
}
View destination template

public-repo/samples/stripe/templates/checkout.session.completed.json

{
  "task": "A Stripe checkout completed. Provision the purchased plan and send the receipt.\n\nCustomer: {{event.subject.customer}}\nAmount: {{event.subject.amount}} {{event.subject.currency}}\nPayment status: {{event.subject.state}}\nReference: {{event.subject.id}}",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}",
    "workspace": "{{event.raw.data.object.metadata.workspace}}",
    "plan": "{{event.raw.data.object.metadata.plan}}"
  }
}

invoice.payment_failed

public-repo/samples/stripe/invoice.payment_failed.json

View raw payload
{
  "id": "evt_1Qa2b3C4d5E6f7G8",
  "object": "event",
  "api_version": "2025-06-30.basil",
  "created": 1761900000,
  "data": {
    "object": {
      "id": "in_1Qa2b3C4d5E6f7G8",
      "object": "invoice",
      "account_country": "US",
      "amount_due": 4900,
      "amount_paid": 0,
      "amount_remaining": 4900,
      "attempt_count": 2,
      "attempted": true,
      "billing_reason": "subscription_cycle",
      "charge": null,
      "collection_method": "charge_automatically",
      "created": 1761900000,
      "currency": "usd",
      "customer": "cus_Q1w2E3r4T5y6",
      "customer_email": "billing@example.test",
      "customer_name": "Dana Example",
      "description": "Pro plan — October 2026",
      "hosted_invoice_url": "https://invoice.stripe.com/i/acct_1Example/test_YWNjdF8xRXhhbXBsZQ",
      "invoice_pdf": "https://pay.stripe.com/invoice/acct_1Example/test_YWNjdF8xRXhhbXBsZQ/pdf",
      "lines": {
        "object": "list",
        "data": [
          {
            "id": "il_1Qa2b3C4d5E6f7G8",
            "object": "line_item",
            "amount": 4900,
            "currency": "usd",
            "description": "Pro plan — October 2026",
            "period": {
              "start": 1761900000,
              "end": 1764578400
            },
            "quantity": 1
          }
        ],
        "has_more": false,
        "total_count": 1,
        "url": "/v1/invoices/in_1Qa2b3C4d5E6f7G8/lines"
      },
      "livemode": false,
      "next_payment_attempt": 1761986400,
      "number": "INV-1042",
      "paid": false,
      "payment_intent": "pi_3Qa2b3C4d5E6f7G8",
      "status": "open",
      "subscription": "sub_1Ab2Cd3Ef4Gh5",
      "webhooks_delivered_at": null
    }
  },
  "livemode": false,
  "pending_webhooks": 1,
  "request": {
    "id": null,
    "idempotency_key": null
  },
  "type": "invoice.payment_failed"
}
View destination template

public-repo/samples/stripe/templates/invoice.payment_failed.json

{
  "task": "A Stripe invoice payment failed. Check the customer's retry state and draft a dunning follow-up.\n\nInvoice: {{event.subject.title}}\nCustomer: {{event.subject.customer}}\nAmount: {{event.subject.amount}} {{event.subject.currency}}\nStatus: {{event.subject.state}}\nHosted invoice: {{event.subject.url}}",
  "context": {
    "event_type": "{{event.type}}",
    "delivery_id": "{{delivery.id}}"
  }
}

Keep reading