Hook Examples
Form Tracking
Track form submissions to understand conversion rates, validation errors, and user behavior patterns.
Implementation
tsx
import { track } from "@databuddy/sdk";
import { useCallback } from "react";
export function useFormTracking(formName: string) {
const trackSubmit = useCallback(
(success: boolean, errors?: Record<string, string[]>) => {
track("form_submit", {
form_name: formName,
success,
error_count: errors ? Object.keys(errors).length : 0,
has_errors: !!errors && Object.keys(errors).length > 0,
});
},
[formName]
);
return { trackSubmit };
}Usage
tsx
function ContactForm() {
const { trackSubmit } = useFormTracking("contact");
const handleSubmit = async (data: FormData) => {
try {
await submitForm(data);
trackSubmit(true);
toast.success("Message sent!");
} catch (error) {
trackSubmit(false, { general: ["Failed to send message"] });
toast.error("Failed to send message");
}
};
return <form onSubmit={handleSubmit}>...</form>;
}What It Tracks
- Event:
form_submit - Properties:
form_name: Name identifier for the formsuccess: Whether submission was successfulerror_count: Number of validation errorshas_errors: Boolean indicating if errors occurred
Benefits
- Conversion Analysis: Track form completion rates
- Error Patterns: Identify common validation issues
- User Experience: Understand where users struggle with forms
Track both successful and failed submissions to get a complete picture of form performance.
Related
How is this guide?