Skip to main content

Overview

Internal workflows automate operational tasks that keep your Consuelo workspace healthy and your team productive. Unlike customer-facing workflows, these handle data maintenance, reporting, and team coordination.

Common Internal Use Cases

Data Maintenance

WorkflowTriggerActions
Stale data cleanupDaily scheduleFind, notify, archive old records
Duplicate detectionWeekly scheduleIdentify, flag, merge duplicates
Data validationRecord updatedValidate, flag errors, notify owner
Backup remindersMonthly scheduleCreate records, notify admin

Reporting & Notifications

WorkflowTriggerActions
Weekly standupMonday 9amQuery data, send email
Pipeline healthDailyCalculate metrics, notify if low
Win celebrationsRecord updated (closed won)Post to Slack #wins
Alert escalationRecord created (high priority)Send email, assign, notify

Team Coordination

WorkflowTriggerActions
Handoff notesRecord assignedCreate task, notify new owner
Follow-up remindersRecord updatedDelay, create reminder task
Approval workflowRecord createdAssign, wait, notify on decision
Onboarding sequenceRecord created (new hire)Create tasks, delay, notify

Workflow Design Patterns

Pattern 1: Scheduled Maintenance

Run cleanup tasks on a schedule: Example: Archive stale opportunities
  1. Trigger: Daily at 2am
  2. Search Records: Opportunities where last activity > 90 days
  3. Filter: Stage ≠ “Closed”
  4. Update Record: Set status to “Stale”
  5. Create Record: Task for owner to review

Pattern 2: Event-Driven Processing

React to changes in real-time: Example: Flag high-value deals
  1. Trigger: Opportunity updated
  2. Filter: Value > $50,000 AND Stage = “Negotiation”
  3. Update Record: Set priority to “High”
  4. Send Email: Notify sales manager
  5. Create Record: Task for VP of Sales

Pattern 3: Multi-Step Approval

Route records through approval process: Example: Discount approval
  1. Trigger: Opportunity updated (discount field)
  2. Filter: Discount > 20%
  3. Update Record: Set status to “Pending Approval”
  4. Create Record: Task for manager
  5. Delay: Wait 24 hours
  6. Filter: Check if approved
  7. Send Email: Notify rep of decision

Pattern 4: Data Synchronization

Keep data in sync across systems: Example: Sync to data warehouse
  1. Trigger: Daily at midnight
  2. Search Records: All updated records today
  3. Iterator: Loop through records
  4. Code: Format for data warehouse
  5. HTTP Request: POST to warehouse API

Building Internal Workflows

Step 1: Define the Problem

Ask:
  • What manual task are we automating?
  • What triggers the workflow?
  • What should happen?
  • Who needs to be notified?

Step 2: Map the Flow

Sketch the steps:
Trigger → Action 1 → Action 2 → ... → End
   ↓         ↓         ↓
 Filter?  Condition?  Branch?

Step 3: Build Incrementally

  1. Start with trigger + one action
  2. Test thoroughly
  3. Add complexity gradually
  4. Add error handling last

Step 4: Test Edge Cases

Consider:
  • What if no records found?
  • What if action fails?
  • What if multiple triggers fire?
  • What if workflow is interrupted?

Best Practices

Naming

Use descriptive names:
  • ❌ “Workflow 1”
  • ✅ “Daily Stale Opportunity Cleanup”

Documentation

Add comments in workflow:
Step: "Find stale records"
Name: "Search opportunities inactive 90+ days"
// Excludes already closed deals

Error Handling

Always handle failures:
  1. Add Filter after Search (check if results exist)
  2. Use branches for success/failure paths
  3. Create error log records on failure
  4. Notify admin if workflow fails

Testing

Test before activating:
  1. Use Test button with sample data
  2. Check each step output
  3. Verify end result
  4. Test edge cases (empty results, large datasets)

Monitoring

Monitor workflow health:
  1. Check Settings → Workflows → Runs
  2. Review success/failure rates
  3. Watch for patterns in failures
  4. Adjust based on real usage

Advanced Techniques

Using Code Actions

For complex logic, use the Code action:
// Calculate custom metric
const deals = previousStep.records;
const total = deals.reduce((sum, d) => sum + d.value, 0);
const avg = total / deals.length;

return {
  totalValue: total,
  averageValue: avg,
  count: deals.length
};

Recursive Workflows

Create workflows that trigger themselves (with caution):
  1. Trigger: Record created (Follow-up task)
  2. Delay: Wait 7 days
  3. Search Records: Check if completed
  4. Filter: Not completed
  5. Update Record: Escalate priority
  6. Create Record: Create new follow-up task
  7. Loop: This creates another task that triggers the workflow
Risk of infinite loops. Always include exit conditions:
  • Max iterations limit
  • Time-based cutoff
  • Manual review flag

Working with Iterators

Process arrays of records:
Step 1: Search Records (find 50 deals)

Step 2: Iterator (process each)

Step 3: Update Record (inside iterator)

Step 4: Close iterator

Step 5: Send summary email
Iterator limits: Can process up to 200 records per workflow run (Search limit).

Limitations

Concurrency

  • Workflows run sequentially, not in parallel
  • One record update triggers one workflow
  • No bulk workflow triggers (use scheduled workflows)

Rate Limits

  • 100 API calls per minute
  • Workflow actions count toward this limit
  • Use Code action for bulk operations

Delays

  • Delays pause execution but consume workflow slot
  • Maximum delay: No hard limit
  • Scheduled date cannot be in the past

Debugging

  • Limited debugging tools
  • Check workflow runs for error messages
  • Add logging via Create Record actions
  • Test thoroughly before production

Examples

Example 1: Data Cleanup

Weekly orphaned contact cleanup
  1. Trigger: Weekly (Sunday 2am)
  2. Search Records: Contacts with no company and no activity 30+ days
  3. Filter: Check if found any
  4. Branch:
    • Yes: Update status to “Review”
    • No: End
  5. Create Record: Task for data steward
  6. Send Email: Daily summary to admin

Example 2: Alert Routing

Route high-priority tickets
  1. Trigger: Record created (Support Ticket)
  2. Filter: Priority = “Critical”
  3. Update Record: Assign to on-call engineer
  4. Send Email: Notify on-call (SMS if possible)
  5. Create Record: Escalation task
  6. Delay: Wait 30 minutes
  7. Search Records: Check if resolved
  8. Filter: Not resolved
  9. Send Email: Escalate to manager

Example 3: Content Publishing

Publish content workflow
  1. Trigger: Record updated (Content, Status = “Ready”)
  2. Delay: Wait until scheduled publish date
  3. Filter: Check date reached
  4. HTTP Request: Post to CMS API
  5. Update Record: Set status to “Published”
  6. Create Record: Social media task
  7. Send Email: Notify content team

Troubleshooting

Workflow Not Triggering

IssueCheck
Workflow inactiveToggle to Active
Wrong trigger typeVerify trigger conditions
Filter blockingCheck filter logic
API rate limitReview usage in Settings

Actions Not Executing

IssueCheck
Previous step failedReview run logs
No data to processSearch returned empty
Branch not takenVerify branch conditions
TimeoutComplex queries may timeout

Unexpected Results

IssueSolution
Wrong records affectedReview filter conditions
Data not updatedCheck field permissions
Wrong email sentVerify variable substitution
Loop didn’t closeEnsure iterator is properly closed