React integration
React Integration
Follow these steps to integrate the Staysignal widget into your React application:
1. Create a Widget Component
This component loads the widget script using your Site ID (from the URL) and handles initialization.
import { useEffect } from 'react';
interface StaySignalWidgetProps {
onComplete?: (payload: any) => void;
onError?: (error: any) => void;
}
declare global {
interface Window { StaySignal: any; }
}
export function StaySignalWidget({ onComplete, onError }: StaySignalWidgetProps) {
useEffect(() => {
const scriptId = 'staysignal-widget-script';
if (document.getElementById(scriptId)) return;
const script = document.createElement('script');
script.id = scriptId;
script.src = '/api/widget/script/YOUR_SITE_ID_HERE'; // Use the new script URL
script.async = true;
script.onload = () => {
if (!window.StaySignal) {
console.error("StaySignal object not found after script load.");
onError?.(new Error("StaySignal failed to initialize."));
return;
}
window.StaySignal.init({
// site_id is included in the script URL
onComplete: (payload: any) => { onComplete?.(payload); },
onError: (error: any) => { onError?.(error); }
});
window.StaySignal.onReady(() => { /* Widget Core Ready */ });
};
script.onerror = () => { onError?.(new Error("Failed to load StaySignal script.")); };
document.body.appendChild(script);
return () => {
const existingScript = document.getElementById(scriptId);
if (existingScript) {
document.body.removeChild(existingScript);
}
};
}, [onComplete, onError]); // Adjust dependencies
return null; // Component doesn't render anything itself
}2. Create a Cancel Button Component
3. Use the Components
Learn how to retrieve the correct subscription ID
Need Help?
If you encounter any issues with the integration, please contact our support team.
Last updated