Skip to main content
The Script block allows you to execute custom JavaScript code within your bot flow, enabling advanced logic, external API calls, and browser interactions.
This block doesn’t allow you to create a custom visual block
Code block

Configuration Options

Script Name

  • Name Field: Optional identifier for organizing and debugging scripts (default: “Script”)
  • Purpose: Helps identify scripts in flow diagrams and logs

Code Editor

  • Full JavaScript Editor: Syntax highlighting and multi-line support
  • Variable Integration: Direct access to bot variables using {{Variable Name}} syntax
  • Variable Button: Insert variables directly into your code

Execution Environment

The “Execute on Client” toggle is a beta feature and only available in beta environments.
Choose where your script executes:
  • Client-side (Default): Code runs in the user’s browser
    • Full access to browser APIs (window, document, navigator, etc.)
    • No access to setVariable() function
    • Depends on user’s browser capabilities
    • Good for DOM manipulation, browser APIs, and client-side features
  • Server-side: Code runs in a secure, isolated environment
    • Access to setVariable() function for modifying bot variables
    • Custom fetch() API for external HTTP requests
    • No access to browser APIs
    • Better for security-sensitive operations and API integrations
Variables in script are not parsed, they are evaluated. So it should be treated as if it were real javascript variables.You need to write console.log({{My variable}}) instead of console.log("{{My variable}}")

Features

Variable Management (Server-side Only)

The setVariable() function is ONLY available in server-side execution. It will not work when the script runs on the client (default behavior).
Use the setVariable() function to modify bot variables programmatically when running server-side:
How it works:
  • First parameter: Variable name (as a string, exactly as it appears in your bot)
  • Second parameter: The new value to set
  • The variable must already exist in your bot

API Integration (Server-side)

Server-side scripts have access to a custom fetch() function. Client-side scripts can use the standard browser fetch() API.
Make HTTP requests to external services: Server-side fetch:
Client-side fetch:

Conditional Logic

Implement complex business logic that’s difficult to achieve with standard blocks:

Advanced Features

External API Calls

Integrate with third-party services and APIs:

Data Processing

Process and transform user data:

Browser Interactions (Client-side Only)

Access browser APIs when running on the client (default execution):
Client-side scripts cannot use setVariable(). To store values from client-side scripts, you’ll need to use other methods like displaying the value in a message or using browser storage APIs.

Server-side Limitations

Because server scripts run in an isolated, secure environment:

Unavailable APIs

  • Console Functions: console.log, setTimeout, setInterval not available
  • Browser APIs: No access to window, document, localStorage, etc.
  • Node.js Modules: Cannot use import or require statements
  • Global Objects: Limited global scope compared to browser environment

Modified Fetch Behavior

The fetch function works differently on the server:
Response is always returned as a string, even for JSON responses.

Example Use Cases

CRM Integration (Server-side)

Dynamic Pricing (Server-side)

Browser Page Control (Client-side)

Troubleshooting

Common Script Errors

  • Variable Access: Ensure variables exist and contain expected data types
  • Syntax Errors: Check JavaScript syntax and bracket matching
  • Async Issues: Use await with Promise-based operations
  • Type Errors: Validate variable types before processing

Server-side Issues

  • Fetch Errors: Remember server-side fetch returns strings directly
  • Missing Functions: Global browser functions aren’t available
  • API Timeouts: Implement proper error handling for external calls
  • Memory Limits: Keep scripts efficient to avoid timeout issues

Client-side Issues

  • Browser Compatibility: Test across different browsers and devices
  • Security Restrictions: Some browsers block certain operations
  • Network Issues: Handle offline scenarios gracefully
  • Mobile Limitations: Consider mobile browser capabilities

Performance Problems

  • Slow Execution: Optimize loops and reduce API calls
  • Memory Usage: Clean up variables and avoid memory leaks
  • Network Delays: Implement reasonable timeouts for external calls
  • Error Recovery: Provide fallbacks when scripts fail