Skip to main content

Profile & Session Properties

What it is

Properties are the individual data fields that make up customer profiles and sessions in the BotBat CDP. They serve as the foundational building blocks for segmentation, personalization, analytics, and automation throughout the entire platform. Every piece of information you collect about a customer, from their name and email to custom business attributes like subscription tier or lifetime value, is stored as a property.

Profile properties are persistent attributes of a customer that remain associated with their record across all interactions. Examples include name, email, phone number, subscription plan, and lifetime value. Session properties, by contrast, capture context about a specific interaction period, such as the device type, browser, geographic location, and referrer URL. Session properties reset with each new visit and provide insight into how customers engage rather than who they are.

BotBat ships with a comprehensive set of built-in properties and gives you full control to define custom properties with specific data types, validation rules, and display settings. These properties appear throughout the platform: in the segment query builder as filterable conditions, in message templates as dynamic placeholders, in import wizards as mapping targets, and in profile detail views as readable fields.

When to use

ScenarioDescription
Extending the data modelThe built-in profile fields do not cover your business needs and you want to add custom properties like "company_name," "subscription_tier," "preferred_language," or "lead_score."
Ensuring data qualityYou need to enforce data types (string, number, boolean, date, array) and validation rules (required, regex pattern, min/max values) to maintain clean, consistent data.
Mapping imported dataYou are importing contacts from a CSV or external system and need to map source columns to BotBat profile properties, including custom fields created on the fly.
Building segment conditionsYou create segment conditions based on profile properties (e.g., "country = US AND subscription_tier = premium") and need to understand available properties and their data types.
Personalizing messagesYou insert dynamic content into campaign messages using property placeholders (e.g., Hello {{firstName}}) and need to know the exact property names and expected values.
Analyzing session contextYou want to segment or report based on interaction context such as mobile vs. desktop, direct vs. referral traffic, or geographic region.

Steps

Step 1: Navigate to Properties

Click "Customers" in the main sidebar, then select the "Properties" tab. The view is organized into two sections: Profile Properties and Session Properties. Each property is displayed with its name, data type, scope, and whether it is built-in or custom.

Properties list showing built-in and custom properties with name, type, and scope columns

Step 2: Review built-in profile properties

Browse the built-in profile properties provided by default. These properties cannot be deleted but their display names and visibility can be adjusted.

PropertyData TypeDescription
firstName / lastNameStringCustomer's first and last name.
emailString (email format)Primary email address used for email campaigns and identity matching.
phoneNumberString (E.164 format)Primary phone number used for WhatsApp, SMS, and identity matching.
channelStringThe channel through which the profile was created (whatsapp, sms, email, web).
createdAtDateTimestamp of when the profile was first created.
lastSeenDateTimestamp of the most recent event recorded for this profile.
city / countryStringGeographic information derived from IP geolocation or explicitly provided.
Profile Properties section expanded showing all default fields

Step 3: Create a custom property

Click "New Property" and configure the following fields. Take care with data type selection, as it cannot be changed after creation.

FieldRequiredDescription
NameYesInternal identifier in camelCase with no spaces (e.g., "subscriptionTier").
Display nameYesHuman-readable label shown in the UI (e.g., "Subscription Tier").
Data typeYesChoose from: String, Number, Boolean, Date, Array (multi-value), or Object (JSON).
ValidationNoOptional constraints: required flag, default value, min/max for numbers, regex pattern for strings, allowed values (enum).
ScopeYesProfile (persistent across sessions) or Session (per-session only).
VisibilityNoWhether the property appears in profile detail views and is available in template variables.
New property form with name, display name, data type, and validation fields

Step 4: Edit an existing property

Click on any property to modify its display name, validation rules, or visibility settings. The property's internal name and data type cannot be changed after creation to prevent data corruption. If you need a different data type, create a new property and migrate the data.

Step 5: Review session properties

Switch to the Session Properties section to view properties that describe interaction context. These are populated automatically when a session is initiated.

PropertyData TypeDescription
deviceTypeStringDesktop, mobile, or tablet.
browserStringBrowser name and version.
operatingSystemStringOS name and version.
locationObjectGeolocation data including city, region, country, and coordinates.
referrerStringThe referring URL or traffic source.
sessionDurationNumberLength of the session in seconds.
Session Properties section showing device, browser, location fields

Step 6: Map properties during import

When importing contacts, use the column mapping interface to match CSV columns to profile properties. If the import contains fields that do not yet exist in your schema, you can create new custom properties directly from the mapping interface without leaving the import wizard.

CSV import wizard showing source columns mapped to profile properties

Step 7: Use properties in segments

In the segment query builder, property conditions appear with type-appropriate operators. Strings support "equals," "contains," and "starts with." Numbers support "greater than," "less than," and "between." Dates support "before," "after," and "in the last N days." Boolean fields offer simple true/false toggles.

Segment condition using a custom property with type-appropriate operators

Step 8: Use properties in message templates

Insert property placeholders in campaign messages using double-brace syntax: {{propertyName}}. For optional properties where a value may not exist, use a fallback: {{city|"your area"}}. The template editor provides a variable picker that lists all available properties with their data types.

Message template editor with property variable dropdown open

Common pitfalls

PitfallWhy It MattersHow to Avoid It
Inconsistent naming conventionsMixing camelCase, snake_case, and spaces makes properties hard to use in templates and segments.Establish and enforce a naming convention before creating any properties.
Wrong data type selectionData types are permanent. Storing phone numbers as Number or dates as String limits filtering and validation.Plan your schema carefully and choose the correct data type on first creation.
Over-creating custom propertiesEvery custom property adds complexity to the data model and UI.Check whether an existing property or label serves the purpose before creating a new one.
Ignoring validation rulesWithout validation, fields contain inconsistent data (e.g., "USA," "US," "United States").Use allowed values (enum) for fields with a known set of options.
Confusing profile and session scopeSession-scoped properties reset with each visit and cannot be used for long-term segmentation.Use profile scope for any persistent customer attribute.
tip

Create a "Property Dictionary" document for your team listing every custom property, its data type, allowed values, and intended use case. This prevents duplicate properties and ensures everyone uses the same fields consistently across campaigns, segments, and templates.

  • Properties List
  • Create Property
  • Edit Property
  • Session Properties
  • Import Mapping
  • Segment Builder
  • Template Variables