LandfallDocs
Triggering integrations · PagerDuty

Opening a war room from a PagerDuty incident

When a PagerDuty incident triggers, a Webhooks v3 subscription posts it to Landfall, which opens a war room or attaches to the one that PagerDuty incident already opened. This page is not about reading who is on call; see Connecting PagerDuty. The two are set up separately and share one PagerDuty connection in Landfall, which holds both the REST API token and the signing secret.

PagerDuty
incident.triggered
→
Webhooks v3
signed with your secret
→
Landfall
opens or attaches an incident

How it works

PagerDuty posts to https://api.landfalls.ai/triggers/pagerduty/<your-org-slug>. It cannot send a bearer token, so authentication is a signature: PagerDuty signs each delivery's body with the subscription's signing secret and sends it in X-PagerDuty-Signature. Landfall checks it against every signing secret saved on your organization's PagerDuty connections. Until one is saved, every delivery is refused, so saving the secret is what turns the endpoint on.

The slug in the URL is not a credential. It selects which organization's secrets the signature is checked against. An unknown slug and a valid slug with a bad signature get the identical refusal, so the endpoint cannot be used to discover which organizations exist. Landfall recognizes the body as a PagerDuty v3 envelope, acts on three event types and attaches every follow-up by the PagerDuty incident id.

What you'll need

  • An admin on your Landfall organization.
  • The PagerDuty connection in Landfall, or its REST API token: the form needs the token to save the secret. See Connecting PagerDuty.
  • A PagerDuty account that can create webhook subscriptions.
  • Your Landfall organization's slug. It is the slug= value in your Landfall address, for example slug=acme.

1. Create the webhook subscription

  1. Integrations → Generic Webhooks (v3) → New Webhook

    yourcompany.pagerduty.com · Integrations · Your Webhooks
    PagerDuty's Your Webhooks page, Subscriptions tab, reading No webhook subscriptions to show, with New Webhook and Webhook Guide buttons.
    Your Webhooks with no subscriptions yet. Click New Webhook. The account avatar is blurred.
  2. Fill in the subscription

    Webhook URLhttps://api.landfalls.ai/triggers/pagerduty/<your-org-slug>
    Scope typeAccount for every service, or Service to limit it to one.
    Event subscriptionincident.triggered · incident.escalated · incident.resolved

    Deselect everything else. Landfall acts on those three and answers 200 to the rest, so other events only add delivery volume.

    yourcompany.pagerduty.com · Your Webhooks · New Webhook
    PagerDuty's New Webhook form with the Webhook URL starting https://api.landfalls.ai/triggers/pagerdu and the rest of it blurred, Scope Type Account, a description, OAuth Client None, and the top of the Event Subscription list with incident.acknowledged and three incident.action_invocation events unticked.
    The New Webhook form with the Landfall URL, Account scope and a description. The end of the URL, which holds the organization slug, is blurred. The event list continues below this crop, where you tick the three events above.
  3. Save, then copy the signing secret

    When you save, PagerDuty shows the subscription's signing secret once. Copy it for the next step. Secrets are issued per subscription; recreating the webhook issues a new one.

2. Paste the signing secret into Landfall

  1. Integrations → Paging & on-call → PagerDuty

    Open Integrations in the left menu and pick the PagerDuty tile. Paste the secret into Webhook v3 signing secret. The form also needs the REST API token, and each save replaces every field, so enter the token, the secret and any escalation fields you use together.

    app.landfalls.ai · Integrations · PagerDuty
    Landfall's PagerDuty panel, Not configured, with the REST API token and the Webhook v3 signing secret both masked, PABC123 in Default escalation policy IDs, and Test connection and Save integration buttons.
    The PagerDuty panel before saving, with the REST API token and the Webhook v3 signing secret filled in. The secrets in this picture are masked.
  2. Save integration

    The tile reads Configured, and deliveries signed with that secret are accepted from then on.

What each event does

PagerDuty eventIn Landfall
incident.triggeredOpens a war room. If that PagerDuty incident already opened one, returns that room and opens no second one.
incident.escalatedAppends pagerduty.escalated to the linked room's timeline.
incident.resolvedAppends pagerduty.resolved. It does not close the war room.
Any other event typeAnswered 200 and ignored.

