Portal Community
Dynamic Assignment In many of these examples, the assigned_to property is set dynamically — the form is generated by an earlier step in the workflow that knows the correct assignee. In those cases, the Form Trigger is not the first node; it is placed after a data-lookup node that resolves the user ID or email.

Example 1 — Employee Leave Request

An employee initiates a leave request from the HR self-service portal. The Form Trigger generates a form pre-addressed to the requesting employee. The form expires in 7 days to prevent stale requests from lingering in the system.

{
  "node_type": "FormTrigger",
  "name": "Employee Leave Request Form",
  "config": {
    "title": "Employee Leave Request",
    "description": "Please complete this form to submit a leave request. Your manager will be notified for approval once you submit.",
    "submit_button_label": "Submit Leave Request",
    "assigned_to": { "type": "user", "user_id": "{{ $input.employee_user_id }}" },
    "expires_in_hours": 168,
    "on_expiry": "cancel",
    "allow_file_uploads": false,
    "send_confirmation_email": true,
    "success_message": "Your leave request has been submitted. You will receive an email once your manager reviews it.",
    "form_schema": {
      "type": "object",
      "required": ["leave_type", "start_date", "end_date"],
      "properties": {
        "leave_type": { "type": "string", "title": "Leave Type", "enum": ["Annual Leave", "Sick Leave", "Parental Leave", "Bereavement Leave", "Unpaid Leave"] },
        "start_date": { "type": "string", "format": "date", "title": "Start Date" },
        "end_date": { "type": "string", "format": "date", "title": "End Date" },
        "reason": { "type": "string", "title": "Notes for Manager", "maxLength": 500 },
        "covering_colleague": { "type": "string", "format": "email", "title": "Covering Colleague Email" }
      }
    }
  }
}
Expected Outcome: The employee receives an email with a secure form link. They fill in their leave dates and type, and click "Submit Leave Request." The workflow resumes with the form data, calculates the number of leave days, checks the leave balance in the HRMS, and routes the request to their direct manager for approval via a separate Human-in-the-Loop approval node.

Example 2 — New Customer Onboarding Intake

After a deal closes in Salesforce, the workflow triggers a Form Trigger to collect formal onboarding information from the new customer. The form is sent to the primary contact's email with a 5-day deadline. File upload is enabled for contract signing and compliance documentation.

{
  "node_type": "FormTrigger",
  "name": "Customer Onboarding Intake",
  "config": {
    "title": "Welcome to Acme Corp — Please Complete Your Onboarding",
    "description": "To get your account fully activated, please provide the details below. This takes approximately 5 minutes.",
    "submit_button_label": "Complete Onboarding",
    "assigned_to": { "type": "email", "email": "{{ $input.customer_primary_email }}" },
    "expires_in_hours": 120,
    "on_expiry": "escalate",
    "allow_file_uploads": true,
    "send_confirmation_email": true,
    "success_message": "Thank you! Your account will be fully activated within 24 hours. We'll send you a confirmation email with your login credentials.",
    "form_schema": {
      "type": "object",
      "required": ["company_legal_name", "billing_email", "billing_address", "service_tier"],
      "properties": {
        "company_legal_name": { "type": "string", "title": "Legal Company Name" },
        "billing_email": { "type": "string", "format": "email", "title": "Billing Email" },
        "billing_address": { "type": "string", "title": "Billing Address", "maxLength": 300 },
        "service_tier": { "type": "string", "title": "Service Tier", "enum": ["Starter", "Professional", "Enterprise"] },
        "vat_number": { "type": "string", "title": "VAT / Tax Number (if applicable)" },
        "primary_contact_phone": { "type": "string", "title": "Primary Contact Phone" }
      }
    }
  }
}
Expected Outcome: The new customer receives a branded onboarding form. On submission, BizFirstAI creates accounts in the CRM, billing system, and provisioning platform simultaneously. If the form is not completed within 5 days, the workflow escalates via the expired port and assigns a follow-up task to the account manager.

Example 3 — Customer Support Ticket Submission

A support intake form embedded on the customer portal. No user assignment — publicly accessible to any authenticated customer. File upload enabled for screenshots and log files. The 24-hour expiry aligns with the company's SLA response commitment.

