Guides / SaaS
Activation is the moment a user first gets value from your product. For a project management tool it might be "invited a teammate." For an analytics tool it might be "viewed their first chart." For a payment tool it might be "received their first payment."
Logging these milestones turns a vague metric into a real-time signal.
// lib/activation.ts
import { logit } from "@/lib/logit";
export async function trackActivation(
userId: string,
email: string,
milestone: "connected_integration" | "invited_teammate" | "first_export" | "first_payment_received"
) {
await logit.now("activation", {
event: `Activation: ${milestone}`,
description: `${email} reached "${milestone}"`,
icon: "✅",
notify: false,
tags: { milestone, userId },
metadata: { userId, email, milestone, achievedAt: new Date().toISOString() },
});
}
// When user connects their first integration
await db.integration.create({ ... });
await trackActivation(user.id, user.email, "connected_integration");
// When user invites a teammate
await sendTeamInvite(email);
await trackActivation(user.id, user.email, "invited_teammate");
// When user first exports data
await generateExport(userId, format);
await trackActivation(user.id, user.email, "first_export");
| Field | Value |
|---|---|
| Name | Activation stalled |
| Channel | activation |
| Event name | Activation: connected_integration |
| Threshold | 1 (inverted — fires only if NOT reached) |
| Window | 24 hours |
| Cooldown | 24 hours |
| Action | Push notification |
Use this alongside a daily check: if fewer than N users hit your key milestone today, investigate.
Filter by milestone tag to see a timeline of each activation event. You can see:
"Activation: " so they group nicely in the dashboard.Try LogIt free
7-day trial. No credit card required.