Internal Document — Do Not Index

Workflow Automation Blueprint

Complete automation specification for CJM's GHL (GoHighLevel) implementation. Every workflow contains triggers, filters, conditions, branches, waits, actions, notifications, exit criteria, re-entry policy, error handling, and duplicate prevention rules. This is an internal configuration document — not public content.

22 workflows definedLast updated: July 2026
1

New Lead Captured

Trigger

Form submission on any CJM funnel, calculator, assessment, or worksheet page

Re-Entry Policy

Do not re-enter if same email submitted within 30 days; update existing opportunity instead

Filters

  • Form ID is not empty
  • Email is present and valid
  • Source field is populated

Conditions

  • Email is not already in active pipeline (opportunity not closed-won or closed-lost within 90 days)

Branches

IF Form includes funnel field → route to funnel-specific pipelineTag with funnel name, assign to funnel owner
IF No funnel field → treat as general inboundTag as 'general-inbound', assign to qualification queue

Actions

  • Create Contact if not exists
  • Create Opportunity in appropriate pipeline
  • Set Lead Source = form source
  • Set Campaign = funnel slug or 'general'
  • Capture UTM parameters if present
  • Capture referrer URL
  • Timestamp record creation

Internal Notifications

  • Slack/email notification to assigned rep: 'New lead: [Name] — [Company] — [Funnel]'

Tag Changes

  • + new-lead
  • + funnel:[slug]
  • + source:[source]

Field Updates

  • Lead Source
  • Campaign
  • First Touch Date
  • Last Touch Date

Email Actions

  • Trigger 'Lead Captured — Auto-Reply' email (if funnel landing form)

Task Creation

  • Create task: 'Qualify new lead — first response within 5 minutes' assigned to round-robin queue

Exit Criteria

  • Lead is qualified and moved to next stage
  • Lead is marked as spam or invalid
  • Lead unsubscribes

Error Handling

If form submission fails: log error, notify admin, do not lose form data (store in pending queue)

Duplicate Prevention

Match on email + company within 90 days; update existing record, do not create duplicate

Opportunity Movement

Enter New Lead Pipeline → Stage: New

2

Funnel Form Submitted

Trigger

Form submission with funnel field populated

Re-Entry Policy

One entry per funnel slug per contact; subsequent submissions of same funnel update existing record

Filters

  • Funnel slug matches one of 8 defined funnels
  • All required fields present

Conditions

  • Qualification stage not yet completed for this funnel

Actions

  • Tag contact with funnel slug
  • Create or update Opportunity in funnel-specific pipeline stage
  • Log funnel form submission timestamp
  • Set funnel stage = 'form-submitted'

Internal Notifications

  • Notify funnel owner: 'New funnel submission: [Funnel Name] — [Contact Name]'

Tag Changes

  • + funnel:[slug]
  • + stage:form-submitted

Field Updates

  • Funnel
  • Funnel Stage
  • Funnel Entry Date

Email Actions

  • Trigger funnel-specific thank-you email sequence

Task Creation

  • Create task: 'Funnel follow-up — send resource within 1 business day'

Exit Criteria

  • Contact moves to qualification stage
  • Contact opts out

Error Handling

Retry form processing up to 3 times; escalate to manual review on failure

Duplicate Prevention

Match contact email + funnel slug; update existing opportunity stage

3

Assessment Completed

Trigger

Assessment result submitted (Growth Index, Revenue Leak Assessment, etc.)

Re-Entry Policy

Re-entry allowed after 90 days for same assessment type (re-assessment permitted)

Filters

  • Assessment type is recognized
  • Score field is numeric
  • Email is present

Branches

IF Score ≥ 70 → qualified leadMove to Qualified Lead pipeline, offer Strategy Call
IF Score 40–69 → education trackTag education-first, send resource sequence
IF Score < 40 → resource trackSend assessment-specific resource, nurture

Waits

  • Wait 5 minutes after assessment completion before sending email (allows for reflection)

