File Updated
trigger.figma_file_update
TriggerBusiness appsconnection requiredruns in-engine
Creates a FILE_UPDATE webhook in the tenant's own Figma account on publish and starts one run per delivery, checked against the passcode Figma echoes.
Start a run when a Figma file is updated. Figma raises FILE_UPDATE within 30 minutes of editing going quiet in the file, not on every keystroke.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- OAuth 2.0
- Providers
- Figma
- Secret shape
- the OAuth2 client_id / client_secret / refresh_token triple with the webhooks:write scope, or a personal access token
- Config it needs
- base_url, plan_api_id
- Resolved by
- config.connection_id, else node.connection_id
- Note
- Publishing needs MANTLE_APP_PUBLIC_BASE_URL set to an HTTPS URL Figma can reach; Figma refuses an endpoint it cannot call.
Configuration
3 fields, 2 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
context What to watch: one file, every file in a project, or every file in a team. Pick 'file' to watch a single design. | string | Yes | — | one of "team", "project", "file" | — |
context_id The file key, project id or team id to watch, matching the context above. | string | Yes | — | — | aBcDeFgHiJkLmNoPqRsTuV |
description The name this webhook gets in Figma, so it is recognisable in the account later. Max 150 characters. | string | No | — | ≤ 150 characters | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"context_id": "aBcDeFgHiJkLmNoPqRsTuV"
}Output
One shape.
figma file update
Figma's FILE_UPDATE delivery, minus the passcode.
| Field | Type | Example |
|---|---|---|
event_type Always FILE_UPDATE for this trigger. | string | — |
file_key The key of the file that was updated. | string | — |
file_name The name of the file that was updated. | string | — |
timestamp UTC ISO 8601 time at which Figma raised the event. | string | — |
webhook_id The id of the Figma webhook that delivered this event. | string | — |
{
"event_type": "FILE_UPDATE",
"file_key": "aBcDeFgHiJkLmNoPqRsTuV",
"file_name": "Design system",
"timestamp": "2026-09-09T10:15:00Z",
"webhook_id": "1234567"
}Notes
- Publishing creates the webhook in Figma; unpublishing, disabling or archiving deletes it, so a workflow that is off is off at Figma too.
- Figma echoes the passcode set at registration in every delivery; Mantle generates one, stores it through the SecretBroker and compares it on each call, and the passcode is stripped from the payload the run sees.
- The idempotency key is webhook id + file key + Figma's own timestamp, so a retried delivery joins the run it already started.
See File Updated run in a workflow.
In a technical demo we add the Figma connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.