multi-platform-tracking-sdk
Version:
🚀 Professional Multi-Platform Tracking SDK for Facebook/Meta Pixel, Instagram Analytics & Google Tag Manager | Zero Dependencies | TypeScript Ready | Privacy Compliant GDPR/CCPA | Created by A. Z. M. Arif | Code Encover
115 lines (114 loc) • 2.76 kB
TypeScript
import { ProductData, CheckoutData, PurchaseData, SearchData, RegistrationData } from './types';
export interface GTMConfig {
/** Google Tag Manager Container ID */
gtmId: string;
/** Enable debug mode for development */
debug?: boolean;
/** Automatically track page views */
autoTrackPageViews?: boolean;
/** Custom data layer name (default: 'dataLayer') */
dataLayerName?: string;
/** Currency to use for ecommerce events */
defaultCurrency?: string;
}
declare global {
interface Window {
dataLayer: Record<string, unknown>[];
[key: string]: unknown;
}
}
/**
* Google Tag Manager tracker for comprehensive analytics
* Supports GA4, Facebook Pixel, and other tracking through GTM
*/
export declare class GTMTracker {
private config;
private isInitialized;
private dataLayerName;
constructor(config: GTMConfig);
/**
* Initialize Google Tag Manager
*/
init(): void;
/**
* Initialize data layer
*/
private initDataLayer;
/**
* Enable debug mode for development
*/
private enableDebugMode;
/**
* Load Google Tag Manager script
*/
private loadGTMScript;
/**
* Add noscript fallback for users with JavaScript disabled
*/
private addNoScriptFallback;
/**
* Push event to data layer
*/
private pushEvent;
/**
* Track page view
*/
trackPageView(url?: string, title?: string): void;
/**
* Track product view
*/
trackProductView(product: ProductData): void;
/**
* Track add to cart
*/
trackAddToCart(product: ProductData): void;
/**
* Track initiate checkout
*/
trackInitiateCheckout(data: CheckoutData): void;
/**
* Track purchase
*/
trackPurchase(data: PurchaseData): void;
/**
* Track search
*/
trackSearch(data: SearchData): void;
/**
* Track user registration
*/
trackRegistration(data?: RegistrationData): void;
/**
* Track custom event
*/
trackCustomEvent(eventName: string, parameters?: Record<string, unknown>): void;
/**
* Set user data
*/
setUserData(userData: {
userId?: string;
userType?: string;
email?: string;
isLoggedIn: boolean;
}): void;
/**
* Track add to wishlist
*/
trackAddToWishlist(product: ProductData): void;
/**
* Debug data layer contents
*/
debugDataLayer(): void;
/**
* Check if GTM is initialized
*/
isReady(): boolean;
/**
* Get current configuration
*/
getConfig(): GTMConfig;
/**
* Update configuration
*/
updateConfig(newConfig: Partial<GTMConfig>): void;
}