Actions

  • Store assessment score, score band, and key findings
  • Store top 3 strengths and top 3 weaknesses
  • Tag with assessment type and score band

Internal Notifications

  • Notify rep: 'Assessment completed — [Type] — Score: [Score] — [Contact Name]'

Tag Changes

  • + assessment:[type]
  • + score-band:[band]

Field Updates

  • Assessment Type
  • Assessment Score
  • Assessment Date
  • Top Strengths
  • Top Weaknesses

Email Actions

  • Trigger 'Assessment Results' email with personalized recommendations

Task Creation

  • If qualified: create task 'Reach out for Strategy Call within 24 hours'

Exit Criteria

  • Contact engages with follow-up email
  • Contact books Strategy Call
  • 60 days without engagement → move to nurture

Error Handling

Store assessment data locally before sending; retry on failure

Duplicate Prevention

Latest assessment of each type overwrites previous score and recommendations

4

Calculator Completed

Trigger

Calculator form submitted with result data

Re-Entry Policy

Re-entry allowed after 30 days (user may re-calculate with updated numbers)

Filters

  • Calculator type is recognized
  • Result fields are populated

Waits

  • Wait 2 minutes before sending results email

Actions

  • Store calculator inputs and results
  • Tag with calculator type
  • Map calculator type to recommended next resource

Internal Notifications

  • Log: 'Calculator completed — [Type] — [Email]' (no immediate rep action required)

Tag Changes

  • + calculator:[type]
  • + result:[band]

Field Updates

  • Calculator Type
  • Calculator Result
  • Calculator Date

Email Actions

  • Trigger calculator-specific follow-up email with results summary

Task Creation

  • If annual loss > $50k: create task 'High-value calculator result — prioritize follow-up'

Exit Criteria

  • Email delivered
  • Contact clicks CTA in follow-up email

Error Handling

Queue results email; retry up to 5 times over 24 hours

Duplicate Prevention

Store latest result; append to calculation history

5

Worksheet Accessed

Trigger

Worksheet page view (or print action)

Re-Entry Policy

Per-worksheet: new access resets follow-up timer

Filters

  • Worksheet slug is recognized
  • Visitor is not a bot

Actions

  • Log worksheet access
  • Increment worksheet engagement counter

Internal Notifications

  • Daily aggregate report: 'Worksheet activity — [count] accesses across [N] worksheets'

Tag Changes

  • + resource:worksheet:[slug]

Field Updates

  • Last Worksheet Access
  • Worksheet Access Count
  • Worksheets Accessed (multi-select)

Email Actions

  • If known contact: trigger 'Worksheet Follow-Up' sequence after 24 hours

Task Creation

None

Exit Criteria

  • Follow-up email sent
  • Contact unsubscribes

Error Handling

Non-critical; log failures, do not retry

Duplicate Prevention

Deduplicate within 24-hour window per worksheet per contact

6

Qualification Completed

Trigger

Funnel qualification step submitted

Re-Entry Policy

One qualification per funnel slug per contact; re-qualify only if significant data changes

Filters

  • Qualification answers recorded
  • Outcome assigned

Branches

IF Outcome = qualifiedMove to Qualified Lead pipeline, open calendar booking
IF Outcome = educationTag education-first, send education resource sequence
IF Outcome = resourceSend resource, move to nurture
IF Outcome = not-suitableSend gentle decline resource, remove from active pipeline

Actions

  • Store qualification outcome and reasoning
  • Store all qualification answers as contact fields
  • Update contact stage based on outcome

Internal Notifications

  • If qualified: notify rep immediately
  • If not-suitable: log for weekly review

Tag Changes

  • + qual-outcome:[outcome]
  • + qual-date:[date]

Field Updates

  • Qualification Outcome
  • Qualification Date
  • Qualification Answers (JSON)
  • Decision Authority
  • Lead Volume
  • CRM Status
  • Response Time
  • Revenue Objective

