Visitor data model

Updated:

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNo
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
property_idstringNopoints to AnalyticsProperty
emailstringNo
namestringNo
first_namestringNo
last_namestringNo
agenumberNo
genderenumNoValues: MALE, FEMALE, INTERSEX, TRANS, NON_BINARY
countrystringNo
country_codestringNo
citystringNo
languagestringNo
timezonestringNo
first_seen_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
last_seen_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
total_sessionsnumberNo
total_page_viewsnumberNo
total_eventsnumberNo
metadatamap (string dictionary)No

TypeScript

TypeScript
export type AnalyticsVisitor = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	property_id?: string; // points to AnalyticsProperty
	email?: string;
	name?: string;
	first_name?: string;
	last_name?: string;
	age?: number;
	gender?: 'MALE' | 'FEMALE' | 'INTERSEX' | 'TRANS' | 'NON_BINARY';
	country?: string;
	country_code?: string;
	city?: string;
	language?: string;
	timezone?: string;
	first_seen_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	last_seen_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	total_sessions?: number;
	total_page_views?: number;
	total_events?: number;
	metadata?: Record<string, string dictionary>;
	raw?: any;
} 

Zod

Zod
import { z } from 'zod';

export const ZodAnalyticsVisitor = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	property_id: z.string().optional().describe("points to AnalyticsProperty"),
	email: z.string().optional(),
	name: z.string().optional(),
	first_name: z.string().optional(),
	last_name: z.string().optional(),
	age: z.number().optional(),
	gender: z.enum("MALE", "FEMALE", "INTERSEX", "TRANS", "NON_BINARY").optional(),
	country: z.string().optional(),
	country_code: z.string().optional(),
	city: z.string().optional(),
	language: z.string().optional(),
	timezone: z.string().optional(),
	first_seen_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	last_seen_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	total_sessions: z.number().optional(),
	total_page_views: z.number().optional(),
	total_events: z.number().optional(),
	metadata: z.record(z.string(), z.string dictionary()).optional(),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class AnalyticsVisitorGender(str, Enum):
	MALE = 'MALE'
	FEMALE = 'FEMALE'
	INTERSEX = 'INTERSEX'
	TRANS = 'TRANS'
	NON_BINARY = 'NON_BINARY'

@dataclasses.dataclass
class AnalyticsVisitor:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""points to AnalyticsProperty"""
	property_id: Optional[str]
	email: Optional[str]
	name: Optional[str]
	first_name: Optional[str]
	last_name: Optional[str]
	age: Optional[int]
	gender: Optional[AnalyticsVisitorGender]
	country: Optional[str]
	country_code: Optional[str]
	city: Optional[str]
	language: Optional[str]
	timezone: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	first_seen_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	last_seen_at: Optional[str]
	total_sessions: Optional[int]
	total_page_views: Optional[int]
	total_events: Optional[int]
	metadata: Optional[PropertyAnalyticsVisitorMetadata]
Are we missing anything? Let us know
Was this page helpful?