revops · automation-playbooks

Automation Playbooks

Platform-specific workflow recipes for HubSpot, Salesforce, scheduling tools, and cross-tool automation.

HubSpot Workflow Recipes

1. MQL Alert and Assignment

Name: MQL Notification and Task Creation
Trigger: Contact property "Lifecycle Stage" is changed to "Marketing Qualified Lead"
Actions:

  1. Rotate contact owner among sales team (round-robin)
  2. Send internal email notification to contact owner with lead context
  3. Create task: "Follow up with [Contact Name]" — due in 4 hours
  4. Send Slack notification to #sales-alerts channel
  5. Enroll in "MQL Follow-Up" sequence (if using HubSpot Sequences)
    Outcome: Every MQL gets assigned instantly with a clear SLA
    Notes: Set enrollment criteria to exclude leads already owned by a rep

2. MQL SLA Escalation

Name: MQL SLA Breach Alert
Trigger: Contact property "Lifecycle Stage" equals "MQL" AND "Days since last contacted" is greater than 0.5 (12 hours)
Actions:

  1. Send internal email to contact owner: "SLA warning: [Contact Name] has not been contacted"
  2. If still no activity after 24 hours → send alert to sales manager
  3. If still no activity after 48 hours → reassign contact owner via rotation
  4. Create task for new owner: "Urgent: Contact [Contact Name] — reassigned due to SLA breach"
    Outcome: No MQL goes unworked for more than 48 hours
    Notes: Exclude contacts where last activity type is "Call" or "Meeting" (already engaged)

3. Lead Scoring Update and MQL Promotion