Email Actions

  • Trigger outcome-specific email sequence

Task Creation

  • If qualified: create task 'Strategy Call outreach — 24-hour SLA'

Exit Criteria

  • Strategy Call booked
  • Email sequence delivered
  • Contact unsubscribes

Error Handling

Store qualification data before processing; escalate incomplete qualifications for manual review

Duplicate Prevention

Match on contact + funnel slug; update existing qualification record

Opportunity Movement

Qualified → enter Qualified Lead Pipeline stage 1; Education → enter Nurture Pipeline; Resource → enter Nurture Pipeline

7

Strategy Call Booked

Trigger

Calendly webhook: event created with CJM event type

Re-Entry Policy

Re-book allowed after 14 days from last booking; updates existing opportunity

Filters

  • Event type = Strategy Session
  • Email is present
  • Date is in the future

Conditions

  • No existing Strategy Call booked for this contact within 14 days

Actions

  • Create or update Contact
  • Update Opportunity stage to 'Strategy Call Scheduled'
  • Store call date, time, and Calendly event URI
  • Cancel any pending callback tasks

Internal Notifications

  • Notify Cecil: 'Strategy Call booked — [Name] — [Date] [Time] — [Funnel/Source]'

Tag Changes

  • + strategy-call-booked
  • + call-date:[date]

Field Updates

  • Strategy Call Date
  • Strategy Call Time
  • Calendly Event URI
  • Booking Source

Email Actions

  • Immediately: 'Strategy Call Confirmation' with calendar invite
  • 24 hours before call: 'Strategy Call Reminder' with preparation link
  • 1 hour before call: 'See You Soon' brief reminder

Task Creation

  • Create task: 'Prepare for Strategy Call — review qualification and calculator results' due 2 hours before call

Exit Criteria

  • Call occurs (attended or no-show)
  • Contact cancels
  • Contact reschedules

Error Handling

If Calendly webhook fails, check for new bookings hourly via Calendly API polling

Duplicate Prevention

Match on Calendly event URI; ignore duplicate webhooks

Opportunity Movement

Move to Strategy Call Pipeline → Stage: Scheduled

8

Strategy Call Reminder

Trigger

24 hours before scheduled Strategy Call (scheduled automation)

Re-Entry Policy

N/A — scheduled automation, one-time execution

Filters

  • Call status = Scheduled
  • Contact has not cancelled

Actions

  • Send reminder email with strategy call preparation link

