Skip to content
AKITIx Solutions

Formio and Camunda integration without the glue code

3 min read · Updated Nov 11, 2026

Connecting Formio forms to Camunda processes usually means a webhook service per project. Here is what that code does, where it breaks, and how to avoid writing it again.

Two good tools with a gap between them

Formio is a strong form builder: forms are JSON schemas, rendered anywhere, with validation, conditional logic and file uploads. Camunda is a strong workflow engine: BPMN processes, user tasks, decisions and timers. Most projects that use both have to connect them, and that connection is where the time goes.

What the glue code does

On a typical project, someone writes a small service between the two. When a form is submitted, Formio calls it (for example through a webhook action). The service then has to:

  1. Receive and authenticate the submission.
  2. Pick the process: which BPMN process, which version, start a new instance or complete a waiting task.
  3. Map the fields: a Formio field called applicantEmail becomes the process variable email; a nested data grid becomes a list.
  4. Convert types: dates, numbers stored as strings, checkboxes, file references.
  5. Handle errors: retry when the engine is unreachable, report when a submission is rejected.
  6. Go the other way: load the right form, prefilled with process data, when a user task opens.

None of this is hard on its own. It takes two to five days per project, and it is written again for the next project, slightly differently.

Where it breaks

  • Renamed fields. A form designer renames a field; the mapping silently stops filling a variable, and a gateway condition takes the wrong branch.
  • Version drift. A new process version is deployed, but the service still starts the old one, or the reverse.
  • Silent failures. The engine rejects a request at night; the webhook returns an error nobody reads; a client calls three days later.
  • One person knows. The mapping lives in code and in one engineer's head, with no audit trail when something goes wrong.

What a sound integration looks like

Whatever you build or buy, look for these properties:

  • Mappings as configuration, visible and reviewable, not buried in code.
  • Automatic mapping where form fields and variables share a name, so only the exceptions need attention.
  • Version pinning: each form is tied to a known process version.
  • A test path: try a mapping with sample data before real users submit.
  • Visible failures: an error appears where the process stopped, with a way to retry.
  • A record of what data entered each case and when.

A note on Camunda Forms

Camunda 8 has its own forms, built with the Camunda form editor. They suit simple task forms well. Teams often keep Formio when they already have a library of Formio forms, need public-facing forms outside Camunda, or rely on Formio components and validation. The integration question remains in that case.

In Bridge

Bridge's Variable Mapper matches Formio fields to Camunda variables visually, with automatic mapping where names agree, and you test a mapping without writing a webhook. Each form and process is pinned to a version, so a new deployment does not silently change what a form starts.

When something fails, the incident shows on the live BPMN diagram with its error context and a one-click retry. Every variable from every form submission is captured at the moment of entry, so the path from Formio to Camunda and back can be traced for each case.

Variable MapperForm fields matched to process variables automatically.Sample data
See it in AKITI Bridge