Select some of this text to see the custom selection colors.

/

Greyline

How Greyline were able to reduce churn by 35% by automating their customer success workflows

Greyline was losing customers they could have saved. The signals were there — they just weren't reaching the right people fast enough.

35%

churn reduction

2x

faster intervention

18hrs

saved weekly

The customers they didn't know were leaving

Greyline's customer success team was good at their jobs. The problem was they were reactive. By the time a customer flagged dissatisfaction, it was usually too late to turn things around. The signals were always there in the data — dropping login frequency, unused features, declining report generation. But with 200+ accounts and a CS team of four, nobody had time to monitor usage dashboards all day.

"We were doing post-mortems on churned accounts and realizing we had all the data to see it coming. We just weren't acting on it in time." — Sam Thornton, VP of Product, Greyline

A customer success process that couldn't scale

Task

Frequency

Time per week

Review usage dashboards

Daily

6 hours

Identify at-risk accounts

Weekly

3 hours

Send check-in emails manually

Weekly

4 hours

Log CS activities in CRM

Daily

3 hours

Compile weekly CS report

Weekly

2 hours

With four people covering 200+ accounts, proactive outreach was almost impossible. The team spent most of their time on admin rather than actually talking to customers.

What they built with Violet

Greyline built a churn detection workflow that monitors usage data across all accounts and automatically flags at-risk customers based on a set of predefined signals — then routes them to the right CS rep without anyone having to check a dashboard.

trigger:
  type: analytics.threshold
  source: "internal_db"
  conditions:
    - metric: "logins_last_14_days"
      operator: "<"
      value: 3
    - metric: "reports_generated_last_30_days"
      operator: "<"
      value: 1

actions:
  - type: crm.add_tag
    contact: "{{account.id}}"
    tag: "at-risk"
  - type: crm.assign_task
    owner: "{{account.cs_owner}}"
    title: "Check in with {{account.name}} — low engagement detected"
    due: "tomorrow"
  - type: slack.send_message
    channel: "#customer-success"
    message: "⚠️ {{account.name}} flagged as at-risk. Assigned to {{account.cs_owner}}."
  - type: email.send
    to: "{{account.cs_owner.email}}"
    template: "at-risk-briefing"
    data: "{{account.usage_summary}}"
trigger:
  type: analytics.threshold
  source: "internal_db"
  conditions:
    - metric: "logins_last_14_days"
      operator: "<"
      value: 3
    - metric: "reports_generated_last_30_days"
      operator: "<"
      value: 1

actions:
  - type: crm.add_tag
    contact: "{{account.id}}"
    tag: "at-risk"
  - type: crm.assign_task
    owner: "{{account.cs_owner}}"
    title: "Check in with {{account.name}} — low engagement detected"
    due: "tomorrow"
  - type: slack.send_message
    channel: "#customer-success"
    message: "⚠️ {{account.name}} flagged as at-risk. Assigned to {{account.cs_owner}}."
  - type: email.send
    to: "{{account.cs_owner.email}}"
    template: "at-risk-briefing"
    data: "{{account.usage_summary}}"
trigger:
  type: analytics.threshold
  source: "internal_db"
  conditions:
    - metric: "logins_last_14_days"
      operator: "<"
      value: 3
    - metric: "reports_generated_last_30_days"
      operator: "<"
      value: 1

actions:
  - type: crm.add_tag
    contact: "{{account.id}}"
    tag: "at-risk"
  - type: crm.assign_task
    owner: "{{account.cs_owner}}"
    title: "Check in with {{account.name}} — low engagement detected"
    due: "tomorrow"
  - type: slack.send_message
    channel: "#customer-success"
    message: "⚠️ {{account.name}} flagged as at-risk. Assigned to {{account.cs_owner}}."
  - type: email.send
    to: "{{account.cs_owner.email}}"
    template: "at-risk-briefing"
    data: "{{account.usage_summary}}"

CS reps now start each day with a prioritized list of accounts that need attention — automatically generated, with context already attached.

The results after 90 days

Metric

Before Violet

After Violet

Monthly churn rate

4.2%

2.7%

Avg time to at-risk intervention

18 days

7 days

CS admin hours per week

18 hours

<2 hours

Accounts per CS rep (manageable)

50

80

"The churn number speaks for itself. But what I didn't expect was how much better our CS team felt about their jobs. They were finally doing CS work instead of spreadsheet work." — Sam Thornton, VP of Product, Greyline

What they automated next

With churn detection running, Greyline built an expansion workflow — automatically identifying accounts showing high engagement and routing them to their account management team for upsell conversations.

What's next for Greyline

Greyline is building a quarterly business review workflow that automatically compiles an account health summary, pulls key usage metrics, and generates a draft QBR deck for each CS rep — ready two weeks before every review cycle.

"Violet became the connective tissue of our entire CS operation. I genuinely don't know how we managed without it." — Sam Thornton, VP of Product, Greyline

Greyline

A B2B SaaS company providing analytics and business intelligence tools for mid-market companies.

Details

Industry

Business Intelligence

Company size

54 employees

Founded

2018

Region

North America

Use case

Churn prevention

Create a free website with Framer, the website builder loved by startups, designers and agencies.