Skill Tracer
Skills › Marketing Skills › revops › automation-playbooks.md

automation-playbooks.md

290 lines · skills/revops/references/automation-playbooks.md at 88c79f6

Open on GitHub
1# Automation Playbooks
2
3Platform-specific workflow recipes for HubSpot, Salesforce, scheduling tools, and cross-tool automation.
4

Automation Playbooks

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

Raw lines 1 to 4
5## HubSpot Workflow Recipes
6

HubSpot Workflow Recipes

Raw lines 5 to 6
7### 1. MQL Alert and Assignment
8
9**Name:** MQL Notification and Task Creation
10**Trigger:** Contact property "Lifecycle Stage" is changed to "Marketing Qualified Lead"
11**Actions:**
121. Rotate contact owner among sales team (round-robin)
132. Send internal email notification to contact owner with lead context
143. Create task: "Follow up with [Contact Name]" — due in 4 hours
154. Send Slack notification to #sales-alerts channel
165. Enroll in "MQL Follow-Up" sequence (if using HubSpot Sequences)
17**Outcome:** Every MQL gets assigned instantly with a clear SLA
18**Notes:** Set enrollment criteria to exclude leads already owned by a rep
20---

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


Raw lines 7 to 21
22### 2. MQL SLA Escalation
24**Name:** MQL SLA Breach Alert
25**Trigger:** Contact property "Lifecycle Stage" equals "MQL" AND "Days since last contacted" is greater than 0.5 (12 hours)
26**Actions:**
271. Send internal email to contact owner: "SLA warning: [Contact Name] has not been contacted"
282. If still no activity after 24 hours → send alert to sales manager
293. If still no activity after 48 hours → reassign contact owner via rotation, if the team has agreed a reassignment rule; otherwise alert the manager and keep the owner (see [inbound-routing.md](inbound-routing.md))
304. Create task for new owner: "Urgent: Contact [Contact Name] — reassigned due to SLA breach"
31**Outcome:** No MQL goes unworked for more than 48 hours
32**Notes:** Exclude contacts where last activity type is "Call" or "Meeting" (already engaged)
34---

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, if the team has agreed a reassignment rule; otherwise alert the manager and keep the owner (see inbound-routing.md)
  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)


Raw lines 22 to 35
36### 3. Lead Scoring Update and MQL Promotion
38**Name:** Auto-MQL on Score Threshold
39**Trigger:** Contact property "HubSpot Score" is greater than or equal to 65
40**Actions:**
411. Set lifecycle stage to "Marketing Qualified Lead"
422. Set "MQL Date" to current date
433. Suppress from marketing nurture workflows
444. Trigger MQL Alert workflow (recipe #1)
45**Outcome:** Leads automatically promote to MQL when they hit the scoring threshold
46**Notes:** Add suppression list for existing customers and competitors
48---

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


Raw lines 36 to 49
50### 4. Meeting Booked Notification
52**Name:** Meeting Booked Alert to AE
53**Trigger:** Meeting activity is logged for contact (via Calendly/HubSpot meetings)
54**Actions:**
551. Send internal email to contact owner with meeting details
562. Update contact property "Last Meeting Booked" to current date
573. If lifecycle stage is "Lead" → update to "MQL"
584. Create task: "Prepare for meeting with [Contact Name]" — due 1 hour before meeting
595. Send Slack notification to #meetings channel
60**Outcome:** AEs are prepared for every meeting with full context
61**Notes:** Include recent page views and content downloads in notification email
63---

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


Raw lines 50 to 64
65### 5. Closed-Won Handoff to CS
67**Name:** Customer Onboarding Trigger
68**Trigger:** Deal stage is changed to "Closed Won"
69**Actions:**
701. Update associated contact lifecycle stage to "Customer"
712. Set "Customer Since" date to current date
723. Assign contact owner to CS team member (based on segment/territory)
734. Create task for CS: "Schedule kickoff call with [Company Name]" — due in 2 business days
745. Enroll contact in "Customer Onboarding" email sequence
756. Send internal notification to CS manager
767. Remove from all sales sequences
77**Outcome:** Seamless handoff from sales to customer success
78**Notes:** Include deal notes, contract value, and key stakeholders in CS notification
80---

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


Raw lines 65 to 81
82### 6. Stale Deal Alert
84**Name:** Pipeline Hygiene — Stale Deal Detection
85**Trigger:** Deal property "Days in current stage" is greater than [2x average for that stage]
86**Actions:**
871. Send internal email to deal owner: "Deal stale alert: [Deal Name] has been in [Stage] for [X] days"
882. Create task: "Update or close [Deal Name]" — due in 3 business days
893. If no update after 7 days → alert sales manager
904. Add to "Stale Deals" dashboard list
91**Outcome:** Pipeline stays clean and forecast stays accurate
92**Notes:** Customize thresholds per stage (Discovery: 14 days, Proposal: 10 days, Negotiation: 21 days)
94---

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)


