import { logger } from '../logger' import { registerDynamics365Marketing, registerHTMLPlugin, registerHubspotPlugin, registerIframePlugin, } from './plugins' import { identifyFromEmail } from './utils' import { Analytics } from '../../core/analytics' import { registerDrift } from './plugins/Drift' import { registerQualified } from './plugins/Qualified' import { registerSleeknote } from './plugins/Sleeknote' import { IFormTrackingOptions } from './types' const DEFAULT_OPTIONS: IFormTrackingOptions = { shouldHash: false, identifyFromEmail: true, } export async function registerFormTracking( analytics: Analytics, partialOptions: Partial ) { const options = { ...DEFAULT_OPTIONS, ...partialOptions } if (options.identifyFromEmail) { await identifyFromEmail(analytics, options.shouldHash || false) } if ( !options.drift && !options.dynamics365Marketing && !options.html && !options.iframeForm && !options.hubspot && !options.sleeknote ) { logger.error( "'form-tracking' is enabled but no forms to identify have been specified. This means there is likely an error in your script setup." ) } if (options.drift) { registerDrift(analytics, options) logger.debug(`Drift form-tracking enabled`) } if (options.dynamics365Marketing) { registerDynamics365Marketing(analytics, options) logger.debug(`Dynamics 365 Marketing form-tracking enabled`) } if (options.html) { registerHTMLPlugin(analytics, options) logger.debug(`HTML form-tracking enabled`) } if (options.iframeForm) { registerIframePlugin(analytics, options) logger.debug(`Iframe form-tracking enabled`) } if (options.hubspot) { registerHubspotPlugin(analytics, options) logger.debug(`Hubspot form-tracking enabled`) } if (options.sleeknote) { registerSleeknote(analytics, options) logger.debug(`Sleeknote form-tracking enabled`) } if (options.qualified) { registerQualified(analytics) logger.debug('Qualified chat conversation tracking enabled') } }