Automation Builder - Configuration Guide
Overview
The Automation Builder is a visual workflow automation tool that enables no-code creation of event-driven processes. Automations consist of triggers (events that start the workflow) and actions (operations performed when triggered), connected in a visual flow with support for branching logic and loops.
Automation Builder Capabilities
| Feature | Description |
|---|---|
| Visual Flow Editor | Drag-and-drop automation design with React Flow |
| Trigger Configuration | Multiple event types to start workflows |
| Action Library | Extensive action types for record operations, notifications, and AI |
| Conditional Branching | IF/ELSE logic with nested conditions |
| Loop Support | Repeat actions for batch processing |
| Run History | Execution logs with success/failure tracking |
| Folder Organization | Group automations by category |
Prerequisites
Before creating automations, ensure:
- User has appropriate permissions for Automation Builder module
- Source entities exist for record-based triggers/actions
- Forms exist if using form submission triggers
- Email templates configured if using send email actions
Section 1: Automation Concepts
1.1 Automation Structure
Every automation follows this basic structure:
[Trigger] -> [Action 1] -> [Action 2] -> ... -> [End]
|
[Branch Logic]
/ \
[Yes] [No]
1.2 Initial Nodes
When creating a new automation, the flow starts with:
| Node Type | Purpose | Initial Label |
|---|---|---|
| Trigger Node | Event that starts the workflow | "Select Trigger" |
| Action Node | First action to perform | "Select Action" |
| End Node | Marks workflow completion | "End" |
1.3 Automation Statuses (Run History)
| Status | Value | Description |
|---|---|---|
| All | ALL | Show all runs |
| Success | COMPLETED | Successfully completed runs |
| Failed | FAILED | Runs that encountered errors |
Section 2: Trigger Types
2.1 Available Triggers
Navigation: Automation Builder -> New Automation -> Select Trigger
| Trigger Key | Name | Description |
|---|---|---|
when_form_is_submitted | Form Submitted | Trigger when a user submits a form |
on_record_creation | Record Created | Trigger when a new record is added |
on_record_updation | Record Updated | Trigger when an existing record is modified |
on_record_deletion | Record Deleted | Trigger when a record is removed |
when_record_matches_condition | Record Matches Condition | Trigger when a record meets defined rules |
when_process_evaluation_completes | Process Evaluation Completes | Trigger when an AI evaluation is completed |
on_schedule_trigger | Scheduled Event | Trigger on a time-based schedule |
on_webhook_received | Webhook Received | Trigger when an external webhook is received |
sharepoint_webhook_event | SharePoint Event | Trigger when a SharePoint event occurs |
Microsoft.Communication.IncomingCall | Incoming Call | Trigger when a phone call is received |
2.2 Trigger Configuration Fields
| Field | Field Name | Description |
|---|---|---|
| Trigger Type | trigger_type | Type of trigger selected |
| Conditions | conditions | Optional conditions for trigger firing |
| Entity ID | entity_id | Entity to watch for record triggers |
| Form ID | form_id | Form to watch for submission triggers |
2.3 Schedule Trigger Configuration
Navigation: Trigger Setup -> Schedule Trigger
| Field | Field Name | Description |
|---|---|---|
| Interval Type | interval_type | Frequency of execution |
| Interval Value | interval_value | Numeric interval |
| Week Days | week_days | Days of week (for weekly schedules) |
| Month Days | month_days | Days of month (for monthly schedules) |
| Start Date | start_date | When to begin scheduling |
| Execution Time | execution_time | Time of day to execute |
| Time Zone | time_zone | Timezone for scheduling |
Interval Types
| Interval | Value | Description |
|---|---|---|
| Minutes | minutes | Run every X minutes |
| Hours | hours | Run every X hours |
| Days | days | Run every X days |
| Weeks | weeks | Run on specified days |
| Months | months | Run on specified dates |
| One-Time | one_time | Run once at specified time |
Section 3: Action Types
3.1 Available Actions
Navigation: Automation Flow -> Add Action -> Select Action
| Action Key | Name | Description |
|---|---|---|
create_record | Create Record | Create a new record in an entity |
update_record | Update Record | Modify an existing record |
delete_record | Delete Record | Remove a record |
find_records | Find Records | Search for records matching criteria |
send_email | Send Email | Send an email notification |
autofill_with_ai | Autofill with AI | Use AI to populate fields |
ai-action | AI-Driven Action | AI content generation with configurable prompts |
extract_from_document | Extract from Document | Extract data from uploaded documents |
extract_from_web | Extract from Website | Scrape data from web pages |
formula | Formula | Calculate values using formulas |
if_else_condition | IF/ELSE Condition | Branch workflow based on conditions |
repeat_action | Repeat | Loop through a set of actions |
wait_until | Wait | Pause workflow until condition met |
3.2 Record Actions Configuration
Create Record Action
| Field | Field Name | Description | Required |
|---|---|---|---|
| Entity Selection | entity_id | Target entity for new record | Yes |
| Fields | fields | Field values to set | Yes |
Update Record Action
| Field | Field Name | Description | Required |
|---|---|---|---|
| Entity Selection | entity_id | Entity containing the record | Yes |
| Record ID | record_id | Record to update | Yes |
| Fields | fields | Field values to update | Yes |
Delete Record Action
| Field | Field Name | Description | Required |
|---|---|---|---|
| Entity Selection | entity_id | Entity containing the record | Yes |
| Record ID | record_id | Record to delete | Yes |
3.3 AI-Driven Action Configuration
| Field | Field Name | Description |
|---|---|---|
| Entity Selection | entity_id | Entity for context |
| Model | model | AI model to use (GPT-4o, GPT-4.1, etc.) |
| AI Action Type | ai_action_type | Type of AI operation |
| Select Field | select_field | Target field for AI output |
| Prompt | prompt | Instructions for AI |
| Temperature | temperature | Randomness (0-1, default 0.2) |
| Conditional Prompt | conditional_prompt | Dynamic prompts based on conditions |
AI Action Types
| Type | Value | Description |
|---|---|---|
| AI Criteria Action | ai_criteria_action | AI evaluates against criteria |
| Custom | custom | Custom prompt-based AI action |
AI Models Available
| Model | Value | Description |
|---|---|---|
| GPT-4o | gpt-4o | Latest OpenAI multimodal model |
| GPT-4o mini | gpt-4.1-mini | Efficient smaller model |
| GPT-4.1 | gpt-4.1 | Advanced reasoning model |
| o3 | o3 | Specialized model |
Section 4: Condition Builder
4.1 Condition Operators
Navigation: Branch Configuration -> Add Condition
| Operator | Value | Description |
|---|---|---|
| is | eq | Equals |
| is not | ne | Not equals |
| greater than | gt | Greater than |
| greater than or equal to | gte | Greater than or equals |
| less than | lt | Less than |
| less than or equal to | lte | Less than or equals |
| in | in | Value in list |
| not in | nin | Value not in list |
| contains | like | String contains |
| contains (case-insensitive) | ilike | String contains (ignore case) |
| between | between | Value in range |
| is null | is_null | Value is empty |
| is not null | is_not_null | Value exists |
| min length | min_length | Minimum string length |
| max length | max_length | Maximum string length |
4.2 Condition Conjunctions
| Conjunction | Value | Description |
|---|---|---|
| And | and | All conditions must be true |
| Or | or | Any condition must be true |
4.3 Appointment Condition Fields
For appointment/scheduling automations:
| Field | Value | Type |
|---|---|---|
| Appointment Status | appointment_status | Dropdown |
| Calendar Id | calendar_id | Dropdown |
| Contact Email | contact_email | Text |
| Appointment Priority | appointment_priority | Dropdown |
| Assigned User | assigned_user | Dropdown |
| Appointment Date | appointment_date | Date |
Section 5: Branch Configuration
5.1 Branch Types
| Type | Value | Description |
|---|---|---|
| IF | IF | Primary condition branch |
| ELSE IF | ELSE_IF | Additional condition branch |
| ELSE | ELSE | Fallback branch when no conditions match |
5.2 Branch Operators
| Operator | Value | Description |
|---|---|---|
| AND | and | All conditions in branch must be true |
| OR | or | Any condition in branch must be true |
5.3 Branch Constraints
| Constraint | Value | Description |
|---|---|---|
| Max Branches | 10 | Maximum number of branches allowed |
| Min Non-ELSE Branches | 1 | At least one IF branch required |
| ELSE Branch ID | branch_else | Special identifier for ELSE branch |
5.4 Branch Labels
| Label | Purpose |
|---|---|
| Default Title | "Branch Conditions" |
| Add Branch Button | "Add Branch" |
| Add ELSE Button | "Add ELSE Branch" |
| None Branch Title | "None Branch" |
| None Branch Subtitle | "When no condition is met" |
Section 6: Dynamic Field Support
6.1 Plus Button Supported Fields
Fields that support dynamic value insertion:
| Field Type | Value |
|---|---|
| Text | text |
| Text Area | textarea |
| Rich Text | richtext |
| Number | number |
email | |
| URL | url |
| File | file |
6.2 Formula Field Configuration
Formulas use mention syntax for field references:
Trigger Character: { (open brace)
Example Formula: {Amount} * {Quantity} * 0.1
Section 7: Fee Definition (Permitting)
7.1 Fee Structure
For permit fee calculations:
| Field | Description |
|---|---|
| Fee Name | Name of the fee (e.g., "Building Fee") |
| Fee Type | Category (Quantity, Equipment, etc.) |
| Tax Formula | Formula for tax calculation |
| Discount Formula | Formula for discount calculation |
7.2 Example Fee Configuration
{
name: 'Building Fee',
type: 'Quantity',
taxFormula: '{0.10} * {Amount}',
discountFormula: 'IF({Quantity} > 500, {amount} * 0.9, {amount})'
}
Section 8: Permitting Solution Patterns
8.1 Application Submission Workflow
Trigger: Form Submitted Use Case: When applicant submits permit application
[Form Submitted]
-> [Create Record in Permit Entity]
-> [Update Status to "Submitted"]
-> [Send Email to Applicant]
-> [Send Email to Reviewer]
-> [End]
Configuration:
| Step | Action | Configuration |
|---|---|---|
| 1 | Trigger | when_form_is_submitted, Form: Permit Application |
| 2 | Create Record | Entity: Permits, Map form fields to entity fields |
| 3 | Update Record | Status field = "Submitted" |
| 4 | Send Email | Template: Application Received, To: Applicant |
| 5 | Send Email | Template: New Application, To: Assigned Reviewer |
8.2 Review Status Change Workflow
Trigger: Record Matches Condition Use Case: When reviewer updates review status
[Record Matches Condition: Review Status = "Approved"]
-> [IF All Reviews Approved]
-> [Update Permit Status to "Ready for Issuance"]
-> [Send Email to Applicant]
-> [ELSE]
-> [Log Status Change]
-> [End]
Condition Configuration:
| Field | Operator | Value |
|---|---|---|
| Building Review Status | is | Approved |
| Zoning Review Status | is | Approved |
| Health Dept Review Status | is | Approved |
8.3 Inspection Scheduling Workflow
Trigger: Record Updated Use Case: When permit status changes to "Ready for Inspection"
[Record Updated: Permit Status]
-> [IF Status = "Ready for Inspection"]
-> [AI Action: Determine Inspection Type]
-> [Create Record in Inspections Entity]
-> [Send Email to Inspector]
-> [Send Email to Applicant]
-> [End]
8.4 Expiration Warning Workflow
Trigger: Scheduled Event Use Case: Daily check for expiring permits
[Schedule Trigger: Daily at 8:00 AM]
-> [Find Records: Permits expiring in 30 days]
-> [Repeat for each record]
-> [Send Email: Expiration Warning]
-> [Update Record: Warning Sent = true]
-> [End]
Schedule Configuration:
| Field | Value |
|---|---|
| Interval Type | Days |
| Interval Value | 1 |
| Execution Time | 08:00 |
| Time Zone | America/New_York |
8.5 AI-Powered Determination Workflow
Trigger: Process Evaluation Completes Use Case: After AI evaluation of permit application
[Process Evaluation Completes]
-> [AI Action: Evaluate Compliance]
-> [IF AI Determination = "Approved"]
-> [Update Record: Status = "AI Approved"]
-> [Create Record in Approvals Entity]
-> [ELSE IF AI Determination = "Denied"]
-> [Update Record: Status = "AI Denied"]
-> [Send Email: Denial Notification]
-> [ELSE]
-> [Update Record: Status = "Manual Review Required"]
-> [Send Email to Reviewer]
-> [End]
8.6 Multi-Department Review Routing
Trigger: Record Created Use Case: Route new permit to appropriate review departments
[Record Created: Permit]
-> [AI Action: Determine Required Reviews]
-> [IF Zoning Required]
-> [Update Field: Zoning Review Status = "Pending"]
-> [IF Building Required]
-> [Update Field: Building Review Status = "Pending"]
-> [IF Health Required]
-> [Update Field: Health Review Status = "Pending"]
-> [Send Email: Assignment Notifications]
-> [End]
Section 9: Testing and Publishing
9.1 Testing Automations
- Click Test in the automation editor
- Provide sample trigger data
- Review step-by-step execution
- Verify expected outcomes
9.2 Run History Monitoring
Navigation: Automation -> Run History
| Filter | Description |
|---|---|
| All | Show all execution history |
| Success | Only successful runs |
| Failed | Only failed runs |
9.3 Error Handling
When automations fail:
- Check Run History for error details
- Review node-by-node execution
- Verify field mappings and conditions
- Test with sample data
Troubleshooting
Common Issues
Trigger Not Firing
Check:
- Trigger conditions are correctly configured
- Entity/Form IDs are valid
- User has permissions on source entity
- Automation is published (not draft)
Action Fails with "Record Not Found"
Check:
- Record ID reference is valid
- Record exists in the entity
- Using correct field for record identification
Email Not Sending
Check:
- Email template exists
- Recipient field is populated
- Email service is configured
- Valid email addresses
Branch Conditions Not Evaluating
Check:
- Field names match exactly
- Operators are appropriate for field type
- Values are in correct format
- AND/OR logic is correct
Code Reference
Source Files
| File | Location | Purpose |
|---|---|---|
| Trigger Constants | automation-builder-app/src/pages/Automation/AddConfigureAutomation/ConfigurationSidebar/TriggerConfiguration/const.tsx | Trigger keys, icons, colors |
| Trigger Descriptions | automation-builder-app/src/pages/Automation/AddConfigureAutomation/ConfigurationSidebar/TriggerConfiguration/constants.ts | Trigger type descriptions |
| Action Constants | automation-builder-app/src/pages/Automation/AddConfigureAutomation/ConfigurationSidebar/ActionConfiguration/constants.tsx | Action keys, icons, colors |
| Condition Builder | automation-builder-app/src/pages/Automation/AddConfigureAutomation/ConfigurationSidebar/components/RenderDynamicField/FormConditionBuilder/consts.ts | Operators and conditions |
| Branch Constants | automation-builder-app/src/pages/Automation/AddConfigureAutomation/ConfigurationSidebar/components/RenderDynamicField/BranchConditionBuilder/const.ts | Branch configuration |
| Automation Flow | automation-builder-app/src/pages/Automation/AddConfigureAutomation/constants.ts | Flow constants, interval types |
| Run History | automation-builder-app/src/pages/Automation/AddConfigureAutomation/AutomationHistorySidebar/RunHistory/FilterComponents/constants.ts | Status filter options |
| Fee Definition | automation-builder-app/src/components/FeeDefinition/const.ts | Fee calculation patterns |
This guide is aligned with the automation-builder-app codebase as of December 2025.