This block doesn’t allow you to create a custom visual block

Configuration Options
Execution Environment
- Execute on Client: Toggle between server-side and client-side execution
- Script Name: Optional identifier for organizing and debugging scripts
- Code Editor: Full-featured JavaScript editor with syntax highlighting and variable support
- Variable Integration: Direct access to bot variables within your code
Server vs Client Execution
- Server-side (Default): Secure, isolated environment with limited APIs
- Client-side: Full browser access but requires user’s browser capabilities
- Security Considerations: Server-side prevents malicious code execution
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
Use thesetVariable
function to modify bot variables programmatically:
setVariable
is only available in server-side execution, not when “Execute on client” is enabled.
API Integration
Make HTTP requests to external services using the built-in fetch function: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)
Access browser APIs when “Execute on client” is enabled: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
orrequire
statements - Global Objects: Limited global scope compared to browser environment
Modified Fetch Behavior
Thefetch
function works differently on the server:
Best Practices
Code Organization
- Single Responsibility: Keep scripts focused on specific tasks
- Error Handling: Always include try-catch blocks for external calls
- Variable Naming: Use clear, descriptive variable names
- Comments: Document complex logic for team collaboration
Performance Optimization
- Minimal Processing: Keep scripts lightweight to avoid delays
- Async Operations: Use await appropriately for API calls
- Caching: Store results in variables to avoid repeated API calls
- Timeout Handling: Implement proper error handling for slow operations
Security Considerations
- Input Validation: Validate variable data before processing
- API Key Management: Use environment variables for sensitive data
- Data Sanitization: Clean user input before external API calls
- Error Messages: Avoid exposing sensitive information in error messages
Client vs Server Decision
- Use Server-side for: API calls, data processing, security-sensitive operations
- Use Client-side for: Browser APIs, user interactions, real-time features
- Consider Performance: Client-side reduces server load but depends on user’s device
Example Use Cases
CRM Integration
Dynamic Pricing
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