GROWTH PATTERN

Building Event-Driven Growth with Umami

Umami collects analytics data, but events aren't connected to growth automation workflows that drive user engagement.

Umami

Last updated:

What's Missing in Standard Umami Architecture

Umami collects analytics data, but events aren't connected to growth automation workflows. Analytics remain passive instead of driving automated user engagement.

Standard Umami Flow vs Optimized Skene Flow

Standard Flow
1

User has access to Umami features

2

Features available but usage not monitored

3

No activation prompts for unused features

Skene Flow
1

Monitor Umami usage patterns and feature adoption

2

Identify users who haven't used key features

3

Trigger feature discovery emails with examples and use cases

4

Track feature adoption and send advanced usage guides

Visual comparison of the flows:

Loading diagram...

How Skene Fixes This

The Skene setup for Umami transforms passive analytics into active growth automation, automatically segmenting users by behavior and triggering personalized campaigns.

Implementation Comparison

Using Skene Infrastructure

Install via Prompt

cursor.mdc
@task: Initialize Skene.
@action: Analyze my local code, validating subscription via `npx skene login`, and generate `skene.config.ts` to implement the Analytics Activation pattern for Umami.

Copy Skene Prompt for Cursor

Generated skene.config.ts

skene.config.ts
// skene.config.ts - The Automated Way
import { defineLoop } from '@skene/sdk';

export default defineLoop({
  type: 'retention',
  opinion: 'Detect dormant users and trigger personalized re-engagement campaigns',
  steps: [
    {
      trigger: {
        type: 'schedule',
        cron: '0 9 * * *' // Daily at 9 AM
      },
      condition: {
        type: 'query',
        query: `SELECT * FROM users WHERE last_activity_at < NOW() - INTERVAL '7 days' AND re_engagement_sent = false`,
        timeout: '10m'
      },
      action: {
        type: 'email',
        provider: 'resend',
        template: 're_engagement',
        personalization: {
          name: '{{user.name}}',
          lastActivity: '{{user.last_activity_at}}'
        }
      }
    }
  ],
  recovery: {
    retries: 3,
    backoff: 'exponential'
  }
});

Frequently asked questions