feat(donate): add PostHog analytics events
Track donation lifecycle across form, widget, admin, and backend: - Form: donation_completed, donation_*_failed, donation_slip_conflict, donation_artifact_conflict - Widget: donation_widget_displayed, donation_widget_tts_failed, donation_widget_animation_end, donation_widget_connected, donation_widget_heartbeat_failure - Admin: donation_admin_test_popup, donation_admin_widget_reload, donation_admin_resend - Backend: donation_widget_state_playing, donation_widget_state_shown, donation_resent
This commit is contained in:
@@ -3,8 +3,11 @@
|
||||
import { db } from "@/lib/db";
|
||||
import { donations } from "@/lib/db/schema";
|
||||
import { eq } from "drizzle-orm";
|
||||
import { getPostHogClient } from "@/lib/posthog-server";
|
||||
|
||||
export async function markRunning(id: string) {
|
||||
getPostHogClient().capture({ distinctId: id, event: "donation_widget_state_playing", properties: { donation_id: id } });
|
||||
|
||||
await db
|
||||
.update(donations)
|
||||
.set({ lastPing: new Date() })
|
||||
@@ -12,5 +15,7 @@ export async function markRunning(id: string) {
|
||||
}
|
||||
|
||||
export async function markDone(id: string) {
|
||||
getPostHogClient().capture({ distinctId: id, event: "donation_widget_state_shown", properties: { donation_id: id } });
|
||||
|
||||
await db.update(donations).set({ sent: true }).where(eq(donations.id, id));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user