tracking-crm-core
Version:
Framework simplificado y robusto de tracking CRM - Sistema modular para tracking de visitantes, sesiones, eventos y captura de leads optimizado para navegadores
114 lines (113 loc) • 3.5 kB
TypeScript
/**
* TRACKING CRM FRAMEWORK v2.1 - SIMPLIFICADO
* Framework robusto de tracking para navegadores
*
* @version 2.1.0
* @description Framework modular para tracking de visitantes, sesiones y leads
* @author Innova Marketing
*/
export interface TrackingConfig {
businessId: string;
environment?: 'development' | 'production' | 'staging';
endpoints?: {
visitorTracking?: string;
leadCapture?: string;
eventTracking?: string;
};
debug?: {
enabled?: boolean;
verbose?: boolean;
logToConsole?: boolean;
};
timing?: {
heartbeatInterval?: number;
inactivityTimeout?: number;
scrollThrottle?: number;
eventBufferSize?: number;
};
}
export interface SessionData {
sessionId: string;
visitorId: string;
businessId: string;
startTime: string;
lastActivity: string;
pageViews: number;
events: EventData[];
deviceInfo: DeviceInfo;
ipLocation?: IPLocationInfo;
utmParams?: UTMParams;
}
export interface EventData {
eventType: string;
eventName: string;
eventData: Record<string, any>;
timestamp: string;
pageUrl: string;
}
export interface DeviceInfo {
type: string;
os: string;
browser: string;
screenResolution: string;
viewportSize: string;
userAgent: string;
language: string;
timezone: string;
}
export interface IPLocationInfo {
ip?: string;
country?: string;
region?: string;
city?: string;
timezone?: string;
}
export interface UTMParams {
source?: string;
medium?: string;
campaign?: string;
term?: string;
content?: string;
}
export interface LeadData {
email: string;
nombre?: string;
telefono?: string;
tipoNegocio?: string;
mensaje?: string;
source?: string;
campaign?: string;
}
export declare const initTracker: (businessId: string, config?: Partial<TrackingConfig>) => Promise<void>;
export declare const trackEvent: (eventType: string, eventName: string, eventData?: Record<string, any>) => void;
export declare const captureLead: (leadData: LeadData) => Promise<boolean>;
export declare const getTrackingStatus: () => {
isInitialized: boolean;
businessId: string | undefined;
sessionId: string | undefined;
visitorId: string | undefined;
eventsCount: number;
lastActivity: string | undefined;
};
export declare const cleanupTracker: () => void;
export declare const trackPageView: (url?: string) => void;
export declare const trackClick: (element: string, data?: Record<string, any>) => void;
export declare const trackConversion: (type: string, value?: number, data?: Record<string, any>) => void;
declare const _default: {
initTracker: (businessId: string, config?: Partial<TrackingConfig>) => Promise<void>;
trackEvent: (eventType: string, eventName: string, eventData?: Record<string, any>) => void;
captureLead: (leadData: LeadData) => Promise<boolean>;
getTrackingStatus: () => {
isInitialized: boolean;
businessId: string | undefined;
sessionId: string | undefined;
visitorId: string | undefined;
eventsCount: number;
lastActivity: string | undefined;
};
trackPageView: (url?: string) => void;
trackClick: (element: string, data?: Record<string, any>) => void;
trackConversion: (type: string, value?: number, data?: Record<string, any>) => void;
cleanupTracker: () => void;
};
export default _default;