GROWTH PATTERN

Adding Email Engagement Tracking to Knock

While Knock delivers emails reliably, open rates and clicks aren't monitored to identify engaged vs. inactive users.

Knock

Last updated:

What's Missing in Standard Knock Architecture

Knock handles email delivery, but all users receive generic messages regardless of their engagement patterns because there's no segmentation system.

Standard Knock Flow vs Optimized Skene Flow

Standard Flow
1

User has access to Knock features

2

Features available but usage not monitored

3

No activation prompts for unused features

Skene Flow
1

Monitor Knock 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

This Skene configuration tracks Knock email engagement and automatically segments users by open rates. It triggers re-engagement campaigns for inactive users and celebrates high engagement.

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 Email Engagement pattern for Knock.

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