Deploy your workflow as an embeddable form that users can fill out on your website or share via link. Form submissions trigger your workflow with the form trigger type.
Overview
Form deployment turns your workflow's Input Format into a responsive form that can be:
- Shared via a direct link (e.g.,
https://sim.ai/form/my-survey) - Embedded in any website using an iframe
When a user submits the form, it triggers your workflow with the form data.
Forms derive their fields from your workflow's Start block Input Format. Each field becomes a form input with the appropriate type.
Creating a Form
- Open your workflow and click Deploy
- Select the Form tab
- Configure:
- URL: Unique identifier (e.g.,
contact-form→sim.ai/form/contact-form) - Title: Form heading
- Description: Optional subtitle
- Form Fields: Customize labels and descriptions for each field
- Authentication: Public, password-protected, or email whitelist
- Thank You Message: Shown after submission
- URL: Unique identifier (e.g.,
- Click Launch
Field Type Mapping
| Input Format Type | Form Field |
|---|---|
string | Text input |
number | Number input |
boolean | Toggle switch |
object | JSON editor |
array | JSON array editor |
files | File upload |
Access Control
| Mode | Description |
|---|---|
| Public | Anyone with the link can submit |
| Password | Users must enter a password |
| Email Whitelist | Only specified emails/domains can submit |
For email whitelist:
- Exact:
user@example.com - Domain:
@example.com(all emails from domain)
Embedding
Direct Link
https://sim.ai/form/your-identifierIframe
<iframe
src="https://sim.ai/form/your-identifier"
width="100%"
height="600"
frameborder="0"
title="Form"
></iframe>API Submission
Submit forms programmatically:
curl -X POST https://sim.ai/api/form/your-identifier \
-H "Content-Type: application/json" \
-d '{
"formData": {
"name": "John Doe",
"email": "john@example.com"
}
}'const response = await fetch('https://sim.ai/api/form/your-identifier', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
formData: {
name: 'John Doe',
email: 'john@example.com'
}
})
});
const result = await response.json();
// { success: true, data: { executionId: '...' } }Protected Forms
For password-protected forms:
curl -X POST https://sim.ai/api/form/your-identifier \
-H "Content-Type: application/json" \
-d '{ "password": "secret", "formData": { "name": "John" } }'For email-protected forms:
curl -X POST https://sim.ai/api/form/your-identifier \
-H "Content-Type: application/json" \
-d '{ "email": "allowed@example.com", "formData": { "name": "John" } }'Troubleshooting
"No input fields configured" - Add Input Format fields to your Start block.
Form not loading in iframe - Check your site's CSP allows iframes from sim.ai.
Submissions failing - Verify the identifier is correct and required fields are filled.