Advanced
Hooks and JavaScript API
This guide covers advanced customization options including lifecycle hooks and the JavaScript API.
Lifecycle Hooks
Aidkit provides hooks that let you run custom code at various points in the form lifecycle.
onBeforeSubmit
Called before the form is submitted. You can modify the values or cancel the submission.
window.Aidkit.init({
apiKey: "your-api-key",
onBeforeSubmit: (values) => {
// Modify values
return {
...values,
metadata: {
...values.metadata,
timestamp: Date.now(),
},
};
// Or cancel submission
// return false;
},
});onAfterSubmit
Called after the form is submitted (regardless of success or failure).
window.Aidkit.init({
apiKey: "your-api-key",
onAfterSubmit: (values) => {
console.log("Form submitted with:", values);
analytics.track("support_ticket_submitted");
},
});onSuccess
Called when the ticket is successfully created.
window.Aidkit.init({
apiKey: "your-api-key",
onSuccess: (values) => {
showToast("Ticket submitted successfully!");
},
});onError
Called when ticket creation fails.
window.Aidkit.init({
apiKey: "your-api-key",
onError: (error) => {
console.error("Failed to submit ticket:", error);
showToast("Failed to submit ticket. Please try again.");
},
});All Configuration Options
interface AidkitConfig {
apiKey: string;
defaultValues?: {
name?: string;
email?: string;
// add any other fields you want
};
redirectUrl?: string;
metadata?: Record<string, unknown>;
onBeforeSubmit?: (values: FormValues) => FormValues | false | void;
onAfterSubmit?: (values: FormValues) => void;
onSuccess?: (values: FormValues) => void;
onError?: (error: string) => void;
}Programmatic Control
You can control the form programmatically after initialization:
// Initialize
window.Aidkit.init({ apiKey: "your-api-key" });
// Open on button click
document.getElementById("support-btn").addEventListener("click", () => {
window.Aidkit.open();
});
// Close programmatically
window.Aidkit.close();
// Clean up when navigating away (for SPAs)
window.Aidkit.destroy();Tip
For single-page applications (SPAs), call Aidkit.destroy() when unmounting
components that initialized Aidkit to prevent memory leaks.