UNPKG

@unifygtm/intent-client

Version:

JavaScript client for interacting with the Unify Intent API in the browser.

272 lines (240 loc) 6.05 kB
/** * All possible event types emitted by Navattic. */ export enum NavatticEventType { VIEW_STEP = 'VIEW_STEP', START_FLOW = 'START_FLOW', COMPLETE_FLOW = 'COMPLETE_FLOW', START_CHECKLIST = 'START_CHECKLIST', OPEN_CHECKLIST = 'OPEN_CHECKLIST', CLOSE_CHECKLIST = 'CLOSE_CHECKLIST', COMPLETE_TASK = 'COMPLETE_TASK', CONVERTED = 'CONVERTED', NAVIGATE = 'NAVIGATE', IDENTIFY_USER = 'IDENTIFY_USER', ENGAGE = 'ENGAGE', } /** * All possible sources for user attributes identifiable by Navattic. */ export enum NavatticAttributeSource { FORM = 'FORM', IDENTIFY = 'IDENTIFY', QUERY_PARAMS = 'QUERY_PARAMS', SHARE_LINK = 'SHARE_LINK', ENRICHMENT = 'ENRICHMENT', REDUCER = 'REDUCER', OTHER = 'OTHER', } /** * Known object types for Navattic event data. */ export enum NavatticObject { COMPANY_ACCOUNT = 'COMPANY_ACCOUNT', END_USER = 'END_USER', } /** * Known capture methods for Navattic event data. */ export enum NavatticCaptureMethod { DEMO = 'DEMO', } export interface NavatticProject { /** * ID of the project. */ id?: string; /** * Name of the project. */ name?: string; } export interface NavatticFlow { /** * ID of the flow. */ id?: string; /** * Name of the flow. */ name?: string; } export interface NavatticStep { /** * Name of the step. */ name?: string; /** * Zero-based index of the step in the flow. */ indx?: number; } export interface NavatticChecklist { /** * ID of the checklist. */ id?: string; /** * Name of the checklist. */ name?: string; } export interface NavatticTask { /** * ID of the task. */ id?: string; /** * Title of the task. */ title?: string; } export enum NavatticDefaultCustomPropertyName { FirstName = 'firstName', LastName = 'lastName', FullName = 'fullName', Email = 'email', Phone = 'phone', OperatingSystem = 'os', Browser = 'browser', BrowserVersion = 'browserVersion', Device = 'device', City = 'visitorCity', State = 'visitorState', Country = 'visitorCountry', PostalCode = 'visitorPostalCode', CurrentURL = 'currentURL', Path = 'path', SessionId = 'sessionId', ScreenWidth = 'screenWidth', ScreenHeight = 'screenHeight', UtmCampaign = 'utm_campaign', UtmContent = 'utm_content', UtmMedium = 'utm_medium', UtmSource = 'utm_source', UtmReferrer = 'utm_referrer', UtmTerm = 'utm_term', LastViewedFlowId = 'lastViewedFlowId', LastViewedFlowName = 'lastViewedFlowName', LastViewedStepName = 'lastViewedStepName', LastViewedStepIndex = 'lastViewedStepIndex', LastViewedStepId = 'lastViewedStepId', LastViewedChecklistName = 'lastViewedChecklistName', LastViewedProjectName = 'lastViewedProjectName', LastViewedProjectId = 'lastViewedProjectId', InterestAreas = 'interestAreas', InterestLevels = 'interestLevels', CompanyName = 'name', CompanyDescription = 'description', CompanyLogo = 'logo', CompanyLinkedin = 'linkedin', CompanyIndustry = 'industry', CompanyIndustryGroup = 'industryGroup', CompanySubIndustry = 'subIndustry', CompanySize = 'size', CompanyDomain = 'domain', CompanyCity = 'city', CompanyState = 'state', CompanyCountry = 'country', CompanyPostalCode = 'postalCode', CompanyEstimatedAnnualRevenue = 'estimatedAnnualRevenue', CompanyTechnologyStack = 'technologyStack', CompanyConfidenceScore = 'confidenceScore', CompanyEmployeeCount = 'employeeCount', CompanyAmountRaised = 'amountRaised', CompanySector = 'sector', CompanyTrafficRank = 'trafficRank', CompanyFoundedYear = 'foundedYear', HubspotCookie = 'hubspotCookie', MarketoCookie = 'marketoCookie', } export interface NavatticEventDataProperty { captureMethod?: NavatticCaptureMethod; object?: NavatticObject; source?: NavatticAttributeSource; name?: string; value?: string; } export interface NavatticClientSideMetadata { browser?: string; browser_version?: string; current_url?: string; device?: string; gclid?: string; host?: string; os?: string; pathname?: string; query_strings?: object; referrer?: string; referring_domain?: string; screen_height?: number; screen_width?: number; } export type NavatticEventData = | BaseNavatticEventData | NavatticNavigateEventData; /** * Interface describing the expected payload of an event * emitted by a Navattic iframe. */ export interface BaseNavatticEventData { /** * The type of the event. */ type?: NavatticEventType; /** * Project associated with the Navattic demo. */ project?: NavatticProject; /** * Flow that the user is currently in. */ flow?: NavatticFlow; /** * Current step of the flow the user is currently in. */ step?: NavatticStep; /** * If there is a checklist in the current project, the * data associated with that checklist. */ checklist?: NavatticChecklist; /** * If there is a checklist and the user is currently on the * checklist, the current task from that list. */ task?: NavatticTask; /** * IDs of tasks already completed by the user at this point. */ completions?: string[]; /** * ID of the customer accessing the demo. Shows up at the URL: * https://app.navattic.com/your-workspace/customers/{customerId} */ customerId?: string; /** * ID of the user's current Navattic session. */ sessionId?: string; /** * Metadata about the user's device, browser, etc. */ clientSideMetadata?: NavatticClientSideMetadata; /** * Attributes that have been identified for the user, grouped * by the source they come from, e.g. a form-fill. */ eventAttributes?: Record<NavatticAttributeSource, { [key: string]: any }>; /** * Data properties for the current end user, company account, etc. */ properties?: NavatticEventDataProperty[]; } export type NavatticNavigateEventData = BaseNavatticEventData & { type: NavatticEventType.NAVIGATE; /** * URL of the link that the visitor navigated to. */ url?: string; };