Workflow Automation
Automate your marketplace operations with powerful workflow rules.
Overview
Workflow Automation in Automatum allows you to create automated actions triggered by marketplace events. Reduce manual work, ensure consistency, and respond to events in real-time.
Use Cases:
- Auto-notify team when high-value deals close
- Create tasks when contracts are expiring
- Send welcome emails to new customers
- Update CRM records automatically
- Escalate failed metering events
- Generate renewal offers automatically
How Workflows Work
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Trigger │ │ Conditions │ │ Actions │
│ (Event) │────▶│ (Filters) │────▶│ (What to do) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ Contract │ Value > │ Send Slack
│ Accepted │ $100K │ + Create Task
└───────────────────────┴───────────────────────┘- Trigger: Event that starts the workflow
- Conditions: Optional filters to narrow scope
- Actions: What happens when triggered
Creating Workflows
Step 1: Navigate to Workflows
- Go to Settings > Workflows
- Click Create Workflow
Step 2: Configure Trigger
Select what event triggers the workflow:
Private Offer Events:
private_offer.created- New offer createdprivate_offer.sent- Offer email sentprivate_offer.viewed- Customer viewed offerprivate_offer.accepted- Customer accepted offerprivate_offer.expired- Offer expiredprivate_offer.cancelled- Offer cancelled
Contract Events:
contract.created- New contract activatedcontract.expiring- Contract expiring sooncontract.expired- Contract has expiredcontract.renewed- Contract renewedcontract.cancelled- Contract cancelled
Customer Events:
customer.created- New customer registeredcustomer.updated- Customer info changedcustomer.churned- Customer cancelled all contracts
Metering Events:
metering.submitted- Usage reportedmetering.confirmed- Usage confirmedmetering.failed- Usage report failed
Revenue Events:
revenue.milestone- Revenue milestone reachedrevenue.daily_summary- Daily revenue summary
Step 3: Add Conditions (Optional)
Filter when the workflow should run:
Condition Builder:
json
{
"conditions": [
{
"field": "value",
"operator": "greater_than",
"value": 100000
},
{
"field": "vendor",
"operator": "equals",
"value": "aws"
}
],
"logic": "AND"
}Available Operators:
equals- Exact matchnot_equals- Not matchinggreater_than- Numeric comparisonless_than- Numeric comparisoncontains- String containsnot_contains- String doesn't containin- Value in listnot_in- Value not in listis_empty- Field is emptyis_not_empty- Field has value
Step 4: Configure Actions
Add one or more actions to execute:
Notification Actions:
- Send email
- Send Slack message
- Send Microsoft Teams message
- Send webhook
- Send in-app notification
CRM Actions:
- Create/update Salesforce record
- Create/update HubSpot record
- Log activity
Task Actions:
- Create task
- Assign to user
- Set due date
- Add to project
Data Actions:
- Update record
- Create record
- Tag/label item
Custom Actions:
- Call external API
- Execute custom script
- Trigger another workflow
Step 5: Save and Activate
- Name your workflow
- Add description
- Click Save
- Toggle Active to enable
Example Workflows
High-Value Deal Alert
Trigger: private_offer.accepted
Conditions:
- Value > $100,000
- Vendor = AWS
Actions:
- Send Slack to #sales-wins:
🎉 Big Win Alert! {{customerName}} accepted ${{value}} deal Product: {{productName}} - Send email to sales-leadership@company.com
- Create Salesforce opportunity
- Create celebration task
Configuration:
json
{
"name": "High-Value Deal Alert",
"trigger": "private_offer.accepted",
"conditions": {
"logic": "AND",
"rules": [
{ "field": "value", "operator": "greater_than", "value": 100000 },
{ "field": "vendor", "operator": "equals", "value": "aws" }
]
},
"actions": [
{
"type": "slack",
"channel": "#sales-wins",
"message": "🎉 Big Win! {{customerName}} - ${{value}}"
},
{
"type": "email",
"to": ["sales-leadership@company.com"],
"template": "high-value-deal"
},
{
"type": "salesforce_create",
"object": "Opportunity",
"mapping": {
"Name": "{{customerName}} - {{productName}}",
"Amount": "{{value}}",
"StageName": "Closed Won"
}
}
]
}Contract Renewal Reminder
Trigger: contract.expiring
Conditions:
- Days until expiry = 90
Actions:
- Create task for account owner
- Send email to customer success
- Create draft renewal offer
json
{
"name": "90-Day Renewal Reminder",
"trigger": "contract.expiring",
"conditions": {
"rules": [
{ "field": "daysUntilExpiry", "operator": "equals", "value": 90 }
]
},
"actions": [
{
"type": "create_task",
"title": "Renewal conversation: {{customerName}}",
"assignTo": "account_owner",
"dueDate": "+7 days",
"priority": "high"
},
{
"type": "email",
"to": ["{{accountOwnerEmail}}"],
"template": "renewal-reminder-internal"
},
{
"type": "create_draft_offer",
"basedOn": "current_contract",
"adjustments": {
"duration": 12,
"discount": 0
}
}
]
}Metering Failure Escalation
Trigger: metering.failed
Conditions:
- Retry count > 3
Actions:
- Send Slack to #engineering-alerts
- Create urgent task
- Send email to technical team
json
{
"name": "Metering Failure Escalation",
"trigger": "metering.failed",
"conditions": {
"rules": [
{ "field": "retryCount", "operator": "greater_than", "value": 3 }
]
},
"actions": [
{
"type": "slack",
"channel": "#engineering-alerts",
"message": "🚨 Metering failure: {{customerName}} - {{dimension}}\nError: {{errorMessage}}"
},
{
"type": "create_task",
"title": "URGENT: Fix metering for {{customerName}}",
"assignTo": "engineering_lead",
"dueDate": "today",
"priority": "urgent"
}
]
}New Customer Onboarding
Trigger: customer.created
Actions:
- Send welcome email
- Create onboarding tasks
- Notify customer success
- Add to onboarding sequence
json
{
"name": "New Customer Onboarding",
"trigger": "customer.created",
"actions": [
{
"type": "email",
"to": ["{{customerEmail}}"],
"template": "welcome-email"
},
{
"type": "create_task_series",
"tasks": [
{
"title": "Schedule kickoff call",
"dueDate": "+1 day"
},
{
"title": "Send onboarding resources",
"dueDate": "+2 days"
},
{
"title": "Check-in call",
"dueDate": "+14 days"
}
],
"assignTo": "customer_success"
},
{
"type": "slack",
"channel": "#new-customers",
"message": "👋 New customer: {{customerName}}"
}
]
}Variables & Templates
Available Variables
Use these variables in your actions:
Customer Variables:
- Customer company name- Customer email- Automatum customer ID- AWS Account ID- Azure Tenant ID
Offer Variables:
- Private offer name- Offer ID- Contract value- Contract duration (months)- Marketplace (aws/azure)- Product name
Contract Variables:
- Contract ID- Contract start date- Contract end date- Days until expiration
User Variables:
- Account owner name- Account owner email- Who created the record
Date Variables:
- Current timestamp- Today's date- Tomorrow's date
Date Math
Use relative dates:
+1 day- Tomorrow+7 days- One week from now+30 days- One month from now-1 day- Yesterdayend_of_month- Last day of current monthend_of_quarter- Last day of current quarter
Conditional Content
Include conditional content in templates:
{{#if value > 100000}}
This is a high-value deal requiring executive approval.
{{else}}
Standard deal processing applies.
{{/if}}Testing Workflows
Test Mode
Test workflows before activating:
- Go to Workflows > Select workflow
- Click Test
- Provide sample data
- Review actions that would execute
- Check for errors
Dry Run
Run workflow without executing actions:
bash
POST /api/workflows/:id/test
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"dryRun": true,
"testData": {
"customerName": "Test Company",
"value": 150000,
"vendor": "aws"
}
}Execution Logs
View workflow execution history:
- Go to Workflows > Select workflow
- Click Execution History
- See:
- Trigger event
- Conditions evaluated
- Actions executed
- Errors/failures
- Timestamps
Managing Workflows
Enable/Disable
Toggle workflows on/off:
- Go to Workflows
- Find workflow
- Toggle Active switch
Or via API:
bash
PUT /api/workflows/:id
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"active": false
}Duplicate Workflow
Copy existing workflow:
- Go to Workflows > Select workflow
- Click Duplicate
- Modify as needed
- Save with new name
Delete Workflow
Remove workflow:
- Go to Workflows > Select workflow
- Click Delete
- Confirm deletion
WARNING
Deleting a workflow cannot be undone. Consider disabling instead.
Version History
Track workflow changes:
- Go to Workflows > Select workflow
- Click Version History
- View previous versions
- Restore if needed
Advanced Features
Chaining Workflows
Trigger one workflow from another:
json
{
"actions": [
{
"type": "trigger_workflow",
"workflowId": "workflow_456",
"passData": true
}
]
}Delays
Add delays between actions:
json
{
"actions": [
{
"type": "email",
"template": "welcome"
},
{
"type": "delay",
"duration": "2 days"
},
{
"type": "email",
"template": "follow-up"
}
]
}Rate Limiting
Prevent workflow overload:
json
{
"settings": {
"maxExecutionsPerHour": 100,
"throttleAction": "queue"
}
}Error Handling
Configure error behavior:
json
{
"errorHandling": {
"onError": "continue",
"retryCount": 3,
"notifyOnFailure": ["admin@company.com"]
}
}API Reference
List Workflows
bash
GET /api/workflows
Authorization: Bearer YOUR_API_KEYCreate Workflow
bash
POST /api/workflows
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "My Workflow",
"trigger": "private_offer.accepted",
"conditions": {...},
"actions": [...],
"active": true
}Get Workflow
bash
GET /api/workflows/:id
Authorization: Bearer YOUR_API_KEYUpdate Workflow
bash
PUT /api/workflows/:id
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "Updated Workflow",
"active": true
}Delete Workflow
bash
DELETE /api/workflows/:id
Authorization: Bearer YOUR_API_KEYGet Execution History
bash
GET /api/workflows/:id/executions
Authorization: Bearer YOUR_API_KEYBest Practices
- Start simple - Begin with basic workflows, add complexity later
- Test thoroughly - Use test mode before activating
- Monitor execution - Review logs regularly
- Document workflows - Add clear descriptions
- Use naming conventions - Consistent naming helps management
- Set up alerts - Get notified of failures
- Review periodically - Audit workflows quarterly
Troubleshooting
Workflow Not Triggering
- Verify workflow is active
- Check trigger event matches
- Review condition logic
- Check execution logs
- Verify event is occurring
Actions Not Executing
- Check action configuration
- Verify credentials (API keys, etc.)
- Review error messages in logs
- Test action manually
- Check rate limits
Wrong Recipients/Data
- Review variable syntax
- Check field mappings
- Verify data in trigger event
- Test with sample data
Next Steps
Need Help?
Contact support@automatum.io for workflow assistance.