Trello
Connect a Trello board to drive its cards from a process. metamorphOS calls the Trello REST API to create, move, comment on and archive cards, and Trello notifies metamorphOS by webhook whenever anything on the board changes.
What you can do
- Cards: create, view, update, archive and delete cards.
- Move cards: advance a card to another list — this is how a process walks work across the board.
- Comments, labels, members: comment on a card, apply a label, assign a member.
- Lists: read a board’s lists, and the cards in a list.
- Board events: trigger a process automatically when a card is created, moved, commented on, or otherwise changed.
Before you start
You need a Trello account with access to the board you want to automate. The API key you create belongs to a Power-Up, which Trello requires even for private, internal automation.
Set up Trello
-
Create a Power-Up. Go to trello.com/power-ups/admin and choose New. Give it a name (for example,
metamorphOS) and pick the Workspace that owns the board. You do not need to publish it. -
Generate the API key. Open the Power-Up’s API key tab and select Generate a new API key. That tab then shows two values: the API key (public — Trello sends it on every call) and the Secret (private). Copy both. The Secret is the key Trello signs webhooks with; you need it only if you want Trello to trigger processes, and it is never part of the login.
-
Generate a token. Do not use the bare Token link on that tab — it does not pin an expiration, and Trello does not document what you get by default. Instead, put your API key into this URL, open it, approve, and copy the token it shows you:
https://trello.com/1/authorize?key=YOUR_API_KEY&name=metamorphOS&scope=read,write&expiration=never&response_type=tokenscope=read,writeis the minimum: reading a board’s lists and cards, and creating, moving and deleting cards.
[!WARNING] Trello has no token refresh. A token that carries a
1hour,1dayor30daysexpiration stops working when it lapses, and the connector then fails withinvalid tokenuntil a human authorizes a new one.expiration=neverin the URL above is what keeps the connector alive.
Connect in metamorphOS
Activate the Trello connector from the marketplace, add an account, and provide:
- Token: the token from step 3. This is the secret half of the credential.
- API key (connector parameter
key): the API key from step 2. Paste it as shown on the Power-Up page — it is public, and Trello sends it alongside the token on every call. - Webhook signing secret: the Secret from step 2 — the field literally labelled Secret on the Power-Up’s API key tab. That value is the webhook key; Trello does not issue a separate one, and there is nowhere else to look for it. Only needed if you want Trello to trigger processes.
Paste each value exactly as Trello shows it. Nothing needs to be combined or reformatted.
The Power-Up page shows three values and they are not interchangeable. The API key and the token are the login, and they are two separate fields above. The secret is not part of the login at all — Trello uses it only to sign webhook deliveries, so it belongs in the webhook field, and you can leave it empty if you only make outbound calls.
Trigger processes from board changes
Registering the webhook is a one-time setup step per board, not something a process does each run. Do it once and leave it in place — every process that listens for board events shares it.
-
Copy the inbound receiver URL metamorphOS shows for the Trello connector. It must be reachable over HTTPS: Trello sends it a test request at registration and refuses the webhook if it does not answer.
-
Register the subscription by running the Register Trello Webhook process once, with that URL as the callback and your board id as the model (a board id watches every card on the board).
Trello has no screen for this — its webhooks are API-only — so this one-step process is the click-path for the single call Trello requires. If you would rather do it from a terminal, the equivalent is:
curl -X POST "https://api.trello.com/1/webhooks/" \ -d "key=YOUR_API_KEY" -d "token=YOUR_TOKEN" \ -d "idModel=YOUR_BOARD_ID" \ -d "callbackURL=YOUR_RECEIVER_URL" \ -d "description=metamorphOS"Keep the returned webhook id — it is what removes the subscription later.
-
Supply the Secret from the Power-Up’s API key tab as the webhook signing secret, so metamorphOS can verify each delivery is genuinely from Trello.
That is the whole setup. From then on, processes simply listen — they neither create nor delete the subscription.
Trello signs each delivery so metamorphOS can confirm it is genuine, and rejects any delivery that fails verification.
Pick the event you want
You do not have to catch every board change and sort it out yourself. Each lifecycle phase has its own trigger, so a process listens only for the thing it cares about:
| Trigger | Fires when |
|---|---|
| Card Created | a card is added to the board |
| Card Moved | a card changes list — gives you the list it left and the list it landed in, by name |
| Card Completed | a card’s due date is ticked complete |
| Card Archived / Card Restored | a card is archived, or brought back |
| Card Renamed | a card’s title changes |
| Card Commented | someone comments |
| Card Member Assigned / Unassigned | a member is added to or removed from a card |
| Card Label Added / Removed | a label is applied or removed |
| Checklist Item Completed | an item inside a card is ticked off |
| Card Deleted | a card is permanently deleted |
| Board Activity | everything, unsorted — use it only if none of the above fit |
Decide what “done” means
Trello has no built-in status field and no notion of a finished card. There is nothing in Trello that says a card is done, so you have to tell metamorphOS what done means on your board. There are three honest answers, and the right one depends on how your team already works.
A card reaches a particular list. This is what most teams mean by done — the
card lands in “Done”, “Shipped”, “Approved”. Use the Card Moved trigger and
condition it on the destination list’s name. Trello identifies lists by id, but
the trigger hands you the list name as well, so you can simply match on
Done (or whatever your column is called). This is the flexible option: your
column names are yours, and different boards can mean different things.
[!NOTE] The list name is the one piece metamorphOS cannot guess for you — a board that calls its final column “Shipped” is just as valid as one that calls it “Done”. That is why this lives in your process’s trigger condition rather than in the connector.
A card’s due date is ticked complete. The Card Completed trigger. This is the only place Trello itself records completion, so it works on any board without configuration — but only if your team actually uses due dates.
A card is archived. The Card Archived trigger. Be careful with this one: archiving means “off the board”, not “succeeded”. Teams archive abandoned and duplicate cards too, so this fires on failure as often as on success.
Most setups use the first. If you are unsure, start with Card Moved into your final column.
Good to know
- Deleting a card is permanent. To keep a card recoverable, archive it instead (update the card and mark it closed).
- Labels and members must already exist on the board before you can apply or assign them; the connector attaches existing ones rather than creating new ones.
- List ids, not list names. Cards are created into, and moved between, lists
identified by id. Read a board’s lists first to turn a column name like
In Progressinto the id the card actions need. - Trello revokes tokens from Account → Applications; a revoked token fails the same way an expired one does, and is fixed by connecting a new token.