INTERNAL · assets/fx/workflows/wf-hero.svg
One workflow, as a diagram and as JSON
Detect faces on upload, blur them only when one is found, compress, then store. Create a workflow →
- 01Detect facesIntelligence task
- 02Blur facesConditional transform
- 03CompressOutput transform
- 04StoreFinal destination
"name": "ugc-face-privacy-pipeline",
"next": [{
"name": "detect_faces",
"task": { "params": { "export": true } },
"next": [{
"name": "blur_faces",
"requirements": [{ "type": "and",
"conditions": [{
"task": "detect_faces",
"path": ["faces", "length"],
"condition": "gt",
"value": 0
}] }],
"next": [{ "name": "compress",
"next": [{ "name": "store" }] }]
}]
}]
}
The visual builder and API tree describe the same four-task workflow.
Conditional routing at every step
Each task reads the result of the one before it and decides whether to run.
Trigger on upload, run async, notify on completion
A workflow attaches to the upload policy, so it fires the moment a file arrives. Heavy jobs (transcodes, video moderation) run asynchronously. When the run resolves, the fs.workflow webhook closes the loop with per-task results. The queue and the poller are ours.
One key in storeTo connects the upload to the workflow.
The tasks you can chain
Group them by category and route between them conditionally. One declaration covers an image processing pipeline, a document processing workflow, or a media processing pipeline, and only the task list changes.
Transcoding
Transcode audio and video to delivery formats, which is the step a video processing pipeline is usually built around.
The destination is a set of parameters, not another pipeline.
The last step decides where the file lands
A pipeline ends with store, and that task takes its destination as parameters. Point it at S3, Azure, Google Cloud Storage, Dropbox, Rackspace, or Cloudinary, pick one of 23 AWS regions, then set container, path, and public or private access.
Leave it empty and the output stays in Filestack storage. Moving a pipeline between backends changes those parameters and nothing else.
Use cases with real pipelines
Each is a task chain you can declare once and run on every upload.
Scan, moderate, transform, publish
# fail any gate → quarantine
Detect, OCR, convert, notify
→ webhook to CRM
Transcode, thumbnail, notify
→ thumbnail → notify
Validate DPI, convert to print-ready
# reject the file that would fail at the press
Build vs buy the pipeline
The DIY pipeline is a queue, a worker pool, retry logic, state tracking, monitoring, and the on-call to run it. A workflow is a declaration you attach to uploads. One is a roadmap item and the other is an afternoon.