Variant attributes provide per-variant configuration so prompts and behavior can change by location, environment, or tenant without separate code or deployments.
At runtime, the platform selects a variant, and the agent reads the attributes associated with that variant.Location
Variant attributes are defined in:What the file contains
The file has two top-level keys:variantsattributes
Variants
Thevariants section defines the available variants.
Each variant includes:
| Field | Required | Description |
|---|---|---|
name | Yes | Unique identifier for the variant |
is_default | No | Marks the fallback variant used when no variant is resolved at runtime |
is_default: true.
Attributes
Theattributes section defines the values that vary by variant.
Each attribute includes:
| Field | Description |
|---|---|
name | Attribute identifier, ideally in snake_case |
values | Map from variant name to string value |
Example
Why variants are useful
Variants let one agent behave differently in different contexts without duplicating the whole project.Branding
Change names, labels, or brand-specific wording.
Contact details
Swap phone numbers, addresses, and office hours.
Environment-specific behavior
Store values such as region codes, timezones, or flags.
Multi-tenant setups
Reuse the same logic with tenant-specific values.
Using variant attributes in prompts and resource files
Use{{attr:attribute_name}} in supported text fields such as:
- flow step prompts
- topic actions
- rules
- greeting messages
- disclaimer messages
- personality
custom - role
custom
Example
Using variant attributes in Python
In code, variant values are read fromconv.variant:
variant_attributes.yaml.
Typical attribute types
Common uses include:| Category | Examples |
|---|---|
| Branding | greeting name, company name |
| Contact | phone numbers, addresses, office hours |
| IDs | location ID, region code |
| Feature flags | "True" / "False" strings, checked in Python |
| URLs | portal links, payment links |
| Environment | timezone, is_live |
Important formatting notes
- variant names with special characters should be quoted
- multi-line values should use
|- - every variant must have a value for every attribute
Best practices
- keep variant names stable over time
- set exactly one default variant
- provide a value or
""for every variant in every attribute - prefer
{{attr:...}}over hard-coded strings when values vary by location or environment - use multi-line YAML for disclaimers, instructions, or longer text values
Related pages
Topics
See how variant attributes are used in topic actions.
Voice settings
Use variant attributes in greetings and disclaimers.
Variant management (platform)
How variants are routed at runtime — SIP header routing, default selection, and
conv.variant access.