What PagerDuty's fields become

PagerDuty fieldBecomes
data.titleThe incident title. Without one, PagerDuty incident <id>.
data.priority.summarySeverity: P1 → sev1, P2 → sev2, P3 → sev3, P4 and P5 → sev4.
data.urgencySeverity when there is no priority: high → sev2, low → sev4. With neither, sev3.
data.service.summaryThe affected service, or data.service.id when the summary is missing.
data.escalation_policy.summaryAdded to the incident's summary line.
data.linksA link whose text mentions "runbook" becomes a runbook Beacon reads when its run starts; any other link shows in the room header. Only http and https links, up to 10.

3. Test it

In PagerDuty, click New Incident and raise one on a service the subscription covers. A Landfall war room opens within seconds, titled with the PagerDuty incident's title, and it appears in your Incidents list with a PagerDuty source badge.

yourcompany.pagerduty.com · Incidents · Create New Incident
PagerDuty's Create New Incident form with a test title about checkout latency breaching an SLO, Incident Type Base Incident, Impacted Service Default Service, a description saying it was raised to validate the Landfall webhook subscription, Urgency not chosen, Priority None and Assignee Default.
A test incident raised on the Default Service. Its title becomes the Landfall incident's title. The account avatar is blurred.

Repeats and recovery

  • Attach identity: the PagerDuty incident id. Another incident.triggered for the same PagerDuty incident returns the room it already opened and appends nothing.
  • Retries: PagerDuty retries a failed delivery with the same event id. Landfall recognizes a repeated event id for 24 hours and records it once.
  • Escalation: recorded on the room as pagerduty.escalated. An escalation or resolution for a PagerDuty incident that never opened a room (for example one that started before the subscription existed) opens nothing and is recorded in the audit log.
  • Maintenance windows: a delivery that matches an active maintenance window opens no room.
  • Recovery: incident.resolved is recorded as pagerduty.resolved and the room stays open.
Resolving in PagerDuty does not resolve in Landfall

Landfall records PagerDuty's resolution on the timeline as a fact and leaves the room open. A person closes it, after the investigation and postmortem are done. If closing the page also closed the room, the record would end when the alarm stopped.

Troubleshooting

What you seeWhat it means
PagerDuty shows deliveries failing with 401No signing secret is saved, the saved one does not match this subscription's, or the slug in the URL is wrong. All three get the same answer on purpose.
401 right after you saved the PagerDuty panel againSave replaces every field. If the signing secret was left empty, it was removed. Paste it again and save.
400The body was not a PagerDuty Webhooks v3 envelope.
429More than 120 deliveries a minute came from one address.
PagerDuty disabled the subscriptionPagerDuty retries failed deliveries with backoff and disables a subscription that keeps failing. Fix the cause above, then turn the subscription back on in PagerDuty.
An escalation never shows on the roomThat PagerDuty incident did not open the room, so there is nothing to attach to. Check the audit log for pagerduty.event.ignored.

Reference

FieldValue
EndpointPOST https://api.landfalls.ai/triggers/pagerduty/<your-org-slug>
AuthHMAC-SHA256 of the raw body with the subscription's signing secret, in X-PagerDuty-Signature as v1=<hex>. Checked against every secret saved on the organization's PagerDuty connections.
Issue or rotatePagerDuty issues the secret when you create the subscription. After you rotate it in PagerDuty, paste the new value into Landfall; PagerDuty signs with both secrets during a rotation, so deliveries keep verifying while you switch.
Recognized byA v3 envelope: event.id, event.event_type and event.data.id.
Attach identityThe PagerDuty incident id (event.data.id). Repeats of one delivery are recognized by event.id for 24 hours.
Each delivery201 when a room opens; 200 for an attach, a follow-up, a repeat or an ignored event.
Rejected payloads401, identical for a missing or wrong signature, an unknown slug or no saved secret; 400 for a body that is not a v3 envelope; a body over 512 KB is refused; 429 above 120 a minute from one address.
Incident badgePagerDuty

See Integrations architecture for how every trigger source shares one pipeline.