/** Sets up the tracking library. Can be called once. */ export function init(config: PlausibleConfig): void /** Tracks an event, requires `init` to be called first. */ export function track(eventName: string, options: PlausibleEventOptions): void export interface PlausibleConfig { /** Your site's domain, as declared by you in Plausible's settings. */ domain: string /** * The URL of the Plausible API endpoint. Defaults to https://plausible.io/api/event * See proxying guide at https://plausible.io/docs/proxy/introduction */ endpoint?: string /** Whether to automatically capture pageviews. Defaults to true. */ autoCapturePageviews?: boolean /** * Whether the page uses hash based routing. Defaults to false. * Read more at https://plausible.io/docs/hash-based-routing */ hashBasedRouting?: boolean /** Whether to track outbound link clicks. Defaults to false. */ outboundLinks?: boolean /** Whether to track file downloads. Defaults to false. */ fileDownloads?: boolean | { fileExtensions: string[] } /** Whether to track form submissions. Defaults to false. */ formSubmissions?: boolean /** Whether to capture events on localhost. Defaults to false. */ captureOnLocalhost?: boolean /** Whether to log on ignored events. Defaults to true. */ logging?: boolean /** * Custom properties to add to all events tracked. * If passed as a function, it will be called when `track` is called. */ customProperties?: | CustomProperties | ((eventName: string) => CustomProperties) /** * A function that can be used to transform the payload before it is sent to the API. * If the function returns null or any other falsy value, the event will be ignored. * * This can be used to avoid sending certain types of events, or modifying any event * parameters, e.g. to clean URLs of values that should not be recorded. */ transformRequest?: ( payload: PlausibleRequestPayload ) => PlausibleRequestPayload | null /** * If enabled (the default), the script will set `window.plausible` after `init` is called. * This is used by the verifier to detect if the script is loaded from npm package. */ bindToWindow?: boolean } export interface PlausibleEventOptions { /** * Custom properties to add to the event. * Read more at https://plausible.io/docs/custom-props/introduction */ props?: CustomProperties /** * Whether the tracked event is interactive. Defaults to true. * By marking a custom event as non-interactive, it will not be counted towards bounce rate calculations. */ interactive?: boolean /** * Revenue data to add to the event. * Read more at https://plausible.io/docs/ecommerce-revenue-tracking */ revenue?: PlausibleEventRevenue /** * Called when request to `endpoint` completes or is ignored. * When request is ignored, the result will be undefined. * When request was delivered, the result will be an object with the response status code of the request. * When there was a network error, the result will be an object with the error object. */ callback?: ( result?: { status: number } | { error: unknown } | undefined ) => void /** * Overrides the URL of the page that the event is being tracked on. * If not provided, `location.href` will be used. */ url?: string } export type CustomProperties = Record export type PlausibleEventRevenue = { /** Revenue amount in `currency` */ amount: number | string /** Currency is an ISO 4217 string representing the currency code, e.g. "USD" or "EUR" */ currency: string } export type PlausibleRequestPayload = { /** Event name */ n: string /** URL of the event */ u: string /** Domain of the event */ d: string /** Referrer */ r?: string | null /** Custom properties */ p?: CustomProperties /** Revenue information */ $?: PlausibleEventRevenue /** Whether the event is interactive */ i?: boolean } & Record /** Default file types that are tracked when `fileDownloads` is enabled. */ export const DEFAULT_FILE_TYPES: string[]