Trello Webhooks API

The Trello Webhooks API allows developers to receive real-time notifications when changes occur on Trello models such as boards, lists, and cards. Rather than polling the REST API for updates, webhooks push event data to a specified callback URL via HTTP POST requests containing JSON payloads. Webhook requests are signed with HMAC-SHA1 for verification, and webhooks are scoped to the permissions of the token used to create them.

AsyncAPI Specification

trello-webhooks-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: Trello Webhooks Events
  description: >-
    The Trello Webhooks API delivers real-time notifications when changes
    occur on Trello models such as boards, lists, cards, and members.
    Rather than polling the REST API for updates, webhooks push event data
    to a specified callback URL via HTTP POST requests containing JSON
    payloads. Each webhook is scoped to a single model and fires for all
    action types on that model. Webhook requests include an HMAC-SHA1
    signature in the X-Trello-Webhook header for verification, computed
    by concatenating the request body with the callback URL and hashing
    with the application secret.
  version: '1'
  contact:
    name: Atlassian Developer Support
    url: https://developer.atlassian.com/support
  externalDocs:
    description: Trello Webhooks Documentation
    url: https://developer.atlassian.com/cloud/trello/guides/rest-api/webhooks/
servers:
  trello:
    url: 'https://api.trello.com/1'
    protocol: https
    description: >-
      Trello API server that manages webhook registrations. Webhook
      callbacks are sent from Trello servers to your registered callback URL.
    security:
      - apiKeyToken: []
channels:
  /webhook:
    description: >-
      Callback endpoint that receives webhook events from Trello via HTTP POST
      when any action occurs on the watched model. The callback URL must return
      a 200 status code on HEAD requests for webhook creation and on POST
      requests to acknowledge delivery.
    publish:
      operationId: receiveWebhookEvent
      summary: Receive a Trello webhook event
      description: >-
        Trello sends an HTTP POST request to the registered callback URL
        whenever an action occurs on the watched model. The payload contains
        the action that triggered the webhook and the current state of the
        model. Webhook callbacks cannot be filtered by action type; all
        actions on the model are delivered and must be filtered by the
        consumer.
      message:
        oneOf:
          - $ref: '#/components/messages/BoardEvent'
          - $ref: '#/components/messages/CardEvent'
          - $ref: '#/components/messages/ListEvent'
          - $ref: '#/components/messages/MemberEvent'
          - $ref: '#/components/messages/ChecklistEvent'
          - $ref: '#/components/messages/OrganizationEvent'
          - $ref: '#/components/messages/LabelEvent'
          - $ref: '#/components/messages/CommentEvent'
          - $ref: '#/components/messages/AttachmentEvent'
          - $ref: '#/components/messages/CustomFieldEvent'
