Skip to content

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
        └───────────────────────┴───────────────────────┘
  1. Trigger: Event that starts the workflow
  2. Conditions: Optional filters to narrow scope
  3. Actions: What happens when triggered

Creating Workflows ​

Step 1: Navigate to Workflows ​

  1. Go to Settings > Workflows
  2. Click Create Workflow

Step 2: Configure Trigger ​

Select what event triggers the workflow:

Private Offer Events:

  • private_offer.created - New offer created
  • private_offer.sent - Offer email sent
  • private_offer.viewed - Customer viewed offer
  • private_offer.accepted - Customer accepted offer
  • private_offer.expired - Offer expired
  • private_offer.cancelled - Offer cancelled

Contract Events:

  • contract.created - New contract activated
  • contract.expiring - Contract expiring soon
  • contract.expired - Contract has expired
  • contract.renewed - Contract renewed
  • contract.cancelled - Contract cancelled

Customer Events:

  • customer.created - New customer registered
  • customer.updated - Customer info changed
  • customer.churned - Customer cancelled all contracts

Metering Events:

  • metering.submitted - Usage reported
  • metering.confirmed - Usage confirmed
  • metering.failed - Usage report failed

Revenue Events:

  • revenue.milestone - Revenue milestone reached
  • revenue.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 match
  • not_equals - Not matching
  • greater_than - Numeric comparison
  • less_than - Numeric comparison
  • contains - String contains
  • not_contains - String doesn't contain
  • in - Value in list
  • not_in - Value not in list
  • is_empty - Field is empty
  • is_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 ​

  1. Name your workflow
  2. Add description
  3. Click Save
  4. Toggle Active to enable

Example Workflows ​

High-Value Deal Alert ​

Trigger: private_offer.accepted

Conditions:

  • Value > $100,000
  • Vendor = AWS

Actions:

  1. Send Slack to #sales-wins:
    🎉 Big Win Alert!
    {{customerName}} accepted ${{value}} deal
    Product: {{productName}}
  2. Send email to sales-leadership@company.com
  3. Create Salesforce opportunity
  4. 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:

  1. Create task for account owner
  2. Send email to customer success
  3. 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:

  1. Send Slack to #engineering-alerts
  2. Create urgent task
  3. 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:

  1. Send welcome email
  2. Create onboarding tasks
  3. Notify customer success
  4. 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 - Yesterday
  • end_of_month - Last day of current month
  • end_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:

  1. Go to Workflows > Select workflow
  2. Click Test
  3. Provide sample data
  4. Review actions that would execute
  5. 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:

  1. Go to Workflows > Select workflow
  2. Click Execution History
  3. See:
    • Trigger event
    • Conditions evaluated
    • Actions executed
    • Errors/failures
    • Timestamps

Managing Workflows ​

Enable/Disable ​

Toggle workflows on/off:

  1. Go to Workflows
  2. Find workflow
  3. 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:

  1. Go to Workflows > Select workflow
  2. Click Duplicate
  3. Modify as needed
  4. Save with new name

Delete Workflow ​

Remove workflow:

  1. Go to Workflows > Select workflow
  2. Click Delete
  3. Confirm deletion

WARNING

Deleting a workflow cannot be undone. Consider disabling instead.

Version History ​

Track workflow changes:

  1. Go to Workflows > Select workflow
  2. Click Version History
  3. View previous versions
  4. 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_KEY

Create 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_KEY

Update 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_KEY

Get Execution History ​

bash
GET /api/workflows/:id/executions
Authorization: Bearer YOUR_API_KEY

Best Practices ​

  1. Start simple - Begin with basic workflows, add complexity later
  2. Test thoroughly - Use test mode before activating
  3. Monitor execution - Review logs regularly
  4. Document workflows - Add clear descriptions
  5. Use naming conventions - Consistent naming helps management
  6. Set up alerts - Get notified of failures
  7. Review periodically - Audit workflows quarterly

Troubleshooting ​

Workflow Not Triggering ​

  1. Verify workflow is active
  2. Check trigger event matches
  3. Review condition logic
  4. Check execution logs
  5. Verify event is occurring

Actions Not Executing ​

  1. Check action configuration
  2. Verify credentials (API keys, etc.)
  3. Review error messages in logs
  4. Test action manually
  5. Check rate limits

Wrong Recipients/Data ​

  1. Review variable syntax
  2. Check field mappings
  3. Verify data in trigger event
  4. Test with sample data

Next Steps ​


Need Help? ​

Contact hello@automatum.io for workflow assistance.

Automatum GTM Platform