{
  "node_type": "FormTrigger",
  "name": "Support Ticket Submission",
  "config": {
    "title": "Submit a Support Request",
    "description": "Describe your issue below. Our support team will respond within 24 hours. For urgent issues, call +1-800-ACME-SUP.",
    "submit_button_label": "Submit Support Request",
    "assigned_to": null,
    "expires_in_hours": null,
    "on_expiry": "cancel",
    "allow_file_uploads": true,
    "send_confirmation_email": true,
    "success_message": "Your ticket has been submitted. Reference: {{ $trigger.execution_id }}. You'll receive an email confirmation shortly.",
    "form_schema": {
      "type": "object",
      "required": ["issue_summary", "severity", "product_area", "description"],
      "properties": {
        "issue_summary": { "type": "string", "title": "Issue Summary", "maxLength": 120 },
        "severity": { "type": "string", "title": "Severity", "enum": ["P1 — Critical (system down)", "P2 — High (major degradation)", "P3 — Medium (partial impact)", "P4 — Low (cosmetic/minor)"] },
        "product_area": { "type": "string", "title": "Product Area", "enum": ["Billing", "API", "Dashboard", "Integrations", "Account Management", "Other"] },
        "description": { "type": "string", "title": "Detailed Description", "maxLength": 2000 }
      }
    }
  }
}
Expected Outcome: The customer fills in the support form and attaches a screenshot. BizFirstAI creates a Jira ticket with the submitted details, assigns it to the correct team based on product_area, sets priority based on severity, and emails the customer their ticket reference. P1 tickets additionally trigger a PagerDuty alert to the on-call engineer.

Example 4 — Purchase Request Initiation

Employees submit purchase requests through a form accessible from the company intranet. The form expires in 48 hours to prevent requests from sitting unsubmitted for extended periods.

{
  "node_type": "FormTrigger",
  "name": "Purchase Request Form",
  "config": {
    "title": "Purchase Request",
    "description": "Submit a purchase request for approval. Requests over $1,000 require CFO sign-off in addition to department head approval. Processing time is typically 2–3 business days.",
    "submit_button_label": "Submit Purchase Request",
    "assigned_to": { "type": "role", "role": "employee" },
    "expires_in_hours": 48,
    "on_expiry": "cancel",
    "allow_file_uploads": true,
    "send_confirmation_email": true,
    "success_message": "Your purchase request has been submitted for approval. You'll be notified by email once it is reviewed.",
    "form_schema": {
      "type": "object",
      "required": ["vendor_name", "item_description", "amount", "cost_center", "business_justification"],
      "properties": {
        "vendor_name": { "type": "string", "title": "Vendor / Supplier Name" },
        "item_description": { "type": "string", "title": "Item or Service Description", "maxLength": 500 },
        "amount": { "type": "number", "title": "Estimated Total Amount (USD)", "minimum": 1 },
        "cost_center": { "type": "string", "title": "Cost Center Code" },
        "business_justification": { "type": "string", "title": "Business Justification", "maxLength": 1000 },
        "required_by_date": { "type": "string", "format": "date", "title": "Required By Date" }
      }
    }
  }
}
Expected Outcome: The employee submits the form with any supporting quotes attached. The workflow validates the cost center code against Finance, routes requests under $1,000 to the department head only, and requests over $1,000 to both the department head and CFO in sequence. Approved requests automatically generate a purchase order in the ERP.

Example 5 — HR Personnel Change Request

Managers submit personnel change requests (salary adjustments, role changes, department transfers) via a secure form sent by the HR system. The form is assigned directly to the submitting manager. File upload supports attaching supporting documentation such as promotion letters or performance reviews.

{
  "node_type": "FormTrigger",
  "name": "HR Personnel Change Request",
  "config": {
    "title": "Personnel Change Request",
    "description": "Use this form to request a salary adjustment, role change, or department transfer for a direct report. Changes require HR and Finance approval.",
    "submit_button_label": "Submit Change Request",
    "assigned_to": { "type": "user", "user_id": "{{ $input.requesting_manager_id }}" },
    "expires_in_hours": 72,
    "on_expiry": "escalate",
    "allow_file_uploads": true,
    "send_confirmation_email": true,
    "success_message": "Your change request has been submitted to HR for review. You will be notified within 3 business days.",
    "form_schema": {
      "type": "object",
      "required": ["employee_id", "change_type", "effective_date", "justification"],
      "properties": {
        "employee_id": { "type": "string", "title": "Employee ID" },
        "change_type": { "type": "string", "title": "Change Type", "enum": ["Salary Adjustment", "Role Change", "Department Transfer", "Promotion", "Contract Type Change"] },
        "new_salary": { "type": "number", "title": "New Salary (USD, if applicable)" },
        "new_role_title": { "type": "string", "title": "New Job Title (if applicable)" },
        "new_department": { "type": "string", "title": "New Department (if applicable)" },
        "effective_date": { "type": "string", "format": "date", "title": "Effective Date" },
        "justification": { "type": "string", "title": "Business Justification", "maxLength": 1000 }
      }
    }
  }
}
Expected Outcome: The manager completes the form and attaches the supporting performance review. The workflow routes to HR Business Partner for initial review, then to Finance for budget validation, then to the CHRO for final approval on salary changes over 10%. Once approved, the changes are updated in the HRMS, payroll system, and Active Directory automatically.