Skip to content

Business Logic Blocks

Business logic blocks provide decision-making and data transformation capabilities for implementing conditional logic and data processing in your flows.

Evaluates JavaScript expressions based on incoming event data and routes events to one of two outputs (true or false) based on the result.

// Route based on user role
outputs.getUserRole.role === 'admin'
// Check numeric thresholds
outputs.checkBalance.amount > 1000
// Complex conditions with multiple criteria
outputs.userInfo.active && outputs.userInfo.subscription === 'premium'
  • User access control: Route different user types to appropriate processing paths
  • Data validation: Direct valid vs invalid data to different handling workflows
  • Business rule enforcement: Implement conditional logic based on business requirements
  • Error handling: Route successful vs failed operations to appropriate response flows

Creates new output events by evaluating JavaScript expressions. Primary block for data transformation, restructuring, and computation within flows.

// Flatten nested data
{
userId: outputs.userInfo.profile.id,
userName: outputs.userInfo.profile.name,
isActive: outputs.userStatus.active
}
// Calculate totals and percentages
{
originalData: outputs.salesData,
totalSales: outputs.salesData.reduce((sum, item) => sum + item.amount, 0),
averageOrder: outputs.salesData.length > 0 ?
outputs.salesData.reduce((sum, item) => sum + item.amount, 0) / outputs.salesData.length : 0
}
// Create different output structures based on conditions
outputs.userInfo.role === 'admin' ? {
adminData: outputs.userInfo,
permissions: 'full',
dashboardUrl: '/admin-dashboard'
} : {
userData: outputs.userInfo,
permissions: 'limited',
dashboardUrl: '/user-dashboard'
}
// Format and combine text data
{
welcomeMessage: `Hello ${outputs.userInfo.name}, your account balance is $${outputs.accountInfo.balance}`,
displayName: outputs.userInfo.firstName + ' ' + outputs.userInfo.lastName,
formattedDate: new Date(outputs.eventData.timestamp).toLocaleDateString()
}
(function() {
const user = outputs.userInfo;
const preferences = outputs.userPreferences;
// Complex processing logic
let recommendedActions = [];
if (user.lastLoginDays > 30) {
recommendedActions.push('re-engagement');
}
if (preferences.notifications === false) {
recommendedActions.push('enable-notifications');
}
return {
user: user,
recommendations: recommendedActions,
priority: recommendedActions.length > 0 ? 'high' : 'low'
};
})()
  • Data formatting: Convert data between different formats and structures
  • Message templating: Create formatted messages for notifications or responses
  • Calculation workflows: Perform mathematical operations on incoming data
  • Data aggregation: Combine and summarize information from multiple sources