feat(popup): add email capture popup with Mautic integration
Some checks failed
Build and Deploy / build (push) Has been cancelled

- Email capture popup with scroll (10%) and exit intent triggers
- First name field and full tracking (UTM, device, time on page)
- Mautic API integration for contact creation
- GeoIP detection for country/region
- 4 locale support (sr, en, de, fr)
- Mautic tracking script in layout
This commit is contained in:
Unchained
2026-04-03 20:44:15 +02:00
parent 4e5481af1a
commit eb711fbf1a
16 changed files with 1019 additions and 1 deletions

View File

@@ -15,6 +15,7 @@ import {
trackRybbitUserLogin,
trackRybbitUserRegister,
trackRybbitNewsletterSignup,
trackRybbitEvent,
} from "@/lib/services/RybbitService";
export function useAnalytics() {
@@ -178,6 +179,23 @@ export function useAnalytics() {
trackRybbitNewsletterSignup(email, source);
}, []);
// Popup tracking functions
const trackPopupView = useCallback((data: { trigger: string; locale: string; country?: string }) => {
trackRybbitEvent("popup_view", data);
}, []);
const trackPopupSubmit = useCallback((data: { trigger: string; locale: string; country?: string }) => {
trackRybbitEvent("popup_submit", data);
}, []);
const trackPopupCtaClick = useCallback((data: { locale: string }) => {
trackRybbitEvent("popup_cta_click", data);
}, []);
const trackPopupDismiss = useCallback((data: { trigger: string; locale: string }) => {
trackRybbitEvent("popup_dismiss", data);
}, []);
// No-op placeholder for identifyUser (OpenPanel removed)
const identifyUser = useCallback((_user: {
profileId: string;
@@ -203,6 +221,10 @@ export function useAnalytics() {
trackUserLogin,
trackUserRegister,
trackNewsletterSignup,
trackPopupView,
trackPopupSubmit,
trackPopupCtaClick,
trackPopupDismiss,
identifyUser,
};
}