FormForge

Workflows

Workflows are post-submission actions that fire after a form entry has been validated and stored. They let you send emails, post to chat platforms, call webhooks, and more — all without writing custom code.

Overview

Every form can have one or more workflows attached. After a visitor submits a form and the submission passes all validation rules, FormForge saves the entry and then runs each enabled workflow in the background. The visitor receives their success response immediately — workflows never delay the page response.

If a workflow fails at runtime, the submission itself is not rolled back. Other workflows on the same form continue to run independently.

Execution Order

Workflows run in the order they appear in the backoffice. However, because they execute in the background, you should not rely on one workflow completing before another starts.

Email Notification

The email notification workflow sends an email to one or more recipients whenever a form is submitted. This is the most common workflow — typically used to alert your team that a new enquiry has arrived.

Settings

FieldDescription
ToComma-separated list of recipient email addresses
CCComma-separated CC addresses (optional)
BCCComma-separated BCC addresses (optional)
SubjectEmail subject line — supports tokens
From NameDisplay name of the sender (optional)
From EmailSender address — must be authorized in your SMTP config (optional)
Reply-To FieldSelect an email field on the form — the submitted email address is used as the Reply-To header (optional)
Body TemplateCustom HTML body — supports tokens. If left empty, an auto-generated HTML table with all field labels and values is used (optional)
Email TemplateSelect an email template to wrap the body content (optional)
Default Body

When no body template is specified, FormForge generates a clean HTML table listing every field label and its submitted value. File upload fields include the original filename and file size.

Autoresponder

The autoresponder workflow sends a confirmation email to the person who submitted the form. Unlike the email notification (which goes to your team), this goes to the visitor — making it ideal for order confirmations, thank-you messages, and follow-up instructions.

Settings

FieldDescription
To FieldSelect an email field on the form — the submitted value becomes the recipient address
SubjectEmail subject line — supports tokens
From NameDisplay name of the sender (optional)
From EmailSender address (optional)
Body TemplateCustom HTML body — supports tokens (optional)
Email TemplateSelect an email template to wrap the body (optional)
Important

The autoresponder is silently skipped if the selected email field is empty or does not contain a valid email address. This is by design — for example, when the email field is optional and the visitor leaves it blank.

Webhooks

The webhook workflow sends the submission data as a JSON payload to any external URL after a form is submitted. Use this to integrate with CRMs, marketing platforms, databases, or any service that accepts incoming HTTP requests.

Settings

FieldDescription
URLThe HTTPS endpoint to send data to
Secret Header NameName of a custom header to include for authentication (e.g. X-Webhook-Secret) (optional)
Secret Header ValueValue of the secret header (optional)

Payload Format

The webhook sends a POST request with Content-Type: application/json and the following body:

{
  "formId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "formAlias": "contact-form",
  "submissionId": "f9e8d7c6-b5a4-3210-fedc-ba0987654321",
  "submittedUtc": "2026-04-14T08:30:00.000Z",
  "values": {
    "name": "Jane Smith",
    "email": "[email protected]",
    "message": "I'd like to learn more about your enterprise plan.",
    "priority": "high"
  }
}
Security

Only HTTPS URLs are allowed — plain HTTP is rejected. Webhook URLs pointing to private or internal IP addresses are also blocked. Use a secret header to verify that incoming requests originate from FormForge.

Slack

The Slack workflow posts a rich notification to a Slack channel using an incoming webhook URL. The message includes the form name, submission timestamp, and all submitted field values in a clean, structured format.

Settings

FieldDescription
Webhook URLSlack incoming webhook URL (starts with https://hooks.slack.com/)
ChannelOptional channel override (e.g. #sales-leads). If omitted, the message goes to the channel configured in the Slack webhook.

Microsoft Teams

The Teams workflow posts a notification to a Microsoft Teams channel via an incoming webhook connector. The message includes the form name, submission timestamp, and all submitted field values.

Settings

FieldDescription
Webhook URLTeams incoming webhook URL

Discord

The Discord workflow posts a rich embed message to a Discord channel via a webhook URL. The message includes the form name, submission timestamp, and all submitted field values.

Settings

FieldDescription
Webhook URLDiscord webhook URL
UsernameOptional bot display name override. If omitted, the webhook uses its default name.
Character Limit

Discord has a 1024-character limit on embed field values. If a submitted value exceeds this limit, it is truncated. This typically only affects large textarea fields.

Conditions

Any workflow can include a condition that determines whether it should run. The condition evaluates against the submitted field values — if it does not match, the workflow is skipped entirely.

To add a condition, select a field, choose an operator, and (for most operators) enter a value to compare against.

Supported Operators

OperatorDescription
equalsField value exactly matches the condition value (case-insensitive)
notequalsField value does not match the condition value
containsField value contains the condition value as a substring
isemptyField value is null, empty, or whitespace-only (no comparison value needed)
isnotemptyField value is present and non-empty (no comparison value needed)

These are the same operators available for field conditional visibility rules, ensuring a consistent experience across FormForge.

Example

You could configure a Slack workflow with the condition: field priority, operator equals, value urgent. This way the Slack notification only fires when a visitor selects “urgent” as their priority.

Similarly, you could set a webhook condition to isnotempty on a companyName field, so the webhook only fires when the visitor has provided a company name.

Email Templates

Email templates are reusable HTML wrappers that provide consistent branding across all email workflows. Instead of duplicating header and footer markup in every workflow, you create a template once and reference it from any email notification or autoresponder.

A template is a standard HTML document with a {body} placeholder where the email content will be injected.

Required Placeholder

Every email template must contain exactly one {body} placeholder. At send time, FormForge replaces this placeholder with the workflow-generated content (either the auto-generated field table or your custom body template). Templates without a {body} placeholder will fail validation.

Example Template

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <style>
    body { font-family: Arial, sans-serif; margin: 0; padding: 0; background: #f4f4f4; }
    .wrapper { max-width: 600px; margin: 0 auto; background: #ffffff; }
    .header { background: #1a1a2e; color: #ffffff; padding: 24px 32px; }
    .header h1 { margin: 0; font-size: 20px; font-weight: 600; }
    .content { padding: 32px; }
    .footer { background: #f9f9f9; padding: 16px 32px; font-size: 12px; color: #888888; text-align: center; }
  </style>
</head>
<body>
  <div class="wrapper">
    <div class="header">
      <h1>Acme Corp</h1>
    </div>
    <div class="content">
      {body}
    </div>
    <div class="footer">
      &copy; 2026 Acme Corp. All rights reserved.
    </div>
  </div>
</body>
</html>

Managing Templates

Email templates can be created and managed in the FormForge section of the backoffice, which includes a dedicated template editor with live preview. Templates are also included in FormForge’s export/import system — when you export a form that references a template, the template is bundled automatically.

Token Reference

Tokens are dynamic placeholders that get replaced with real values when the email is sent. You can use them in email subjects, body templates, and email template HTML.

Available Tokens

TokenReplaced With
{form.name}The display name of the form
{form.alias}The form’s unique alias
{submittedUtc}Timestamp of the submission (e.g. 2026-04-14T08:30:00.000Z)
{fieldAlias}The submitted value of any field. For example, {name} resolves to the value of the field with alias name.

Where Tokens Work

LocationExample
Email subject (notification & autoresponder)New lead from {name}{form.name}
Email body template<p>Hi {name}, thanks for reaching out.</p>
Email template HTMLTokens in the outer template wrapper are also resolved
Token Tips

Tokens are case-sensitive — {Name} and {name} are different. If a token does not match any field or built-in value, it is left as-is in the output. If a matched field value is empty, the token is replaced with an empty string.