Why Custom Objects?
Standard marketing automation data models center on contacts and companies. But your business likely has other important entities:- Products your customers have purchased
- Subscriptions they’re enrolled in
- Projects they’re collaborating on
- Courses they’ve completed
- Support tickets they’ve submitted
- Contracts they’ve signed
Key Concepts
Before diving in, here are the core concepts you’ll work with:| Concept | Description |
|---|---|
| Custom object type | A schema you define that describes a category of objects (e.g., “Product”, “Subscription”) |
| Custom object | An individual instance of a type (e.g., the “Pro Plan” subscription, or the “Enterprise Widget” product) |
| Relationship | A connection between a contact and a custom object |
| Relationship fields | Data stored on the relationship itself, describing the nature of the connection (e.g., role, quantity) |
Custom objects are contact-centric. While objects exist independently, they’re accessed and used in the context of their relationships to contacts. A contact can be related to many objects of the same type, and an object can be related to many contacts.
Custom Object Types
A custom object type defines the schema for a category of objects. Before syncing any data, you create the type that describes what fields your objects will have.Creating a Custom Object Type
Navigate to Settings → Custom Objects to create a new type. Each type requires:| Setting | Description | Requirements |
|---|---|---|
| Name | Display name for the object type | Must be unique across your instance |
| Key | Unique identifier used in Liquid and API | Alphanumeric and underscores only. Cannot be changed after creation |
| Icon | Visual identifier in the UI | Selected from available icon set |
Fields
Custom objects have two categories of fields: reserved fields that Conversion manages automatically, and custom fields that you define.Reserved Fields
Every custom object includes these system-managed fields:| Field | Description | Type |
|---|---|---|
id | Unique identifier in Conversion | String |
type | The custom object type key | String |
created_at | When the object was first synced to Conversion | Datetime |
updated_at | When the object was last modified in Conversion | Datetime |
Custom Fields
Custom fields are defined when creating or editing a custom object type. Each field requires:| Setting | Description |
|---|---|
| Label | Display name shown in the UI |
| Key | Unique identifier used in Liquid, queries, and API |
| Data type | The field’s data type |
Relationships
Relationships connect contacts to custom objects. They enable many-to-many associations: a contact can be related to multiple objects of the same type, and an object can be related to multiple contacts.How Relationships Work
A relationship is created when your data sync establishes a connection between a contact and a custom object. Each relationship:- Links exactly one contact to exactly one custom object
- Can carry its own field values (relationship fields)
- Is accessed from the contact’s perspective in Liquid and segmentation
Example: A “Project” custom object might have relationships to multiple contacts. Each relationship could have fields like
role (e.g., “Owner”, “Contributor”) and joined_date. This lets you personalize messaging based on not just which project a contact is on, but how they’re involved.Relationship Fields
Relationship fields store data about the connection itself—not the contact or the object. Common examples:| Field | Description | Example Values |
|---|---|---|
role | The contact’s role or relationship type | ”Owner”, “Member”, “Viewer” |
status | The status of the relationship | ”Active”, “Inactive” |
quantity | Quantity associated with the relationship | 5, 100 |
started_at | When the relationship began | 2025-01-15T00:00:00Z |
Segmentation
You can filter contacts based on their relationships to custom objects in audiences and workflow filters. For example, you could filter for Contacts linked to a “Subscription” wherestatus = “Active” and relationship role = “Owner”.
Workflow Triggers
Custom objects can trigger workflows when objects or relationships change. Common triggers include:- Object Updated
- Relationship Added
- Relationship Removed
- Relationship Updated
Using Custom Objects in Liquid
Custom objects are available in emails, workflow nodes, and anywhere else Liquid is supported.Accessing Objects
Access a contact’s related objects through theobjects namespace:
.first and .last as shortcuts.
Accessing Relationship Fields
Use_relationship to access fields on the relationship itself:
Iterating Over Objects
Trigger Context
When a workflow is triggered by a custom object event, the triggering object is available viatrigger.object:
For complete Liquid syntax and examples, see Liquid Templating.
Syncing Custom Objects
Custom objects are synced from external data sources. Conversion supports:- Data warehouse sync — Connect your data warehouse and map tables to custom object types
- Salesforce custom objects — Sync custom objects from Salesforce
Data Warehouse Integration
Learn how to connect your data warehouse and sync custom objects.
Deleting a Custom Object Type
Deleting a custom object type:- Removes all objects of that type from Conversion
- Removes all relationships to those objects
- Invalidates any workflows or audiences referencing that type
- Cannot be undone
Frequently Asked Questions
Can a contact be related to multiple objects of the same type?
Can a contact be related to multiple objects of the same type?
Can an object be related to multiple contacts?
Can an object be related to multiple contacts?
How many objects can I access in Liquid?
How many objects can I access in Liquid?
Liquid arrays return the 10 most recently created objects of each type (based on
created_at). Use indexes 0–9 to access specific objects.What's the difference between object fields and relationship fields?
What's the difference between object fields and relationship fields?
Object fields describe the object itself (e.g., a product’s name, price, or category). Relationship fields describe the connection between a contact and an object (e.g., the contact’s role on a project, or the quantity they purchased). The same object can have different relationship field values for different contacts.
Can I change a field's data type after creation?
Can I change a field's data type after creation?
No. Field keys and data types are immutable after creation. To change a data type, create a new field with the correct type and update your sync to populate it.