Guides / Monitoring
A channel is a named stream of events — like a topic in a message queue. You create one implicitly the first time you call logit.now("channel-name", ...). There's no upfront configuration.
// ❌ Don't do this
await logit.now("events", { event: "User signed up", ... });
await logit.now("events", { event: "Payment failed", ... });
await logit.now("events", { event: "Cron job ran", ... });
Everything ends up in one stream. You can't filter. You can't set Smart Actions rules that target "only payment failures." You lose granularity.
// ✅ Domain-specific channels
await logit.now("signups", { event: "New user signed up", ... });
await logit.now("payments", { event: "Payment failed", ... });
await logit.now("cron", { event: "Daily report job ran", ... });
await logit.now("errors", { event: "Application error", ... });
await logit.now("security", { event: "Auth failure", ... });
| Channel | Events |
|---|---|
signups | New user, verification email sent, email confirmed |
payments | Payment succeeded, failed, refunded |
subscriptions | Trial started, converted, cancelled, upgraded |
errors | Application errors, uncaught exceptions |
cron | Scheduled job start, success, failure |
security | Auth failures, password resets, suspicious activity |
emails | Transactional emails sent, bounced, opened |
jobs | Background job queued, completed, failed |
Smart Actions rules target a specific channel. If all your events are in one channel, you can't write a rule that fires only on payment failures. Domain separation makes rules precise.
payment-links, trial-signups.tags to distinguish within a channel (e.g. tags: { plan: "pro" }).Try LogIt free
7-day trial. No credit card required.