// Type definitions for Google Analytics (Classic and Universal) // Project: https://developers.google.com/analytics/devguides/collection/gajs/, https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference // Definitions by: Ronnie Haakon Hegelund , Pat Kujawa , Tyler Murphy // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare class Tracker { _trackPageview(): void; _getName(): string; _getAccount(): string; _getVersion(): string; _getVisitorCustomVar(index: number): string; _setAccount(): string; _setCustomVar(index: number, name: string, value: string, opt_scope?: number): boolean; _setSampleRate(newRate: string): void; _setSessionCookieTimeout(cookieTimeoutMillis: number): void; _setSiteSpeedSampleRate(sampleRate: number): void; _setVisitorCookieTimeout(milliseconds: number): void; _trackPageLoadTime(): void; } interface GoogleAnalyticsCode { push(commandArray: string[]): void; push(func: Function): void; } interface GoogleAnalyticsTracker { _getTracker(account: string): Tracker; _createTracker(opt_account: string, opt_name?: string): Tracker; _getTrackerByName(opt_name?: string): Tracker; _anonymizeIp(): void; } interface GoogleAnalytics { type: string; src: string; async: boolean; } declare namespace UniversalAnalytics { // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference // https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitType type HitType = 'pageview' | 'screenview' | 'event' | 'transaction' | 'item' | 'social' | 'exception' | 'timing'; // https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference interface FieldsObject { affiliation?: string; allowAnchor?: boolean; allowLinker?: boolean; alwaysSendReferrer?: boolean; anonymizeIp?: boolean; appId?: string; appInstallerId?: string; appName?: string; appVersion?: string; brand?: string; campaignId?: string; campaignContent?: string; campaignKeyword?: string; campaignMedium?: string; campaignName?: string; campaignSource?: string; category?: string; clientId?: string; contentGroup1?: string; contentGroup2?: string; contentGroup3?: string; contentGroup4?: string; contentGroup5?: string; contentGroup6?: string; contentGroup7?: string; contentGroup8?: string; contentGroup9?: string; contentGroup10?: string; cookieName?: string; cookieDomain?: string; cookieExpires?: number; cookiePath?: string; coupon?: string; creative?: string; currencyCode?: string; dataSource?: string; dimension1?: string; dimension2?: string; dimension3?: string; dimension4?: string; dimension5?: string; dimension6?: string; dimension7?: string; dimension8?: string; dimension9?: string; dimension10?: string; dimension11?: string; dimension12?: string; dimension13?: string; dimension14?: string; dimension15?: string; dimension16?: string; dimension17?: string; dimension18?: string; dimension19?: string; dimension20?: string; dimension21?: string; dimension22?: string; dimension23?: string; dimension24?: string; dimension25?: string; dimension26?: string; dimension27?: string; dimension28?: string; dimension29?: string; dimension30?: string; dimension31?: string; dimension32?: string; dimension33?: string; dimension34?: string; dimension35?: string; dimension36?: string; dimension37?: string; dimension38?: string; dimension39?: string; dimension40?: string; dimension41?: string; dimension42?: string; dimension43?: string; dimension44?: string; dimension45?: string; dimension46?: string; dimension47?: string; dimension48?: string; dimension49?: string; dimension50?: string; dimension51?: string; dimension52?: string; dimension53?: string; dimension54?: string; dimension55?: string; dimension56?: string; dimension57?: string; dimension58?: string; dimension59?: string; dimension60?: string; dimension61?: string; dimension62?: string; dimension63?: string; dimension64?: string; dimension65?: string; dimension66?: string; dimension67?: string; dimension68?: string; dimension69?: string; dimension70?: string; dimension71?: string; dimension72?: string; dimension73?: string; dimension74?: string; dimension75?: string; dimension76?: string; dimension77?: string; dimension78?: string; dimension79?: string; dimension80?: string; dimension81?: string; dimension82?: string; dimension83?: string; dimension84?: string; dimension85?: string; dimension86?: string; dimension87?: string; dimension88?: string; dimension89?: string; dimension90?: string; dimension91?: string; dimension92?: string; dimension93?: string; dimension94?: string; dimension95?: string; dimension96?: string; dimension97?: string; dimension98?: string; dimension99?: string; dimension100?: string; dimension101?: string; dimension102?: string; dimension103?: string; dimension104?: string; dimension105?: string; dimension106?: string; dimension107?: string; dimension108?: string; dimension109?: string; dimension110?: string; dimension111?: string; dimension112?: string; dimension113?: string; dimension114?: string; dimension115?: string; dimension116?: string; dimension117?: string; dimension118?: string; dimension119?: string; dimension120?: string; dimension121?: string; dimension122?: string; dimension123?: string; dimension124?: string; dimension125?: string; dimension126?: string; dimension127?: string; dimension128?: string; dimension129?: string; dimension130?: string; dimension131?: string; dimension132?: string; dimension133?: string; dimension134?: string; dimension135?: string; dimension136?: string; dimension137?: string; dimension138?: string; dimension139?: string; dimension140?: string; dimension141?: string; dimension142?: string; dimension143?: string; dimension144?: string; dimension145?: string; dimension146?: string; dimension147?: string; dimension148?: string; dimension149?: string; dimension150?: string; dimension151?: string; dimension152?: string; dimension153?: string; dimension154?: string; dimension155?: string; dimension156?: string; dimension157?: string; dimension158?: string; dimension159?: string; dimension160?: string; dimension161?: string; dimension162?: string; dimension163?: string; dimension164?: string; dimension165?: string; dimension166?: string; dimension167?: string; dimension168?: string; dimension169?: string; dimension170?: string; dimension171?: string; dimension172?: string; dimension173?: string; dimension174?: string; dimension175?: string; dimension176?: string; dimension177?: string; dimension178?: string; dimension179?: string; dimension180?: string; dimension181?: string; dimension182?: string; dimension183?: string; dimension184?: string; dimension185?: string; dimension186?: string; dimension187?: string; dimension188?: string; dimension189?: string; dimension190?: string; dimension191?: string; dimension192?: string; dimension193?: string; dimension194?: string; dimension195?: string; dimension196?: string; dimension197?: string; dimension198?: string; dimension199?: string; dimension200?: string; encoding?: string; eventAction?: string; eventCategory?: string; eventLabel?: string; eventValue?: number; exDescription?: string; exFatal?: boolean; expId?: string; expVar?: string; flashVersion?: string; forceSSL?: boolean; hitCallback?(): void; hitType?: HitType; hostname?: string; id?: string; javaEnabled?: boolean; language?: string; legacyCookieDomain?: string; legacyHistoryImport?: boolean; linkid?: string; list?: string; location?: string; metric1?: string | number; metric2?: string | number; metric3?: string | number; metric4?: string | number; metric5?: string | number; metric6?: string | number; metric7?: string | number; metric8?: string | number; metric9?: string | number; metric10?: string | number; metric11?: string | number; metric12?: string | number; metric13?: string | number; metric14?: string | number; metric15?: string | number; metric16?: string | number; metric17?: string | number; metric18?: string | number; metric19?: string | number; metric20?: string | number; metric21?: string | number; metric22?: string | number; metric23?: string | number; metric24?: string | number; metric25?: string | number; metric26?: string | number; metric27?: string | number; metric28?: string | number; metric29?: string | number; metric30?: string | number; metric31?: string | number; metric32?: string | number; metric33?: string | number; metric34?: string | number; metric35?: string | number; metric36?: string | number; metric37?: string | number; metric38?: string | number; metric39?: string | number; metric40?: string | number; metric41?: string | number; metric42?: string | number; metric43?: string | number; metric44?: string | number; metric45?: string | number; metric46?: string | number; metric47?: string | number; metric48?: string | number; metric49?: string | number; metric50?: string | number; metric51?: string | number; metric52?: string | number; metric53?: string | number; metric54?: string | number; metric55?: string | number; metric56?: string | number; metric57?: string | number; metric58?: string | number; metric59?: string | number; metric60?: string | number; metric61?: string | number; metric62?: string | number; metric63?: string | number; metric64?: string | number; metric65?: string | number; metric66?: string | number; metric67?: string | number; metric68?: string | number; metric69?: string | number; metric70?: string | number; metric71?: string | number; metric72?: string | number; metric73?: string | number; metric74?: string | number; metric75?: string | number; metric76?: string | number; metric77?: string | number; metric78?: string | number; metric79?: string | number; metric80?: string | number; metric81?: string | number; metric82?: string | number; metric83?: string | number; metric84?: string | number; metric85?: string | number; metric86?: string | number; metric87?: string | number; metric88?: string | number; metric89?: string | number; metric90?: string | number; metric91?: string | number; metric92?: string | number; metric93?: string | number; metric94?: string | number; metric95?: string | number; metric96?: string | number; metric97?: string | number; metric98?: string | number; metric99?: string | number; metric100?: string | number; metric101?: string | number; metric102?: string | number; metric103?: string | number; metric104?: string | number; metric105?: string | number; metric106?: string | number; metric107?: string | number; metric108?: string | number; metric109?: string | number; metric110?: string | number; metric111?: string | number; metric112?: string | number; metric113?: string | number; metric114?: string | number; metric115?: string | number; metric116?: string | number; metric117?: string | number; metric118?: string | number; metric119?: string | number; metric120?: string | number; metric121?: string | number; metric122?: string | number; metric123?: string | number; metric124?: string | number; metric125?: string | number; metric126?: string | number; metric127?: string | number; metric128?: string | number; metric129?: string | number; metric130?: string | number; metric131?: string | number; metric132?: string | number; metric133?: string | number; metric134?: string | number; metric135?: string | number; metric136?: string | number; metric137?: string | number; metric138?: string | number; metric139?: string | number; metric140?: string | number; metric141?: string | number; metric142?: string | number; metric143?: string | number; metric144?: string | number; metric145?: string | number; metric146?: string | number; metric147?: string | number; metric148?: string | number; metric149?: string | number; metric150?: string | number; metric151?: string | number; metric152?: string | number; metric153?: string | number; metric154?: string | number; metric155?: string | number; metric156?: string | number; metric157?: string | number; metric158?: string | number; metric159?: string | number; metric160?: string | number; metric161?: string | number; metric162?: string | number; metric163?: string | number; metric164?: string | number; metric165?: string | number; metric166?: string | number; metric167?: string | number; metric168?: string | number; metric169?: string | number; metric170?: string | number; metric171?: string | number; metric172?: string | number; metric173?: string | number; metric174?: string | number; metric175?: string | number; metric176?: string | number; metric177?: string | number; metric178?: string | number; metric179?: string | number; metric180?: string | number; metric181?: string | number; metric182?: string | number; metric183?: string | number; metric184?: string | number; metric185?: string | number; metric186?: string | number; metric187?: string | number; metric188?: string | number; metric189?: string | number; metric190?: string | number; metric191?: string | number; metric192?: string | number; metric193?: string | number; metric194?: string | number; metric195?: string | number; metric196?: string | number; metric197?: string | number; metric198?: string | number; metric199?: string | number; metric200?: string | number; name?: string; nonInteraction?: boolean; option?: string; page?: string; position?: number | string; price?: string; quantity?: number; queueTime?: number; referrer?: string; revenue?: string; sampleRate?: number; sessionControl?: string; siteSpeedSampleRate?: number; screenColors?: string; screenName?: string; screenResolution?: string; shipping?: string; socialAction?: string; socialNetwork?: string; socialTarget?: string; some?: string; step?: boolean | number; storage?: string; storeGac?: boolean; tax?: string; timingCategory?: string; timingLabel?: string; timingValue?: number; timingVar?: string; title?: string; transport?: string; useBeacon?: boolean; userId?: string; variant?: string; viewportSize?: string; } interface ga { l: number; q: any[]; ( command: 'send', hitType: 'event', eventCategory: string, eventAction: string, eventLabel?: string, eventValue?: number, fieldsObject?: FieldsObject): void; ( command: 'send', hitType: 'event', fieldsObject: { eventCategory: string, eventAction: string, eventLabel?: string, eventValue?: number, nonInteraction?: boolean }): void; ( command: 'send', fieldsObject: { hitType: HitType, // 'event' eventCategory: string, eventAction: string, eventLabel?: string, eventValue?: number, nonInteraction?: boolean }): void; (command: 'send', hitType: 'pageview', page: string): void; ( command: 'send', hitType: 'social', socialNetwork: string, socialAction: string, socialTarget: string): void; ( command: 'send', hitType: 'social', fieldsObject: { socialNetwork: string, socialAction: string, socialTarget: string }): void; ( command: 'send', hitType: 'timing', timingCategory: string, timingVar: string, timingValue: number): void; ( command: 'send', hitType: 'timing', fieldsObject: { timingCategory: string, timingVar: string, timingValue: number }): void; (command: 'send', fieldsObject: FieldsObject): void; (command: string, hitType: HitType, ...fields: any[]): void; (command: 'require', pluginName: string, pluginOptions?: any): void; (command: 'provide', pluginName: string, pluginConstructor: (tracker: Tracker, pluginOptions?: Object) => void): void; (command: 'create', trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: FieldsObject): void; (command: 'remove'): void; (command: string, ...fields: any[]): void; (readyCallback: (defaultTracker?: Tracker) => void): void; create(trackingId: string, cookieDomain: string, name: string, fieldsObject?: FieldsObject): Tracker; create(trackingId: string, cookieDomain: string, fieldsObject?: FieldsObject): Tracker; create(trackingId: string, fieldsObject?: FieldsObject): Tracker; getAll(): Tracker[]; getByName(name: string): Tracker; remove(name: string): void; } interface Tracker { get(fieldName: string): any; set(fieldName: string, fieldValue: any): void; set(fieldsObject: {}): void; send(hitType: string, ...fields: any[]): void; send(hitType: string, fieldsObject: {}): void; } interface Model { get(fieldName: string): any; set(fieldName: string, fieldValue: any, temporary?: boolean): void; set(fields: {}, fieldValue?: null, temporary?: boolean): void; } } declare var gaClassic: GoogleAnalytics; declare var ga: UniversalAnalytics.ga; declare var _gaq: GoogleAnalyticsCode; declare var _gat: GoogleAnalyticsTracker;