Name: Auto-MQL on Score Threshold
Trigger: Contact property "HubSpot Score" is greater than or equal to 65
Actions:

  1. Set lifecycle stage to "Marketing Qualified Lead"
  2. Set "MQL Date" to current date
  3. Suppress from marketing nurture workflows
  4. Trigger MQL Alert workflow (recipe #1)
    Outcome: Leads automatically promote to MQL when they hit the scoring threshold
    Notes: Add suppression list for existing customers and competitors

4. Meeting Booked Notification

Name: Meeting Booked Alert to AE
Trigger: Meeting activity is logged for contact (via Calendly/HubSpot meetings)
Actions:

  1. Send internal email to contact owner with meeting details
  2. Update contact property "Last Meeting Booked" to current date
  3. If lifecycle stage is "Lead" → update to "MQL"
  4. Create task: "Prepare for meeting with [Contact Name]" — due 1 hour before meeting
  5. Send Slack notification to #meetings channel
    Outcome: AEs are prepared for every meeting with full context
    Notes: Include recent page views and content downloads in notification email

5. Closed-Won Handoff to CS

Name: Customer Onboarding Trigger
Trigger: Deal stage is changed to "Closed Won"
Actions:

  1. Update associated contact lifecycle stage to "Customer"
  2. Set "Customer Since" date to current date
  3. Assign contact owner to CS team member (based on segment/territory)
  4. Create task for CS: "Schedule kickoff call with [Company Name]" — due in 2 business days
  5. Enroll contact in "Customer Onboarding" email sequence
  6. Send internal notification to CS manager
  7. Remove from all sales sequences
    Outcome: Seamless handoff from sales to customer success
    Notes: Include deal notes, contract value, and key stakeholders in CS notification

6. Stale Deal Alert

Name: Pipeline Hygiene — Stale Deal Detection
Trigger: Deal property "Days in current stage" is greater than [2x average for that stage]
Actions:

  1. Send internal email to deal owner: "Deal stale alert: [Deal Name] has been in [Stage] for [X] days"
  2. Create task: "Update or close [Deal Name]" — due in 3 business days
  3. If no update after 7 days → alert sales manager
  4. Add to "Stale Deals" dashboard list
    Outcome: Pipeline stays clean and forecast stays accurate
    Notes: Customize thresholds per stage (Discovery: 14 days, Proposal: 10 days, Negotiation: 21 days)

7. Recycled Lead Nurture Re-Entry

Name: MQL Recycling to Nurture
Trigger: Contact property "Sales Rejection Reason" is known (any value)
Actions:

  1. Update lifecycle stage to "Recycled"
  2. Reset engagement score to baseline (keep fit score)
  3. Enroll in "Recycled Lead Nurture" sequence (lower frequency)
  4. Set "Recycle Date" to current date
  5. Set re-enrollment trigger: if HubSpot Score exceeds threshold again, re-trigger MQL workflow
    Outcome: Rejected leads get a second chance without clogging the pipeline
    Notes: Track recycled-to-MQL conversion rate as a separate metric

8. Lead Activity Digest

Name: Daily Lead Activity Summary
Trigger: Scheduled — daily at 8:00 AM local time
Actions:

  1. Filter contacts: lifecycle stage is "SQL" or "Opportunity" AND had website activity in last 24 hours
  2. Send digest email to each contact owner with their leads' activity
  3. Include: pages visited, content downloaded, emails opened/clicked
    Outcome: Sales reps start each day knowing which leads are active
    Notes: Only include leads with meaningful activity (exclude single homepage visits)

Salesforce Flow Equivalents

1. MQL Alert and Assignment (Salesforce Flow)

Type: Record-Triggered Flow
Object: Lead
Trigger: Lead field "Status" is changed to "MQL"
Flow steps:

  1. Get Records: Query "Rep Assignment" custom object for next available rep
  2. Update Records: Set Lead Owner to assigned rep
  3. Create Records: Create Task — "Contact MQL: {Lead.Name}" with due date = NOW + 4 hours
  4. Action: Send email alert to new lead owner
  5. Update Records: Update "Rep Assignment" last-assigned timestamp
    Notes: Use a custom "Rep Assignment" object to manage round-robin state

2. SLA Escalation (Salesforce Flow)

Type: Scheduled-Triggered Flow
Schedule: Every 4 hours during business hours
Flow steps:

  1. Get Records: Leads where Status = "MQL" AND LastActivityDate < TODAY - 1
  2. Decision: Is lead older than 48 hours with no activity?
    • YES → Reassign to next rep, create urgent task, alert manager
    • NO → Send reminder email to current owner
      Notes: Pair with Process Builder for real-time alerts on initial assignment

3. Pipeline Stage Automation (Salesforce Flow)

Type: Record-Triggered Flow
Object: Opportunity
Trigger: Stage field is updated
Flow steps:

  1. Decision: Which stage was it changed to?
  2. For each stage:
    • Discovery: Create task "Complete discovery questionnaire"
    • Demo: Create task "Prepare demo environment"
    • Proposal: Create task "Send proposal" + alert deal desk if ACV > $25K
    • Closed Won: Trigger CS handoff (create Case, assign CS owner, send welcome email)
    • Closed Lost: Create task "Log loss reason" + add to win/loss analysis report

4. Stale Deal Detection (Salesforce Flow)

Type: Scheduled-Triggered Flow
Schedule: Daily at 7:00 AM
Flow steps:

  1. Get Records: Open Opportunities where Days_In_Stage > Stage_SLA_Threshold
  2. Loop through results:
    • Create Task: "Update stale deal: {Opportunity.Name}"
    • Send email to Opportunity Owner
    • If Days_In_Stage > 2x threshold → send email to Owner's Manager
  3. Update custom field "Stale Flag" = true for dashboard visibility

Calendly / SavvyCal Integration Patterns

Round-Robin Meeting Scheduling

Calendly setup:

  1. Create a team event type with all eligible reps
  2. Distribution: "Optimize for equal distribution"
  3. Availability: Each rep manages their own calendar
  4. Buffer: 15 min before and after meetings
  5. Minimum notice: 4 hours (avoid last-minute bookings)

CRM integration:

  1. Calendly webhook fires on booking
  2. Match invitee email to CRM contact
  3. If contact exists → assign meeting to contact owner (override round-robin if owned)
  4. If new contact → create lead, assign via routing rules, log meeting
  5. Set lifecycle stage to MQL (meeting = high intent)

SavvyCal Setup

Advantages over Calendly:

Integration pattern:

  1. Create team scheduling link with priority rules
  2. Webhook on booking → Zapier/Make → CRM
  3. Match or create contact, assign owner, create task
  4. Send confirmation with meeting prep materials

Meeting Routing by Criteria

Booking form submitted
├─ Company size > 500? (form field)
│  ├─ YES → Route to enterprise AE calendar
│  └─ NO ↓
├─ Existing customer? (CRM lookup)
│  ├─ YES → Route to account owner's calendar
│  └─ NO ↓
└─ Round-robin across SDR team

No-Show Workflow

Trigger: Meeting time passes + no meeting notes logged within 30 minutes
Actions:

  1. Wait 30 minutes after scheduled meeting time
  2. Check: Was a call or meeting logged?
    • YES → No action
    • NO → Send "Sorry we missed you" email to prospect
  3. Create task: "Reschedule with [Contact Name]" — due next business day
  4. If second no-show → flag contact and alert manager

Zapier Cross-Tool Patterns

1. New Lead → CRM + Slack + Task

Trigger: New form submission (Typeform, HubSpot, Webflow)
Actions:

  1. Create/update contact in CRM
  2. Enrich with Clearbit (if available)
  3. Post to Slack #new-leads with enriched data
  4. Create task in project management tool (Asana, Linear)

2. Meeting Booked → CRM + Prep Email

Trigger: New Calendly/SavvyCal booking
Actions:

  1. Find or create CRM contact
  2. Update lifecycle stage to MQL
  3. Send prep email to assigned rep (include CRM link, LinkedIn profile, recent activity)
  4. Create pre-meeting task

3. Deal Closed → Onboarding Stack

Trigger: CRM deal stage changed to "Closed Won"
Actions:

  1. Create customer record in CS tool (Vitally, Gainsight, ChurnZero)
  2. Add to onboarding project template
  3. Send welcome email via email tool
  4. Create Slack channel: #customer-[company-name]
  5. Notify CS team in Slack

4. Lead Scoring → Cross-Tool Sync

Trigger: CRM lead score crosses MQL threshold
Actions:

  1. Update marketing automation platform status
  2. Add to retargeting audience (Facebook, Google Ads)
  3. Trigger SDR outreach sequence
  4. Log event in analytics (Mixpanel, Amplitude)

5. SLA Breach → Multi-Channel Alert

Trigger: CRM task overdue (MQL follow-up task)
Actions:

  1. Send Slack DM to rep
  2. Send email to rep
  3. If 2+ hours overdue → Slack DM to manager
  4. If 4+ hours overdue → reassign in CRM (via webhook back to CRM)

6. Weekly Pipeline Digest

Trigger: Schedule — every Monday at 8:00 AM
Actions:

  1. Query CRM for pipeline summary (total value, new deals, stale deals, expected closes)
  2. Format as summary
  3. Post to Slack #sales-team
  4. Send email digest to sales leadership

Source: https://github.com/coreyhaines31/marketingskills/skills/revops/references/automation-playbooks.md · v2.0.0 · MIT License (c) 2025 Corey Haines.