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.

FieldTypeRequiredDefaultConstraintsExample
context
What to watch: one file, every file in a project, or every file in a team. Pick 'file' to watch a single design.
stringYes—one of "team", "project", "file"—
context_id
The file key, project id or team id to watch, matching the context above.
stringYes——aBcDeFgHiJkLmNoPqRsTuV
description
The name this webhook gets in Figma, so it is recognisable in the account later. Max 150 characters.
stringNo—≤ 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.

FieldTypeExample
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.