Log In
GROWTH PATTERN

Adding Retention to Nhost Apps

Nhost stores data efficiently, but there's no system to detect behavioral patterns and trigger growth workflows based on user activity.

Nhost

Last updated:

What's Missing in Standard Nhost Architecture

While Nhost handles database operations well, it doesn't include activity monitoring to detect churn risk or trigger re-engagement campaigns.

Standard Nhost Flow vs Optimized Skene Flow

Standard Flow
1

User has access to Nhost features

2

Features available but usage not monitored

3

No activation prompts for unused features

Skene Flow
1

Monitor Nhost 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 watches Nhost data changes and detects user behavior patterns. It identifies inactive users and automatically sends personalized re-engagement emails to bring them back.

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 Retention Loop pattern for Nhost.

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

© 2026 Skene. All rights reserved.