Create Dynamic Forms
Build a form with validation and data providers in 15 minutes
Forms are a way to dynamically configure input for workflows and expose them in a user-friendly way. Think about it this way: You have a script called offboard_user. It might need to accept a user_id to determine which Microsoft 365 user to offboard. With forms, you can expose the actual list of users to select from instead of typing in a user_id.
What You’ll Build
Section titled “What You’ll Build”A form that collects user information and executes a workflow to create the user.
Prerequisites
Section titled “Prerequisites”- Installation complete
- At least one workflow created (try First Workflow first)
Create the Form
Section titled “Create the Form”-
Navigate to Forms → Click + button
-
Fill in form details:
- Name: “Hello World”
- Description: “Hello from Bifrost”
- Linked Workflow: Select your workflow (e.g.,
hello_world)

-
Click Create
Add Fields
Section titled “Add Fields”-
From Workflow Parameters:
- Drag workflow parameters from left panel
- Fields marked with a star are ones required by the workflow
- Fields are auto-configure with correct types

-
Or use Field Types:
- Drag field type (Text, Email, Select, etc.)
- Configure manually
-
Arrange fields by dragging
Configure Field Settings
Section titled “Configure Field Settings”After you drag a field, the Edit Field screen will appear. This is also available from the form.
Basic Settings
Section titled “Basic Settings”- Field Name: Variable name for the field available to workflows
- Label: Display text
- Placeholder: Hint text in empty field
- Help Text: Additional guidance
- Required: Enforce field completion
- Default Value: Pre-populated value
You can find more comprehensive documentation in the How-To section under Forms.
Test the Form
Section titled “Test the Form”-
Click Save in form builder
-
Refresh the Forms list.
-
On your form, click Launch.

-
Fill out fields and click Submit
You’ll see the same execution details page you did when running the workflow directly.
Visibility Rules
Section titled “Visibility Rules”Show/hide fields conditionally:
// Show "Manager Email" only if "Is Manager" is checkedcontext.field.is_manager === true;
// Show "Department" only if "Employee Type" is "full-time"context.field.employee_type === "full-time";Use Data Providers
Section titled “Use Data Providers”Create dynamic dropdowns with data providers:
- Create
workspace/data_providers/departments.py:
from bifrost import data_provider, ExecutionContext
@data_provider( name="get_departments", description="List of departments", cache_ttl_seconds=600)async def get_departments(context: ExecutionContext): return [ {"label": "Engineering", "value": "eng"}, {"label": "Sales", "value": "sales"}, {"label": "Support", "value": "support"} ]-
In form builder, select field → Data Provider →
get_departments -
Save and test - dropdown auto-populates
Next Steps
Section titled “Next Steps”- Data Providers Guide - Advanced provider patterns
- Visibility Rules - Complex conditional logic
- HTML Content - Add rich text and formatting