Internal Notifications

    Tag Changes

      Field Updates

      • Last Reminder Sent

      Email Actions

      • Trigger 'Strategy Call Reminder — 24 Hours' email

      Task Creation

      None

      Exit Criteria

      • Email sent

      Error Handling

      Log delivery failure; do not resend

      Duplicate Prevention

      Check 'Last Reminder Sent' timestamp; do not send if within 23 hours

      9

      Strategy Call Attended

      Trigger

      Post-call action: rep marks call as 'Attended'

      Re-Entry Policy

      Contact may re-enter after 90 days with new Strategy Call booking

      Filters

      • Call outcome = Attended
      • Notes field populated

      Branches

      IF Outcome = Recommend Paid SessionMove to Paid Session Pipeline
      IF Outcome = Not a fit — refer outMove to Closed-Lost with referral note
      IF Outcome = Needs more educationMove to Nurture Pipeline with specific resources

      Actions

      • Update Opportunity stage based on outcome
      • Store call notes and recommendations
      • Reset contact touch timer

      Internal Notifications

      • Notify Cecil: 'Strategy Call completed — [Name] — Outcome: [Outcome]'

      Tag Changes

      • + call-attended
      • + call-outcome:[outcome]
      • - strategy-call-booked

      Field Updates

      • Strategy Call Outcome
      • Call Notes
      • Recommended Next Step
      • Last Call Date

      Email Actions

      • Trigger outcome-specific follow-up sequence

      Task Creation

      • Create task based on outcome: send proposal / send resources / send referral

      Exit Criteria

      • Next action completed
      • Contact unresponsive after 3 follow-ups

      Error Handling

      Require manual confirmation before automated follow-up; rep verifies notes and outcome

      Duplicate Prevention

      One 'Attended' outcome per Strategy Call booking

      Opportunity Movement

      Move based on outcome branch

      10

      Strategy Call No-Show

      Trigger

      30 minutes after scheduled call time with no attendance marker

      Re-Entry Policy

      Contact may rebook; second no-show triggers manual review

      Filters

      • Call status = Scheduled
      • 30+ minutes past scheduled time

      Conditions

      • Contact has not rescheduled
      • This is the first no-show for this contact

      Branches

      IF First no-showSend missed-appointment recovery sequence
      IF Second no-showMove to nurture, flag for manual review

      Waits

      • Wait 30 minutes past scheduled time before triggering

      Actions

      • Update opportunity stage to 'No-Show'
      • Log no-show count
      • Send recovery email

      Internal Notifications

      • Notify rep: 'Strategy Call No-Show — [Name] — [Scheduled Time]'

      Tag Changes

      • + no-show
      • + no-show-count:[N]

      Field Updates

      • No-Show Count
      • Last No-Show Date

      Email Actions

      • Trigger 'Missed Appointment — Rebook' email with direct booking link

      Task Creation

      • Create task: 'Reach out personally — missed Strategy Call' due within 2 hours

      Exit Criteria

      • Contact rebooks within 72 hours
      • Contact explicitly declines to reschedule
      • 72 hours without response → move to nurture

      Error Handling

      Check for Calendly cancellation webhook before marking no-show (avoid race condition)

      Duplicate Prevention

      Only trigger no-show once per scheduled call

      Opportunity Movement

      Move to Strategy Call Pipeline → Stage: No-Show

      11

      Strategy Call Rescheduled

      Trigger

      Calendly webhook: event rescheduled

      Re-Entry Policy

      Each reschedule updates the existing opportunity

      Filters

      • Event type = Strategy Session
      • New date/time differs from original

      Actions

      • Update opportunity with new call date/time
      • Cancel existing reminder automation for old time
      • Schedule new reminders for new time
      • Send reschedule confirmation email

      Internal Notifications

      • Notify rep: 'Strategy Call rescheduled — [Name] — Old: [Old Time] → New: [New Time]'

      Tag Changes

      • − call-date:[old-date]
      • + call-date:[new-date]

      Field Updates

      • Strategy Call Date
      • Strategy Call Time
      • Reschedule Count

      Email Actions

      • Trigger 'Strategy Call Rescheduled' confirmation email

      Task Creation

      • Update existing preparation task with new due date

      Exit Criteria

      • Reminders rescheduled

      Error Handling

      If cancellation of old reminders fails, manual cleanup task created

      Duplicate Prevention

      Match on Calendly event URI; this is an update to existing, not a new booking

      12

      Paid Session Booked

      Trigger

      Paid Strategy Session booking event (manual or payment-linked)

      Re-Entry Policy

      New paid session allowed after previous session completed

      Filters

      • Session type = Paid Strategy Session
      • Payment confirmed (if applicable)

      Conditions

      • Contact has completed a free Strategy Call
      • Paid session was recommended

      Actions

      • Update opportunity to Paid Session Pipeline
      • Send paid session confirmation with preparation requirements
      • Schedule reminders

      Internal Notifications

      • Notify Cecil and operations: 'Paid Session booked — [Name] — [Date] [Time] — [Amount]'

      Tag Changes

      • + paid-session-booked
      • + paid-session-date:[date]

      Field Updates

      • Paid Session Date
      • Paid Session Amount
      • Paid Session Type

      Email Actions

      • Trigger 'Paid Strategy Session — Confirmation & Preparation' email

      Task Creation

      • Create task: 'Prepare paid session deliverables — due 48 hours before session'

      Exit Criteria

      • Session occurs
      • Contact cancels
      • Contact reschedules

      Error Handling

      Manual verification of payment before triggering workflow

      Duplicate Prevention

      Match on contact + session type; one active paid session booking per contact

      Opportunity Movement

      Move to Paid Session Pipeline → Stage: Booked

      13

      Proposal Sent

      Trigger

      Proposal document sent to contact (manual trigger by rep)

      Re-Entry Policy

      Revised proposal may be sent for same opportunity; resets follow-up timer

      Filters

      • Proposal document ID is populated
      • Contact email is valid

      Conditions

      • Opportunity is in Proposal Pipeline

      Actions

      • Update opportunity stage to 'Proposal Sent'
      • Start proposal follow-up timer
      • Log proposal send date and document reference

      Internal Notifications

      • Log: 'Proposal sent — [Contact Name] — [Proposal Value]'

      Tag Changes

      • + proposal-sent
      • + proposal-date:[date]

      Field Updates

      • Proposal Send Date
      • Proposal Value
      • Proposal Document ID
      • Proposal Status

      Email Actions

      • Schedule proposal follow-up sequence (if no response)

      Task Creation

      • Create task: 'Proposal follow-up #1 — 48 hours after send'
      • Create task: 'Proposal follow-up #2 — 5 days after send'
      • Create task: 'Proposal follow-up #3 — 10 days after send'

      Exit Criteria

      • Proposal accepted
      • Proposal declined
      • Proposal expires (30 days without response)

      Error Handling

      Rep manually confirms proposal was delivered before marking stage

      Duplicate Prevention

      One active proposal per opportunity; revised proposal supersedes previous

      Opportunity Movement

      Move to Proposal Pipeline → Stage: Sent

      14

      Proposal Accepted

      Trigger

      Proposal acceptance received (manual trigger by rep)

      Re-Entry Policy

      N/A — terminal state for this opportunity

      Filters

      • Opportunity is in Proposal Pipeline, stage = Sent
      • Acceptance confirmed

      Actions

      • Update opportunity to Closed-Won
      • Create onboarding project
      • Send onboarding kickoff email
      • Cancel all proposal follow-up tasks

      Internal Notifications

      • Notify Cecil: 'Proposal accepted — [Contact Name] — [Value]'
      • Notify operations: 'New client onboarding — [Contact Name]'

      Tag Changes

      • + client
      • + proposal-accepted
      • - proposal-sent

      Field Updates

      • Close Date
      • Deal Value
      • Client Since
      • Onboarding Status

      Email Actions

      • Trigger 'Welcome to CJM — Client Onboarding' email sequence

      Task Creation

      • Create onboarding project with milestone checklist

      Exit Criteria

      • Onboarding project created

      Error Handling

      Double-confirm acceptance before moving to Closed-Won (prevent accidental closure)

      Duplicate Prevention

      N/A — terminal state

      Opportunity Movement

      Move to Proposal Pipeline → Stage: Closed-Won

      15

      Proposal Declined

      Trigger

      Proposal declined (manual trigger by rep)

      Re-Entry Policy

      Contact may re-enter via new lead or referral path; minimum 90-day cooling period

      Filters

      • Decline reason recorded

      Branches

      IF Reason = budgetTag for future re-engagement in 6 months
      IF Reason = went with competitorTag for win-back campaign in 90 days
      IF Reason = not a priorityMove to nurture, follow up quarterly

      Actions

      • Update opportunity to Closed-Lost
      • Store decline reason
      • Schedule re-engagement if appropriate

      Internal Notifications

      • Notify Cecil: 'Proposal declined — [Contact Name] — Reason: [Reason]'

      Tag Changes

      • + proposal-declined
      • + decline-reason:[reason]
      • - proposal-sent

      Field Updates

      • Close Date
      • Decline Reason
      • Re-engagement Date (if applicable)

      Email Actions

      • Trigger 'Proposal Declined — Thank You' email

      Task Creation

      • If re-engagement scheduled: create task for future follow-up date

      Exit Criteria

      • Post-decline email sent
      • Re-engagement task created

      Error Handling

      Require decline reason before marking Closed-Lost

      Duplicate Prevention

      N/A — terminal state

      Opportunity Movement

      Move to Proposal Pipeline → Stage: Closed-Lost

      16

      Proposal Stale

      Trigger

      30 days after proposal sent with no response

      Re-Entry Policy

      Contact may re-enter via new inquiry or referral

      Filters

      • Opportunity stage = Sent
      • No contact activity in 14 days

      Conditions

      • 3 follow-up attempts completed

      Waits

      • Wait 30 days from proposal send date

      Actions

      • Update opportunity to Closed-Lost — No Response
      • Move contact to long-term nurture
      • Send final follow-up email

      Internal Notifications

      • Notify rep: 'Proposal stale — [Contact Name] — 30 days no response'

      Tag Changes

      • + stale-proposal
      • + moved-to-nurture

      Field Updates

      • Close Date
      • Close Reason = 'No Response'

      Email Actions

      • Trigger 'Checking In — One Last Time' email

      Task Creation

      None

      Exit Criteria

      • Email sent
      • Contact re-engaged

      Error Handling

      Rep must confirm follow-ups were completed before auto-closing

      Duplicate Prevention

      Only auto-close once per opportunity

      Opportunity Movement

      Move to Proposal Pipeline → Stage: Closed-Lost

      17

      Client Onboarding Started

      Trigger

      Onboarding project created (from Proposal Accepted workflow)

      Re-Entry Policy

      N/A — one-time per client

      Filters

      • Onboarding checklist template assigned
      • Client contact is active

      Actions

      • Create onboarding project from template
      • Assign onboarding milestones with due dates
      • Send welcome package

      Internal Notifications

      • Notify operations team: 'Onboarding started — [Client Name]'

      Tag Changes

      • + onboarding-started
      • + onboarding-date:[date]

      Field Updates

      • Onboarding Start Date
      • Onboarding Status = 'In Progress'
      • Client Since

      Email Actions

      • Trigger 'Client Onboarding — Welcome' email sequence

      Task Creation

      • Create milestone tasks with dependencies
      • Create 7-day check-in task
      • Create 30-day review task

      Exit Criteria

      • All onboarding milestones completed
      • Client cancels during onboarding

      Error Handling

      Manual onboarding kickoff call with client before automated sequence begins

      Duplicate Prevention

      One active onboarding per client

      Opportunity Movement

      Move to Client Onboarding Pipeline → Stage: Started

      18

      Client Onboarding Completed

      Trigger

      All onboarding milestones marked complete

      Re-Entry Policy

      N/A — terminal onboarding state

      Filters

      • Onboarding checklist 100% complete
      • Client confirmed satisfaction

      Actions

      • Move client to Active Client Pipeline
      • Schedule first monthly review
      • Assign ongoing success manager

      Internal Notifications

      • Notify Cecil and ops: 'Onboarding complete — [Client Name] — Active'

      Tag Changes

      • + active-client
      • + onboarding-complete
      • - onboarding-started

      Field Updates

      • Onboarding Status = 'Complete'
      • Onboarding Completion Date
      • Success Manager

      Email Actions

      • Trigger 'Onboarding Complete — What's Next' email

      Task Creation

      • Create recurring monthly review task
      • Create quarterly business review task

      Exit Criteria

      • N/A — ongoing state

      Error Handling

      Require client satisfaction confirmation before marking complete

      Duplicate Prevention

      One completion per onboarding project

      Opportunity Movement

      Move to Active Client Pipeline → Stage: Active

      19

      Referral Requested

      Trigger

      Manual trigger: rep sends referral request

      Re-Entry Policy

      Re-request after 90 days

      Filters

      • Client is active
      • Client NPS ≥ 7 (or known satisfaction)

      Conditions

      • No referral request sent within 90 days

      Waits

      • Wait until 90 days after onboarding complete or last referral request

      Actions

      • Send personalized referral request email
      • Generate referral link for client

      Internal Notifications

      • Log: 'Referral requested — [Client Name]'

      Tag Changes

      • + referral-requested
      • + referral-request-date:[date]

      Field Updates

      • Last Referral Request Date
      • Referral Request Count

      Email Actions

      • Trigger 'Referral Request' email with client-specific referral link

      Task Creation

      • Create task: 'Follow up on referral request — 14 days'

      Exit Criteria

      • Referral received
      • Client declines to refer
      • 14 days without response

      Error Handling

      Ensure referral link is trackable and works before sending

      Duplicate Prevention

      One referral request per client per quarter

      20

      Dormant Opportunity Reactivation

      Trigger

      90 days after last contact engagement with no activity

      Re-Entry Policy

      After 180 days of continued dormancy following a failed reactivation sequence

      Filters

      • Contact is not a client
      • Contact has not unsubscribed
      • Last engagement > 90 days

      Conditions

      • At least 3 prior touchpoints exist

      Waits

      • Wait 90 days from last engagement

      Actions

      • Add to dormant reactivation sequence
      • Send re-engagement email #1

      Internal Notifications

      • Weekly report: 'Dormant contacts entering reactivation — [Count]'

      Tag Changes

      • + dormant
      • + reactivation-sequence:started

      Field Updates

      • Dormant Date
      • Reactivation Sequence Start Date

      Email Actions

      • Trigger 'Dormant Lead Reactivation' email sequence (3 emails over 30 days)

      Task Creation

      None

      Exit Criteria

      • Contact engages (opens, clicks, replies)
      • Contact unsubscribes
      • Full sequence delivered with no engagement → mark inactive

      Error Handling

      Remove bounced emails from dormant list immediately

      Duplicate Prevention

      One active reactivation sequence per contact

      21

      Quarterly Review

      Trigger

      90 days after last quarterly review (scheduled automation)

      Re-Entry Policy

      Recurring every 90 days

      Filters

      • Client is active
      • Client has been active for > 90 days

      Waits

      • Align to calendar quarter (Jan, Apr, Jul, Oct)

      Actions

      • Generate quarterly performance report
      • Schedule review call
      • Send pre-review questionnaire

      Internal Notifications

      • Notify success manager: 'Q[#] review due — [Client Name]'

      Tag Changes

      • + quarterly-review:[quarter]

      Field Updates

      • Last Quarterly Review Date
      • Next Quarterly Review Date

      Email Actions

      • Trigger 'Quarterly Business Review — Schedule Your Call' email

      Task Creation

      • Create task: 'Prepare Q[#] review deck for [Client]' due 7 days before review

      Exit Criteria

      • Review call completed

      Error Handling

      Auto-generate report from dashboard data; flag if data is incomplete

      Duplicate Prevention

      One active quarterly review per client per quarter

      22

      Annual Review

      Trigger

      365 days after client onboarding or last annual review

      Re-Entry Policy

      Recurring annually

      Filters

      • Client is active
      • Client tenure ≥ 12 months

      Actions

      • Generate comprehensive annual report
      • Calculate year-over-year metrics
      • Schedule annual strategy session
      • Send client satisfaction survey

      Internal Notifications

      • Notify Cecil: 'Annual review due — [Client Name] — Tenure: [Years]'

      Tag Changes

      • + annual-review:[year]

      Field Updates

      • Last Annual Review Date
      • Next Annual Review Date
      • Annual Review Year

      Email Actions

      • Trigger 'Annual Strategy Review — Let's Plan Your Next Year' email

      Task Creation

      • Create task: 'Prepare annual review — comprehensive performance analysis' due 14 days before review

      Exit Criteria

      • Annual review completed
      • Annual strategy plan delivered

      Error Handling

      Pre-review: verify all data integrations are current

      Duplicate Prevention

      One annual review per client per year