Raw lines 82 to 95
96### 7. Recycled Lead Nurture Re-Entry
98**Name:** MQL Recycling to Nurture
99**Trigger:** Contact property "Sales Rejection Reason" is known (any value)
100**Actions:**
1011. Update lifecycle stage to "Recycled"
1022. Reset engagement score to baseline (keep fit score)
1033. Enroll in "Recycled Lead Nurture" sequence (lower frequency)
1044. Set "Recycle Date" to current date
1055. Set re-enrollment trigger: if HubSpot Score exceeds threshold again, re-trigger MQL workflow
106**Outcome:** Rejected leads get a second chance without clogging the pipeline
107**Notes:** Track recycled-to-MQL conversion rate as a separate metric
109---

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


Raw lines 96 to 110
111### 8. Lead Activity Digest
113**Name:** Daily Lead Activity Summary
114**Trigger:** Scheduled — daily at 8:00 AM local time
115**Actions:**
1161. Filter contacts: lifecycle stage is "SQL" or "Opportunity" AND had website activity in last 24 hours
1172. Send digest email to each contact owner with their leads' activity
1183. Include: pages visited, content downloaded, emails opened/clicked
119**Outcome:** Sales reps start each day knowing which leads are active
120**Notes:** Only include leads with meaningful activity (exclude single homepage visits)
122---

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)


Raw lines 111 to 123
124## Salesforce Flow Equivalents

Salesforce Flow Equivalents

Raw lines 124 to 125
126### 1. MQL Alert and Assignment (Salesforce Flow)
128**Type:** Record-Triggered Flow
129**Object:** Lead
130**Trigger:** Lead field "Status" is changed to "MQL"
131**Flow steps:**
1321. Get Records: Query "Rep Assignment" custom object for next available rep
1332. Update Records: Set Lead Owner to assigned rep
1343. Create Records: Create Task — "Contact MQL: {Lead.Name}" with due date = NOW + 4 hours
1354. Action: Send email alert to new lead owner
1365. Update Records: Update "Rep Assignment" last-assigned timestamp
137**Notes:** Use a custom "Rep Assignment" object to manage round-robin state

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

Raw lines 126 to 138
139### 2. SLA Escalation (Salesforce Flow)
141**Type:** Scheduled-Triggered Flow
142**Schedule:** Every 4 hours during business hours
143**Flow steps:**
1441. Get Records: Leads where Status = "MQL" AND LastActivityDate < TODAY - 1
1452. Decision: Is lead older than 48 hours with no activity?
146 - YES → Alert manager and create urgent task; reassign to the next rep only under an agreed reassignment rule
147 - NO → Send reminder email to current owner
148**Notes:** Pair with Process Builder for real-time alerts on initial assignment

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?
  3. YES → Alert manager and create urgent task; reassign to the next rep only under an agreed reassignment rule
  4. NO → Send reminder email to current owner

Notes: Pair with Process Builder for real-time alerts on initial assignment

Raw lines 139 to 149
150### 3. Pipeline Stage Automation (Salesforce Flow)
152**Type:** Record-Triggered Flow
153**Object:** Opportunity
154**Trigger:** Stage field is updated
155**Flow steps:**
1561. Decision: Which stage was it changed to?
1572. For each stage:
158 - **Discovery:** Create task "Complete discovery questionnaire"
159 - **Demo:** Create task "Prepare demo environment"
160 - **Proposal:** Create task "Send proposal" + alert deal desk if ACV > $25K
161 - **Closed Won:** Trigger CS handoff (create Case, assign CS owner, send welcome email)
162 - **Closed Lost:** Create task "Log loss reason" + add to win/loss analysis report

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:
  3. Discovery: Create task "Complete discovery questionnaire"
  4. Demo: Create task "Prepare demo environment"
  5. Proposal: Create task "Send proposal" + alert deal desk if ACV > $25K
  6. Closed Won: Trigger CS handoff (create Case, assign CS owner, send welcome email)
  7. Closed Lost: Create task "Log loss reason" + add to win/loss analysis report
Raw lines 150 to 163
164### 4. Stale Deal Detection (Salesforce Flow)
166**Type:** Scheduled-Triggered Flow
167**Schedule:** Daily at 7:00 AM
168**Flow steps:**
1691. Get Records: Open Opportunities where Days_In_Stage > Stage_SLA_Threshold
1702. Loop through results:
171 - Create Task: "Update stale deal: {Opportunity.Name}"
172 - Send email to Opportunity Owner
173 - If Days_In_Stage > 2x threshold → send email to Owner's Manager
1743. Update custom field "Stale Flag" = true for dashboard visibility
176---

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:
  3. Create Task: "Update stale deal: {Opportunity.Name}"
  4. Send email to Opportunity Owner
  5. If Days_In_Stage > 2x threshold → send email to Owner's Manager
  6. Update custom field "Stale Flag" = true for dashboard visibility

Raw lines 164 to 177
178## Calendly / SavvyCal Integration Patterns

Calendly / SavvyCal Integration Patterns

