Data Model Overview
Create custom objects, fields, and structure your data.
Kantos uses a flexible data model that lets you create custom objects and fields to match your business needs. This guide covers the core concepts, field types, relationships, and best practices for structuring your CRM data.
Flexible by Design
Unlike rigid CRMs that force you into predefined structures, Kantos lets you model your data the way your business actually works. Create any object type, add custom fields, and define relationships that make sense for your workflows.
Core Concepts
Objects
Objects are the building blocks of your CRM. Each object represents a type of data you want to track—like Contacts, Companies, Deals, or any custom entity unique to your business. Think of objects as database tables with a friendly interface.
| Property | Description | Example |
|---|---|---|
| Name | Display name for the object | Contacts, Projects, Vehicles |
| Slug | URL-safe identifier (auto-generated) | contacts, projects, vehicles |
| Icon | Visual identifier in the sidebar | User, Folder, Car |
| Description | Optional explanation of purpose | "People who have contacted us" |
Fields
Fields define what information you store on each object. Every field has a type that determines how data is validated, displayed, and searched. Kantos supports 15+ field types to handle any data structure.
Records
Records are individual entries within an object. For example, each contact in your Contacts object is a record. Records contain field values and metadata like creation date, last modified, and the user who made changes.
Default Objects
Every Kantos organization starts with three built-in objects. These can be customized or hidden, but cannot be deleted:
| Object | Purpose | Default Fields |
|---|---|---|
| Contacts | Individual people you interact with | Name, Email, Phone, Company, Status |
| Companies | Organizations and businesses | Name, Website, Industry, Size, Address |
| Deals | Sales opportunities and pipeline tracking | Name, Value, Stage, Close Date, Contact |
Customize Default Objects
The default objects are just starting points. Add custom fields, rename them, or create entirely new objects that better fit your business model.
Creating Custom Objects
Create custom objects to track anything specific to your business: Projects, Products, Tickets, Properties, Vehicles, Students—anything.
Navigate to Settings
Go to Settings → Data Model in your Kantos dashboard.
Click "Create Object"
Enter a name for your object (e.g., "Projects"). A URL slug will be auto-generated.
Choose an Icon
Select an icon that represents this object type. This appears in the sidebar navigation.
Add Fields
Define the fields you want to track. You can always add more fields later.
Save and Publish
Click Save. The object is immediately available in your sidebar and via the API.
Field Types Reference
Kantos supports a comprehensive set of field types. Choose the right type for proper validation, display formatting, and search behavior:
Basic Fields
| Type | Description | Use Cases |
|---|---|---|
| Text | Single line of text (up to 255 characters) | Names, titles, short descriptions |
| Long Text | Multi-line text with no character limit | Notes, descriptions, comments |
| Number | Integer or decimal values | Quantities, scores, percentages |
| Currency | Monetary values with formatting | Deal values, budgets, prices |
| Checkbox | Boolean true/false value | Opt-ins, flags, confirmations |
Contact Fields
| Type | Validation | Features |
|---|---|---|
| Valid email format required | Click to compose, deduplication | |
| Phone | International phone formatting | Click to call, auto-formatting |
| URL | Valid web address required | Click to open, preview generation |
Date & Time Fields
| Type | Format | Use Cases |
|---|---|---|
| Date | Date only (no time) | Birthdays, deadlines, milestones |
| DateTime | Date with time and timezone | Appointments, events, timestamps |
Selection Fields
| Type | Description | Use Cases |
|---|---|---|
| Dropdown | Single selection from predefined options | Status, category, priority |
| Multi-Select | Multiple selections allowed | Tags, interests, skills |
| Status | Pipeline stages with colors | Deal stages, ticket status, lead status |
Relationship Fields
| Type | Description | Use Cases |
|---|---|---|
| Lookup | Reference to another object (one-to-many) | Contact → Company, Deal → Contact |
| Multi-Lookup | References to multiple records (many-to-many) | Project → Team Members, Product → Categories |
| User | Reference to a Kantos user | Owner, assigned to, created by |
Special Fields
| Type | Description | Use Cases |
|---|---|---|
| Formula | Calculated value from other fields | Full name, age, total value |
| Rollup | Aggregation from related records | Total deal value, contact count |
| File | File attachment storage | Documents, images, contracts |
Creating Fields
Open Object Settings
Navigate to the object you want to modify in Settings → Data Model.
Click "Add Field"
Enter a field name and select the appropriate field type.
Configure Field Options
Set options like required, unique, default value, and type-specific settings.
Set Display Options
Choose whether to show in list view, detail view, and search results.
Save Field
Click Save. The field is immediately available on all records.
{
"name": "Annual Revenue",
"slug": "annual_revenue",
"type": "currency",
"options": {
"currency": "USD",
"required": false,
"show_in_list": true,
"show_in_detail": true,
"searchable": false
}
}Relationships
Relationships connect records across objects, enabling powerful data modeling and reporting capabilities.
One-to-Many Relationships
The most common relationship type. One parent record relates to many child records. Use Lookup fields to create these connections.
Company (1) ←→ (Many) Contacts
├── Acme Corp → John Smith, Jane Doe, Bob Wilson
└── Tech Inc → Alice Brown, Charlie Davis
Deal (1) ←→ (Many) Activities
├── Enterprise Deal → Meeting, Call, Email, Proposal
└── SMB Deal → Demo, Follow-up, ContractMany-to-Many Relationships
When records on both sides can relate to multiple records on the other side. Use Multi-Lookup fields for these connections.
Projects (Many) ←→ (Many) Team Members
├── Website Redesign → Alice, Bob, Charlie
├── Mobile App → Alice, Diana, Eve
└── API Integration → Bob, Charlie, Eve
Products (Many) ←→ (Many) Categories
├── Laptop Pro → Electronics, Business, Featured
└── Office Chair → Furniture, Business, New ArrivalsCreating Relationships
Add a Lookup Field
Create a new field with type "Lookup" or "Multi-Lookup" on the child object.
Select Target Object
Choose which object this field should link to.
Configure Display
Choose which field from the related object to display (usually Name).
Enable Related List (Optional)
Show related records on the parent object's detail view.
Status Fields & Pipelines
Status fields create visual pipelines for tracking record progress. Perfect for sales deals, support tickets, project tasks, or any workflow with stages.
Configuring Status Options
{
"name": "Deal Stage",
"type": "status",
"options": {
"stages": [
{ "name": "Lead", "color": "gray", "order": 1 },
{ "name": "Qualified", "color": "blue", "order": 2 },
{ "name": "Proposal", "color": "yellow", "order": 3 },
{ "name": "Negotiation", "color": "orange", "order": 4 },
{ "name": "Closed Won", "color": "green", "order": 5, "is_closed": true },
{ "name": "Closed Lost", "color": "red", "order": 6, "is_closed": true }
],
"default_stage": "Lead"
}
}Pipeline Views
Status fields automatically enable Kanban board views. Drag and drop records between stages for a visual pipeline experience.
Formula Fields
Formula fields compute values automatically based on other fields. They update in real-time when source fields change.
Formula Examples
// Full Name (concatenation)
CONCAT(first_name, " ", last_name)
// Age from birthdate
YEAR(TODAY()) - YEAR(birthdate)
// Days until deadline
DATEDIFF(deadline, TODAY(), "days")
// Commission calculation
deal_value * commission_rate / 100
// Conditional status
IF(score >= 80, "Hot", IF(score >= 50, "Warm", "Cold"))Rollup Fields
Rollup fields aggregate data from related records. Useful for totals, counts, and summary statistics on parent records.
{
"name": "Total Deal Value",
"type": "rollup",
"options": {
"related_object": "deals",
"related_field": "value",
"aggregation": "SUM",
"filter": { "stage": { "$ne": "Closed Lost" } }
}
}
// Available aggregations:
// SUM - Total of all values
// COUNT - Number of records
// AVG - Average value
// MIN - Minimum value
// MAX - Maximum valueData Import
Import existing data from CSV files or other CRMs. Kantos handles field mapping and deduplication automatically.
Prepare Your CSV
Ensure your CSV has headers that match or can be mapped to your field names.
Go to Import
Navigate to the object and click Import → Upload CSV.
Map Fields
Match CSV columns to Kantos fields. Unmapped columns are ignored.
Configure Deduplication
Choose a unique field (like Email) to prevent duplicate records.
Review and Import
Preview the first few records, then start the import process.
Import Limits
CSV imports are limited to 10,000 rows per file. For larger datasets, split into multiple files or use the API for bulk imports.
Data Export
Export records to CSV for backup, reporting, or migration purposes.
Filter Records (Optional)
Apply any filters to export only specific records.
Click Export
Click the Export button in the list view toolbar.
Select Fields
Choose which fields to include in the export.
Download CSV
The CSV file downloads to your browser.
Best Practices
Object Design
- Start simple - Begin with essential fields, add more as needed
- Use meaningful names - "Annual Contract Value" not "Field_1"
- Avoid duplication - Use relationships instead of copying data
- Plan relationships - Consider how objects connect before creating them
Field Design
- Choose the right type - Use Email for emails, not Text
- Set sensible defaults - Pre-fill common values to speed data entry
- Mark required fields - Only require truly essential data
- Use dropdowns for consistency - Prevent typos with predefined options
Performance Tips
- Limit formula complexity - Complex formulas can slow down views
- Index searchable fields - Only mark frequently searched fields as searchable
- Archive old records - Move inactive records to an archive object
API Access
All objects and fields are accessible via the Kantos API. The data model is fully reflected in API endpoints:
# List all objects
GET /api/crm/objects
# Get object schema with fields
GET /api/crm/objects/{object_id}
# Query records
GET /api/crm/records/query?object_id={object_id}
# Create a record
POST /api/crm/record
{
"object_id": "obj_contacts",
"field_values": {
"name": "John Doe",
"email": "john@example.com",
"company": "rec_company_123"
}
}Next Steps
- API Reference - Programmatically manage objects and records
- Automations - Trigger workflows when records change
- Smart Intake - Automatically create records from form submissions