components:
  securitySchemes:
    apiKeyToken:
      type: httpApiKey
      in: query
      name: key
      description: >-
        Trello API key and token used for webhook management. The HMAC-SHA1
        signature in the X-Trello-Webhook header should be validated using
        your application secret to verify the authenticity of incoming
        webhook callbacks.
  messages:
    BoardEvent:
      name: BoardEvent
      title: Board Event
      summary: >-
        An action that occurred on a board, such as creating, updating,
        closing, or deleting a board.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: >-
              HMAC-SHA1 signature for verifying the webhook payload. Computed
              by concatenating the raw request body with the callback URL and
              hashing with base64-encoded HMAC-SHA1 using the application
              secret as the key.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
      examples:
        - name: updateBoard
          summary: Board name was updated
          payload:
            action:
              id: '5a1234567890abcdef123456'
              idMemberCreator: '5a9876543210fedcba654321'
              type: updateBoard
              date: '2026-03-20T12:00:00.000Z'
              data:
                board:
                  id: '5a1111111111111111111111'
                  name: Updated Board Name
                  shortLink: aBcDeFgH
                old:
                  name: Old Board Name
            model:
              id: '5a1111111111111111111111'
              name: Updated Board Name
              closed: false
    CardEvent:
      name: CardEvent
      title: Card Event
      summary: >-
        An action that occurred on a card, such as creating, updating, moving,
        archiving, or deleting a card.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
      examples:
        - name: createCard
          summary: A new card was created
          payload:
            action:
              id: '5a2234567890abcdef123456'
              idMemberCreator: '5a9876543210fedcba654321'
              type: createCard
              date: '2026-03-20T12:05:00.000Z'
              data:
                board:
                  id: '5a1111111111111111111111'
                  name: My Board
                  shortLink: aBcDeFgH
                list:
                  id: '5a2222222222222222222222'
                  name: To Do
                card:
                  id: '5a3333333333333333333333'
                  name: New Task
                  idShort: 42
                  shortLink: xYzWvU12
            model:
              id: '5a1111111111111111111111'
              name: My Board
    ListEvent:
      name: ListEvent
      title: List Event
      summary: >-
        An action that occurred on a list, such as creating, renaming,
        archiving, or moving a list.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
    MemberEvent:
      name: MemberEvent
      title: Member Event
      summary: >-
        An action involving a member, such as adding or removing a member
        from a board or card.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
    ChecklistEvent:
      name: ChecklistEvent
      title: Checklist Event
      summary: >-
        An action involving a checklist or check item, such as creating a
        checklist, adding a check item, or completing a check item.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
    OrganizationEvent:
      name: OrganizationEvent
      title: Organization Event
      summary: >-
        An action that occurred on an organization (workspace), such as
        updating settings or managing members.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
    LabelEvent:
      name: LabelEvent
      title: Label Event
      summary: >-
        An action involving a label, such as creating, updating, or deleting
        a label, or adding or removing a label from a card.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
    CommentEvent:
      name: CommentEvent
      title: Comment Event
      summary: >-
        An action involving a comment on a card, such as adding, updating,
        or deleting a comment.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
    AttachmentEvent:
      name: AttachmentEvent
      title: Attachment Event
      summary: >-
        An action involving an attachment, such as adding or removing an
        attachment from a card.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
    CustomFieldEvent:
      name: CustomFieldEvent
      title: Custom Field Event
      summary: >-
        An action involving custom fields, such as creating a custom field
        definition or setting a custom field value on a card.
      contentType: application/json
      headers:
        type: object
        properties:
          X-Trello-Webhook:
            type: string
            description: HMAC-SHA1 signature for verification.
      payload:
        $ref: '#/components/schemas/WebhookPayload'
  schemas:
    WebhookPayload:
      type: object
      description: >-
        The top-level payload delivered to a webhook callback URL. Contains
        the action that triggered the webhook and the current state of the
        watched model.
      required:
        - action
        - model
      properties:
        action:
          $ref: '#/components/schemas/WebhookAction'
        model:
          type: object
          description: >-
            The current state of the model that the webhook is watching. The
            structure depends on the model type (board, card, list, member,
            or organization).
    WebhookAction:
      type: object
      description: >-
        Represents the action (event) that triggered the webhook callback.
      required:
        - id
        - type
        - date
        - data
      properties:
        id:
          type: string
          description: The unique identifier for the action.
        idMemberCreator:
          type: string
          description: The ID of the member who performed the action.
        type:
          type: string
          description: >-
            The type of action that was performed. Common types include
            addAttachmentToCard, addChecklistToCard, addLabelToCard,
            addMemberToBoard, addMemberToCard, commentCard, convertToCardFromCheckItem,
            copyCard, createBoard, createCard, createChecklist, createLabel,
            createList, deleteAttachmentFromCard, deleteCard, deleteCheckItem,
            deleteComment, deleteLabel, moveCardFromBoard, moveCardToBoard,
            moveListFromBoard, moveListToBoard, removeChecklistFromCard,
            removeLabelFromCard, removeMemberFromBoard, removeMemberFromCard,
            updateBoard, updateCard, updateCheckItem, updateCheckItemStateOnCard,
            updateChecklist, updateComment, updateCustomFieldItem, updateLabel,
            updateList, and updateMember.
          enum:
            - addAttachmentToCard
            - addChecklistToCard
            - addLabelToCard
            - addMemberToBoard
            - addMemberToCard
            - commentCard
            - convertToCardFromCheckItem
            - copyBoard
            - copyCard
            - copyChecklist
            - createBoard
            - createCard
            - createChecklist
            - createLabel
            - createList
            - createOrganization
            - deleteAttachmentFromCard
            - deleteBoardInvitation
            - deleteCard
            - deleteCheckItem
            - deleteComment
            - deleteLabel
            - deleteOrganizationInvitation
            - disablePlugin
            - disablePowerUp
            - emailCard
            - enablePlugin
            - enablePowerUp
            - makeAdminOfBoard
            - makeAdminOfOrganization
            - makeNormalMemberOfBoard
            - makeNormalMemberOfOrganization
            - makeObserverOfBoard
            - memberJoinedTrello
            - moveCardFromBoard
            - moveCardToBoard
            - moveListFromBoard
            - moveListToBoard
            - removeChecklistFromCard
            - removeLabelFromCard
            - removeMemberFromBoard
            - removeMemberFromCard
            - removeMemberFromOrganization
            - unconfirmedBoardInvitation
            - unconfirmedOrganizationInvitation
            - updateBoard
            - updateCard
            - updateCheckItem
            - updateCheckItemStateOnCard
            - updateChecklist
            - updateComment
            - updateCustomFieldItem
            - updateLabel
            - updateList
            - updateMember
            - updateOrganization
            - voteOnCard
        date:
          type: string
          format: date-time
          description: The date and time the action was performed.
        data:
          type: object
          description: >-
            Context data about the action, including references to the
            objects involved.
          properties:
            text:
              type: string
              description: Text content of the action, such as comment text.
            board:
              type: object
              description: The board involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
                shortLink:
                  type: string
            card:
              type: object
              description: The card involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
                idShort:
                  type: integer
                shortLink:
                  type: string
                idList:
                  type: string
                closed:
                  type: boolean
                desc:
                  type: string
                due:
                  type: string
                  format: date-time
                pos:
                  type: number
            list:
              type: object
              description: The list involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
            listBefore:
              type: object
              description: >-
                The list a card was moved from (present on card move actions).
              properties:
                id:
                  type: string
                name:
                  type: string
            listAfter:
              type: object
              description: >-
                The list a card was moved to (present on card move actions).
              properties:
                id:
                  type: string
                name:
                  type: string
            member:
              type: object
              description: The member involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
            checklist:
              type: object
              description: The checklist involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
            checkItem:
              type: object
              description: The check item involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
                state:
                  type: string
                  enum:
                    - complete
                    - incomplete
            label:
              type: object
              description: The label involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
                color:
                  type: string
            attachment:
              type: object
              description: The attachment involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
                url:
                  type: string
                  format: uri
            customField:
              type: object
              description: The custom field involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
                type:
                  type: string
            customFieldItem:
              type: object
              description: The custom field value that was changed.
              properties:
                id:
                  type: string
                idCustomField:
                  type: string
                idModel:
                  type: string
                value:
                  type: object
            organization:
              type: object
              description: The organization involved in the action.
              properties:
                id:
                  type: string
                name:
                  type: string
            old:
              type: object
              description: >-
                The previous values of fields that were changed in an update
                action.
        display:
          type: object
          description: Display information for rendering the action.
          properties:
            translationKey:
              type: string
            entities:
              type: object
        memberCreator:
          type: object
          description: The member who performed the action.
          properties:
            id:
              type: string
            username:
              type: string
            fullName:
              type: string
            initials:
              type: string
            avatarHash:
              type: string
            avatarUrl:
              type: string
              format: uri