Raw lines 178 to 179
180### Round-Robin Meeting Scheduling
182**Calendly setup:**
1831. Create a team event type with all eligible reps
1842. Distribution: "Optimize for equal distribution"
1853. Availability: Each rep manages their own calendar
1864. Buffer: 15 min before and after meetings
1875. Minimum notice: 4 hours (avoid last-minute bookings)
189**CRM integration:**
1901. Calendly webhook fires on booking
1912. Match invitee email to CRM contact
1923. If contact exists → assign meeting to contact owner (override round-robin if owned)
1934. If new contact → create lead, assign via routing rules, log meeting
1945. Set lifecycle stage to MQL (meeting = high intent)

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)
Raw lines 180 to 195
196### SavvyCal Setup
198**Advantages over Calendly:**
199- Priority-based scheduling (prefer certain time slots)
200- Overlay calendars (show team availability in one view)
201- Personalized booking links per rep
203**Integration pattern:**
2041. Create team scheduling link with priority rules
2052. Webhook on booking → Zapier/Make → CRM
2063. Match or create contact, assign owner, create task
2074. Send confirmation with meeting prep materials

SavvyCal Setup

Advantages over Calendly:

  • Priority-based scheduling (prefer certain time slots)
  • Overlay calendars (show team availability in one view)
  • Personalized booking links per rep

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
Raw lines 196 to 208
209### Meeting Routing by Criteria
211```
212Booking form submitted
213├─ Company size > 500? (form field)
214│ ├─ YES → Route to enterprise AE calendar
215│ └─ NO ↓
216├─ Existing customer? (CRM lookup)
217│ ├─ YES → Route to account owner's calendar
218│ └─ NO ↓
219└─ Round-robin across SDR team
220```

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
Raw lines 209 to 221
222### No-Show Workflow
224**Trigger:** Meeting time passes + no meeting notes logged within 30 minutes
225**Actions:**
2261. Wait 30 minutes after scheduled meeting time
2272. Check: Was a call or meeting logged?
228 - YES → No action
229 - NO → Send "Sorry we missed you" email to prospect
2303. Create task: "Reschedule with [Contact Name]" — due next business day
2314. If second no-show → flag contact and alert manager
233---

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?
  3. YES → No action
  4. NO → Send "Sorry we missed you" email to prospect
  5. Create task: "Reschedule with [Contact Name]" — due next business day
  6. If second no-show → flag contact and alert manager

Raw lines 222 to 234
235## Zapier Cross-Tool Patterns

Zapier Cross-Tool Patterns

Raw lines 235 to 236
237### 1. New Lead → CRM + Slack + Task
239**Trigger:** New form submission (Typeform, HubSpot, Webflow)
240**Actions:**
2411. Create/update contact in CRM
2422. Enrich with your enrichment provider (HubSpot Breeze, Clay, Apollo, or similar)
2433. Post to Slack #new-leads with enriched data
2444. Create task in project management tool (Asana, Linear)

1. New Lead → CRM + Slack + Task

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

  1. Create/update contact in CRM
  2. Enrich with your enrichment provider (HubSpot Breeze, Clay, Apollo, or similar)
  3. Post to Slack #new-leads with enriched data
  4. Create task in project management tool (Asana, Linear)
Raw lines 237 to 245
246### 2. Meeting Booked → CRM + Prep Email
248**Trigger:** New Calendly/SavvyCal booking
249**Actions:**
2501. Find or create CRM contact
2512. Update lifecycle stage to MQL
2523. Send prep email to assigned rep (include CRM link, LinkedIn profile, recent activity)
2534. Create pre-meeting task

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
Raw lines 246 to 254
255### 3. Deal Closed → Onboarding Stack
257**Trigger:** CRM deal stage changed to "Closed Won"
258**Actions:**
2591. Create customer record in CS tool (Vitally, Gainsight, ChurnZero)
2602. Add to onboarding project template
2613. Send welcome email via email tool
2624. Create Slack channel: #customer-[company-name]
2635. Notify CS team in Slack

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
Raw lines 255 to 264
265### 4. Lead Scoring → Cross-Tool Sync
267**Trigger:** CRM lead score crosses MQL threshold
268**Actions:**
2691. Update marketing automation platform status
2702. Add to retargeting audience (Facebook, Google Ads)
2713. Trigger SDR outreach sequence
2724. Log event in analytics (Mixpanel, Amplitude)

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)
Raw lines 265 to 273
274### 5. SLA Breach → Multi-Channel Alert
276**Trigger:** CRM task overdue (MQL follow-up task)
277**Actions:**
2781. Send Slack DM to rep
2792. Send email to rep
2803. If 2+ hours overdue → Slack DM to manager
2814. If 4+ hours overdue → reassign in CRM (via webhook back to CRM), only under an agreed reassignment rule; otherwise escalate to the manager

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), only under an agreed reassignment rule; otherwise escalate to the manager
Raw lines 274 to 282
283### 6. Weekly Pipeline Digest
285**Trigger:** Schedule — every Monday at 8:00 AM
286**Actions:**
2871. Query CRM for pipeline summary (total value, new deals, stale deals, expected closes)
2882. Format as summary
2893. Post to Slack #sales-team
2904. Send email digest to sales leadership

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
Raw lines 283 to 290