DOCUMENT OPS

Publish Figma export slices to R2 with a versioned Coda manifest

When a Figma file is published, pulls every export-marked slice, uploads each to Cloudflare R2 under a content-hashed path.

CategoryDocument Ops
Enginesim
Difficultyintermediate
Triggerevent
Steps5
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerFigma file publishedFigmaFigma
  • ActionRead file metadata and export-marked nodesFigmaFigma
  • ActionDownload each slice as an image assetFigmaFigma
  • ActionUpload slices to R2 under content-hashed keysCloudflareCloudflare R2
  • OutputAppend version rows to Coda manifest tableCodaCoda

What it does

Turns a Figma "publish" event into a clean, versioned asset drop. Every node marked for export is downloaded at its configured scale, uploaded to R2 under a content-hashed key, and logged as a new row in a Coda manifest so designers and engineers always know the live CDN URL for each asset.

When to use it

Use it when your design system ships icons, illustrations, or marketing slices straight from Figma and you want a single source of truth for what is live on the CDN — without anyone hand-exporting PNGs or pasting links into a doc.

How it works

  1. 1A Figma publish webhook fires for the watched library file.
  2. 2The flow reads file metadata and collects all nodes flagged for export.
  3. 3It downloads each slice as an image asset at its export scale.
  4. 4Each asset is uploaded to R2 under a key derived from its content hash, so identical bytes dedupe and changed bytes get a fresh URL.
  5. 5A row per asset (name, node id, hash, CDN URL, version) is appended to the Coda manifest table for lookup.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect FigmaFiles, frames, comments, assets.
  2. 2
    Connect Cloudflare R2Object storage, S3-compatible.
  3. 3
    Connect CodaDocs, packs, automations.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.