> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automate.ax/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# Connect Trello and receive verified board events

> Connect Trello with non-expiring OAuth 1.0 tokens, call uncovered REST endpoints, and avoid mutating Automate.ax-managed board webhooks.

Automate.ax connects Trello through OAuth 1.0 and manages the API key and user token for each integration account.

## Authorize Trello access

The connection prompt requests Trello's `read` and `write` scopes with `expiration=never`. `read` covers boards, Workspaces, cards, and related resources. `write` permits mutations and managed webhook creation. Automate.ax doesn't request Trello's separate `account` scope, so a connected account can't expose member email or modify member-level account data through this integration.

Trello doesn't issue a refresh token for this flow. Because Automate.ax requests `expiration=never`, the token has no scheduled expiration and remains valid until it is revoked or Trello otherwise rejects it. Members can revoke Automate.ax under **Applications** in their Trello account settings; Trello also supports deleting a token through its REST API. A revoked token returns `401 invalid token`, and the Trello account must be reconnected.

Automate.ax resolves the account token only inside account-backed actions and never places it in action inputs or outputs.

## Use Custom Fields

Trello's native Custom Fields require the board to belong to a Standard, Premium, or Enterprise Workspace. They aren't available in Free Workspaces, and Trello no longer offers the former Custom Fields Power-Up as a separate add-on. On a Free Workspace, listing a board's Custom Fields returns an empty array and creating one returns `403 Custom Fields Power-Up disabled for board`.

This provider prerequisite applies to every Custom Field action and trigger. Move the board to an eligible Workspace or upgrade its current Workspace before using those actions and triggers. See Trello's [Custom Fields plan requirements](https://support.atlassian.com/trello/docs/using-custom-fields/) and [Custom Fields API guide](https://developer.atlassian.com/cloud/trello/guides/rest-api/getting-started-with-custom-fields/).

## Call an uncovered endpoint

Use `getTrelloApi` inside a custom Trello-account-backed action when a provider endpoint doesn't have a packaged action. Supply a Zod schema for every successful response:

```ts automations/get-trello-board-actions.automation.ts theme={null}
import {
  automation,
  defineAction,
  markSignificant,
  onDashboardRun,
} from "automate.ax"
import { getTrelloApi } from "automate.ax/trello"
import { z } from "zod"

const listBoardActions = defineAction("List Trello board actions")
  .account("trello", "read")
  .input(z.object({ boardId: z.string() }))
  .output(z.object({ id: z.string(), type: z.string() }).array())
  .handler(async ({ account, input }) =>
    getTrelloApi(account.secret).request(`boards/${input.boardId}/actions`, {
      query: { limit: 50 },
      responseSchema: z.object({ id: z.string(), type: z.string() }).array(),
    }),
  )

export default automation("Inspect Trello activity", () => {
  const run = onDashboardRun({
    title: "Inspect Trello activity",
    fields: [
      {
        name: "boardId",
        type: "text",
        label: "Board ID",
        required: true,
      },
    ],
  })
  const actions = listBoardActions({ boardId: run.data.boardId })
  markSignificant(actions)
})
```

Paths are relative to `https://api.trello.com/1/`; the helper rejects another origin and adds the connected API key and token. Query values may be strings, numbers, or booleans. Plain request bodies are encoded as JSON. Pass `FormData` for a multipart request; don't set its `Content-Type` boundary yourself.

Successful responses are parsed as JSON and validated with `responseSchema`. Failures throw `TrelloApiError` with `status`, a provider or HTTP fallback `code`, an optional provider message, `Retry-After`, and available API-key and API-token rate-limit budgets. The helper doesn't turn provider failures into successful values.

## Receive verified board events

Board triggers create and remove Trello webhooks automatically. Trello probes the callback with `HEAD` before creation. Automate.ax verifies each `X-Trello-Webhook` value as the Base64 HMAC-SHA1 digest of the exact request body followed by the exact callback URL, using the Trello application secret. It also requires the delivered webhook ID to match the active managed source.

Trello retries a failed webhook delivery three times after 30, 60, and 120 seconds. It can disable a webhook after 30 consecutive days of failed delivery. Trello may also reject webhook creation on a model that has exceeded its provider limits and may delete an existing webhook after that model reaches `maxExceeded`.

Automate.ax uses the Trello action ID as the idempotency key for each emitted event type, so provider retries don't create duplicate deliveries for the same subscription. One Trello action can intentionally emit several event types: for example, moving a card emits the broad board event, the card-moved event, and the card-updated event. Subscribing the same automation to overlapping trigger types therefore runs it once for each matching subscription.

## Confirm Trello behavior

* [Authorization and token revocation](https://developer.atlassian.com/cloud/trello/guides/rest-api/authorization/)
* [REST API introduction](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/)
* [Webhooks, signatures, and retries](https://developer.atlassian.com/cloud/trello/guides/rest-api/webhooks/)
* [Rate limits and response headers](https://developer.atlassian.com/cloud/trello/guides/rest-api/rate-limits/)
* [Object and webhook limits](https://developer.atlassian.com/cloud/trello/guides/rest-api/limits/)
