List Organization Webhooks

List pipe, table, and organization-owned webhooks in one paginated connection, without returning header values.

Before You Begin

🔗 Use the GraphQL Playground to execute the queries in this guide.

➡️ New to GraphQL? Learn how to navigate the Playground with our Playground Basics Guide.

Prerequisites

  1. Authentication: Use a Service Account token (Personal Access Tokens are deprecated).
  2. Permissions: Your token must belong to an organization admin or super admin with manage_webhook permission. Other organization roles, including pipe and table admins, receive PERMISSION_DENIED.
  3. Organization ID: Identify the Organization to list webhooks for.

Step 1: Find Your Organization ID

1. Via Pipefy UI

  • Open the Organization in your browser.
  • The URL will include the Organization ID: https://app.pipefy.com/organizations/123456789.
  • Organization ID = 123456789 (the number after /organizations/).

2. Via GraphQL Query

Step 2: Query Organization Webhooks

Query webhooksInventory through the target organization to retrieve its pipe, table, and organization-scoped webhooks. Results are ordered by webhook ID in ascending order.

Header values are never returned. Use hasHeaders to check whether a webhook has custom headers configured.

query ListOrganizationWebhooks(
  $organizationId: ID!
  $first: Int
  $after: String
  $repoIds: [ID!]
  $withDeleted: Boolean
) {
  organization(id: $organizationId) {
    id
    webhooksInventory(
      first: $first
      after: $after
      repoIds: $repoIds
      withDeleted: $withDeleted
    ) {
      edges {
        node {
          id
          name
          url
          email
          actions
          filters
          identityPropagationEnabled
          hasHeaders
          scope
          origin {
            id
            name
            deletedAt
          }
          createdAt
          updatedAt
          deletedAt
        }
      }
      totalCount
      pageInfo {
        hasNextPage
        endCursor
      }
    }
  }
}

Variables

{
  "organizationId": "321",
  "first": 2,
  "after": null,
  "repoIds": null,
  "withDeleted": false
}

Set repoIds to pipe IDs, table IDs, or a combination of both. When repoIds is present, organization-scoped webhooks are excluded. IDs that belong to another organization are ignored.

withDeleted controls whether soft-deleted webhooks are included. It defaults to false, and an explicit null also behaves as false.

Sample Response

{
  "data": {
    "organization": {
      "id": "321",
      "webhooksInventory": {
        "edges": [
          {
            "node": {
              "id": "1001",
              "name": "Card created",
              "url": "https://example.com/hooks/cards",
              "email": null,
              "actions": ["card.create"],
              "filters": null,
              "identityPropagationEnabled": false,
              "hasHeaders": true,
              "scope": "PIPE",
              "origin": { "id": "301", "name": "Sales Pipeline", "deletedAt": null },
              "createdAt": "2026-01-15T12:00:00Z",
              "updatedAt": "2026-01-15T12:00:00Z",
              "deletedAt": null
            }
          },
          {
            "node": {
              "id": "1002",
              "name": "Record updated",
              "url": "https://example.com/hooks/records",
              "email": null,
              "actions": ["card.field_update"],
              "filters": null,
              "identityPropagationEnabled": false,
              "hasHeaders": false,
              "scope": "TABLE",
              "origin": { "id": "302", "name": "Customers", "deletedAt": null },
              "createdAt": "2026-01-20T09:30:00Z",
              "updatedAt": "2026-01-20T09:30:00Z",
              "deletedAt": null
            }
          }
        ],
        "totalCount": 3,
        "pageInfo": {
          "hasNextPage": true,
          "endCursor": "Mg"
        }
      }
    }
  }
}

totalCount reports the number of webhooks that match the current filters, not only the number returned on this page.

Step 3: Fetch the Next Page

Pass the previous pageInfo.endCursor as after while keeping the other filters unchanged:

{
  "organizationId": "321",
  "first": 2,
  "after": "Mg",
  "repoIds": null,
  "withDeleted": false
}

Continue until pageInfo.hasNextPage is false. Each page can contain at most 50 webhooks.

webhooksInventory and webhooks

The two fields serve different purposes:

FieldScopeHeaders
organization { webhooksInventory }Pipe, table, and organization-scoped webhooksReturns hasHeaders, but never returns header values
organization { webhooks }Organization-scoped webhooks onlyLegacy field that returns configured headers, including their values

Use webhooksInventory for organization-wide inventory and auditing. Existing integrations that need the legacy organization-scoped response can continue to use webhooks.

Key Notes

  • Admin only: Organization admins and super admins with manage_webhook permission can resolve this field. Other roles receive PERMISSION_DENIED. The organization object still resolves, but webhooksInventory is null.
  • Repo filter: repoIds accepts pipe and table IDs from the target organization. Passing an empty list (repoIds: []) returns INVALID_INPUT. IDs from other organizations are ignored.
  • Deleted webhooks: withDeleted: true includes soft-deleted webhooks. Webhooks owned by soft-deleted pipes or tables are returned regardless of withDeleted; this argument filters the webhook itself.
  • Sandbox exclusion: Webhooks from sandbox or draft-version pipes and tables are not returned.
  • Owner: origin is a summary (id, name, deletedAt) of the owning pipe or table, including soft-deleted ones, and is null for organization-scoped webhooks. Use scope to tell pipes from tables, and query the pipe or table directly for anything else.
  • Headers: hasHeaders reports whether custom headers are configured without exposing their names or values.
  • Ordering: Results are always ordered by webhook ID in ascending order, which provides deterministic pagination.
  • Pagination: Use first and after to page forward. Pages hold at most 50 webhooks (a larger first still returns at most 50), and totalCount covers all results that match the filters.
  • There is no filter for active/inactive webhooks, orphaned repos, search, actions, sort, or scope.