Entities are the foundation of identity in LeadConduit. They represent the "who" in every lead transaction - who sends leads, who receives them, and what systems are involved. Think of entities as the business cards of the LeadConduit ecosystem - they establish identity, capabilities, and relationships.
At their core, entities answer two fundamental questions:
Entities are the foundation of identity in LeadConduit. They represent the "who" in every lead transaction - who sends leads, who receives them, and what systems are involved. Think of entities as the business cards of the LeadConduit ecosystem - they establish identity, capabilities, and relationships.
At their core, entities answer two fundamental questions:
LeadConduit needs to track:
Without a unified identity system, this becomes chaos. Entities solve this by providing a consistent way to represent any participant in the lead ecosystem.
Different systems have different capabilities:
Entities encode these capabilities through their type classifications and module associations.
Business relationships are complex:
Entities model these relationships, especially through the account entity and connection system.
Every entity has two fundamental classifications that define its role:
Source Classification (Can this entity send leads?)
seller - A company that sells leadsform - A web form or landing pageother - Any other type of lead sourcenull - Cannot send leadsRecipient Classification (Can this entity receive leads?)
buyer - A company that purchases leadscrm - Customer Relationship Management systemanalytics - Analytics or tracking platform (including internal scoring services)enhancement - Data enrichment serviceesp - Email Service Providerother - Any other type of recipientnull - Cannot receive leadsAn entity can be both a source and recipient. For example, a partner company might be classified as both source: "seller" and recipient: "buyer".
Important Note: Entities can represent both business relationships AND technical systems. For example, a company might create an entity called "Scoring Service" with recipient: 'analytics' to represent their internal scoring API. This allows them to track all requests to that service across multiple flows.
Account Entities
Standard Entities
Custom Entities
Pending Entities
Modules are capability declarations that define HOW an entity can technically communicate. A module_id is a unique identifier for a specific integration (e.g., "Create Salesforce Lead", "Send to HubSpot Contact", "LendingTree Ping Post"). Each entity has a module_ids array that acts as both a capability list and a constraint system.
How Module Constraints Work:
module_ids is non-empty, the entity can ONLY be configured with those specific integrationsReal-World Example - LendingTree Entity:
LendingTree has proprietary lead submission requirements that only work with specific integrations. Their entity's module_ids array contains only the modules that support their format:
{
"name": "LendingTree",
"module_ids": [
"leadconduit-lendingtree.inbound.post",
"leadconduit-lendingtree.inbound.ping_post"
]
}
For example, adding LendingTree as a flow source, only allows configuration of LendingTree-specific integration module IDs. This eliminates the possibility of trying to use a generic HTTP module that wouldn't understand LendingTree's proprietary format.
Module Types:
leadconduit-default.inbound/outbound)leadconduit-salesforce.outbound) leadconduit-custom.outbound.json)leadconduit-integration-leadconduit.outbound.to_buyer)Empty vs Non-Empty Arrays:
module_ids: Entity can use any available integration modulemodule_ids: Entity is restricted to only those specific modulesOne of LeadConduit's most powerful features is how it handles vendor-specific integrations through entities. This flips the traditional integration model on its head.
Traditional Lead Industry Model:
LeadConduit's Entity-Based Model:
Real-World Example: A major lead vendor requires:
Instead of every buyer implementing this vendor's requirements:
This approach is particularly valuable because:
The Shift to Account Entities: LeadConduit is moving away from standard entities in favor of requiring all participants to have accounts. This means:
For account entities (representing other LeadConduit accounts), the connection system tracks business relationships:
Connection Types
seller: They sell leads to youbuyer: They buy leads from youboth: Bidirectional relationshipnull: No active connectionConnections enable:
When an entity is created, it establishes:
Entities are used in flows by:
When entities are updated:
Instead of deletion, entities can be deprecated:
Enhancement services (data append, verification, etc.) are special:
When a LeadConduit account is created:
Entities inherit certain behaviors from their modules:
Entities representing buyers:
More importantly for buyers receiving leads:
Entities representing sellers:
For major vendors with custom requirements:
Entities representing systems:
Key distinction: While entities enable configuration reuse across flows, each flow must still be independently configured to connect to the service. The entity provides:
For example, a "Scoring Service" entity:
The reverse integration pattern means:
Account entities enable:
Many entities serve multiple roles:
Partner Company ABC
├── As a seller: Sends leads to you
├── As a buyer: Receives leads from you
└── As an account: Has their own LeadConduit instance
Entities often represent internal technical services:
Internal Services
├── Scoring Service (analytics recipient)
├── Data Validation API (enhancement recipient)
├── Lead Router (other recipient)
└── Internal CRM (crm recipient)
Each service entity:
Entities often follow integration patterns:
CRM Integration Pattern:
├── Standard CRM Entity (e.g., Salesforce)
├── Multiple flows use the same entity
├── Each flow configures differently
└── All share core CRM capabilities
Reality: Entities carry configuration, capabilities, and relationship data. They're active participants in lead flow, not passive labels.
Reality: Entities should be reused across flows. Create once, use many times.
Reality: While you can't change standard entities, you can configure their integrations, acceptance criteria, volume caps, pricing, etc differently in each flow.
Reality: Account entities simply represent another account on the platform. Each account only has one account entity, platform wide.
| id | string (EntityID) ^[0-9a-fA-F]{24}$ 24 character alpha-numeric BSON identifier |
| name required | string The name of the entity which is displayed throughout LeadConduit's UI |
| description | string |
| standard | boolean Read-only flag indicating whether this is a built-in entity |
boolean or null Read-only flag indicating whether this entity represents another LeadConduit account holder | |
| pending | boolean Read-only flag indicating whether this entity represents a pending entity waiting for invitation acceptance |
| connected | string Read-only flag if this Account entity is connected to my account |
| connected_account_id | string (ID) ^[0-9a-fA-F]{24}$ Associated Account ID for a custom entity. |
| deprecated | boolean |
| see | string (EntityID) ^[0-9a-fA-F]{24}$ The alternative entity ID to be used instead of this deprecated entity |
string or null The suffix required for all custom fields | |
ID (string) or null The ID of the invitation ID created on Accounts side to reference the entity | |
string or null The expiration date of the invitation from Accounts service | |
| expired | boolean Flag indicating whether the invitation has expired |
| flow_ids | Array of strings (FlowID) Array of flow IDs where this entity is listed in the |
string or null <uri> The logo for this entity | |
| module_ids required | Array of strings (Integration Module ID) Array of integration module IDs that are supported by this entity |
required | null or string Is this entity a lead source and if so, what kind? |
required | null or string Is this entity a lead recipient and if so, what kind? |
| time_zone | string If this entity represents a buyer or seller with an account, this is the account's time zone |
| trustedform_certified_vendor | boolean If this entity represents a seller, is that company a TrustedForm Certified Vendor? |
| website | string <uri> If this entity represents a buyer or seller, this is the URL to their marketing site |
| created_at | string <date-time> The time this entity was created |
| updated_at | string <date-time> The time this entity was last modified |
{- "id": "5fd4371e940df5a34a3888b2",
- "name": "A Corporation",
- "description": "string",
- "standard": false,
- "account": true,
- "pending": true,
- "connected": "seller",
- "connected_account_id": "5fd4371e940df5a34a3888b2",
- "deprecated": false,
- "see": "5fd4371e940df5a34a3888b2",
- "field_suffix": "acorp",
- "invitation_id": "5fd4371e940df5a34a3888b2",
- "invitation_expires_at": "2025-11-07T00:00:00Z",
- "expired": false,
- "flow_ids": [
- "5fd4371e940df5a34a3888b2"
], - "logo_url": "string",
- "module_ids": [
- "leadconduit-salesforce.outbound.create_contact"
], - "source": { },
- "recipient": { },
- "time_zone": "America/Los Angeles",
- "trustedform_certified_vendor": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}An entity alias provides a custom display name for a source or recipient entity within an account.
| id | string (ID) ^[0-9a-fA-F]{24}$ 24 character alpha-numeric BSON identifier |
| entity_id required | string The ID of the entity this alias belongs to |
| entity_alias required | string The custom alias name for the entity |
| account_id | string (ID) ^[0-9a-fA-F]{24}$ The account ID that owns this alias |
| created_at | string <date-time> |
| updated_at | string <date-time> |
{- "id": "5fd4371e940df5a34a3888b2",
- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name",
- "account_id": "5fd4371e940df5a34a3888b2",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}LeadConduit needs to track:
Without a unified identity system, this becomes chaos. Entities solve this by providing a consistent way to represent any participant in the lead ecosystem.
Different systems have different capabilities:
Entities encode these capabilities through their type classifications and module associations.
Business relationships are complex:
Entities model these relationships, especially through the account entity and connection system.
Every entity has two fundamental classifications that define its role:
Source Classification (Can this entity send leads?)
seller - A company that sells leadsform - A web form or landing pageother - Any other type of lead sourcenull - Cannot send leadsRecipient Classification (Can this entity receive leads?)
buyer - A company that purchases leadscrm - Customer Relationship Management systemanalytics - Analytics or tracking platform (including internal scoring services)enhancement - Data enrichment serviceesp - Email Service Providerother - Any other type of recipientnull - Cannot receive leadsAn entity can be both a source and recipient. For example, a partner company might be classified as both source: "seller" and recipient: "buyer".
Important Note: Entities can represent both business relationships AND technical systems. For example, a company might create an entity called "Scoring Service" with recipient: 'analytics' to represent their internal scoring API. This allows them to track all requests to that service across multiple flows.
Account Entities
Standard Entities
Custom Entities
Pending Entities
Modules are capability declarations that define HOW an entity can technically communicate. A module_id is a unique identifier for a specific integration (e.g., "Create Salesforce Lead", "Send to HubSpot Contact", "LendingTree Ping Post"). Each entity has a module_ids array that acts as both a capability list and a constraint system.
How Module Constraints Work:
module_ids is non-empty, the entity can ONLY be configured with those specific integrationsReal-World Example - LendingTree Entity:
LendingTree has proprietary lead submission requirements that only work with specific integrations. Their entity's module_ids array contains only the modules that support their format:
{
"name": "LendingTree",
"module_ids": [
"leadconduit-lendingtree.inbound.post",
"leadconduit-lendingtree.inbound.ping_post"
]
}
For example, adding LendingTree as a flow source, only allows configuration of LendingTree-specific integration module IDs. This eliminates the possibility of trying to use a generic HTTP module that wouldn't understand LendingTree's proprietary format.
Module Types:
leadconduit-default.inbound/outbound)leadconduit-salesforce.outbound) leadconduit-custom.outbound.json)leadconduit-integration-leadconduit.outbound.to_buyer)Empty vs Non-Empty Arrays:
module_ids: Entity can use any available integration modulemodule_ids: Entity is restricted to only those specific modulesOne of LeadConduit's most powerful features is how it handles vendor-specific integrations through entities. This flips the traditional integration model on its head.
Traditional Lead Industry Model:
LeadConduit's Entity-Based Model:
Real-World Example: A major lead vendor requires:
Instead of every buyer implementing this vendor's requirements:
This approach is particularly valuable because:
The Shift to Account Entities: LeadConduit is moving away from standard entities in favor of requiring all participants to have accounts. This means:
For account entities (representing other LeadConduit accounts), the connection system tracks business relationships:
Connection Types
seller: They sell leads to youbuyer: They buy leads from youboth: Bidirectional relationshipnull: No active connectionConnections enable:
When an entity is created, it establishes:
Entities are used in flows by:
When entities are updated:
Instead of deletion, entities can be deprecated:
Enhancement services (data append, verification, etc.) are special:
When a LeadConduit account is created:
Entities inherit certain behaviors from their modules:
Entities representing buyers:
More importantly for buyers receiving leads:
Entities representing sellers:
For major vendors with custom requirements:
Entities representing systems:
Key distinction: While entities enable configuration reuse across flows, each flow must still be independently configured to connect to the service. The entity provides:
For example, a "Scoring Service" entity:
The reverse integration pattern means:
Account entities enable:
Many entities serve multiple roles:
Partner Company ABC
├── As a seller: Sends leads to you
├── As a buyer: Receives leads from you
└── As an account: Has their own LeadConduit instance
Entities often represent internal technical services:
Internal Services
├── Scoring Service (analytics recipient)
├── Data Validation API (enhancement recipient)
├── Lead Router (other recipient)
└── Internal CRM (crm recipient)
Each service entity:
Entities often follow integration patterns:
CRM Integration Pattern:
├── Standard CRM Entity (e.g., Salesforce)
├── Multiple flows use the same entity
├── Each flow configures differently
└── All share core CRM capabilities
Reality: Entities carry configuration, capabilities, and relationship data. They're active participants in lead flow, not passive labels.
Reality: Entities should be reused across flows. Create once, use many times.
Reality: While you can't change standard entities, you can configure their integrations, acceptance criteria, volume caps, pricing, etc differently in each flow.
Reality: Account entities simply represent another account on the platform. Each account only has one account entity, platform wide.
Create a new entities
Create a new entity
Created
{- "name": "A Corporation",
- "description": "string",
- "deprecated": false,
- "field_suffix": "acorp",
- "flow_ids": [
- "5fd4371e940df5a34a3888b2"
], - "logo_url": "string",
- "module_ids": [
- "leadconduit-salesforce.outbound.create_contact"
], - "source": { },
- "recipient": { },
- "time_zone": "America/Los Angeles",
- "trustedform_certified_vendor": true,
}{- "id": "5fd4371e940df5a34a3888b2",
- "name": "A Corporation",
- "description": "string",
- "standard": false,
- "account": true,
- "pending": true,
- "connected": "seller",
- "connected_account_id": "5fd4371e940df5a34a3888b2",
- "deprecated": false,
- "see": "5fd4371e940df5a34a3888b2",
- "field_suffix": "acorp",
- "invitation_id": "5fd4371e940df5a34a3888b2",
- "invitation_expires_at": "2025-11-07T00:00:00Z",
- "expired": false,
- "flow_ids": [
- "5fd4371e940df5a34a3888b2"
], - "logo_url": "string",
- "module_ids": [
- "leadconduit-salesforce.outbound.create_contact"
], - "source": { },
- "recipient": { },
- "time_zone": "America/Los Angeles",
- "trustedform_certified_vendor": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}{- "id": "5fd4371e940df5a34a3888b2",
- "name": "A Corporation",
- "description": "string",
- "standard": false,
- "account": true,
- "pending": true,
- "connected": "seller",
- "connected_account_id": "5fd4371e940df5a34a3888b2",
- "deprecated": false,
- "see": "5fd4371e940df5a34a3888b2",
- "field_suffix": "acorp",
- "invitation_id": "5fd4371e940df5a34a3888b2",
- "invitation_expires_at": "2025-11-07T00:00:00Z",
- "expired": false,
- "flow_ids": [
- "5fd4371e940df5a34a3888b2"
], - "logo_url": "string",
- "module_ids": [
- "leadconduit-salesforce.outbound.create_contact"
], - "source": { },
- "recipient": { },
- "time_zone": "America/Los Angeles",
- "trustedform_certified_vendor": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Update an existing entity matching the specified ID
Create a new entity
OK
{- "name": "A Corporation",
- "description": "string",
- "deprecated": false,
- "field_suffix": "acorp",
- "flow_ids": [
- "5fd4371e940df5a34a3888b2"
], - "logo_url": "string",
- "module_ids": [
- "leadconduit-salesforce.outbound.create_contact"
], - "source": { },
- "recipient": { },
- "time_zone": "America/Los Angeles",
- "trustedform_certified_vendor": true,
}{- "id": "5fd4371e940df5a34a3888b2",
- "name": "A Corporation",
- "description": "string",
- "standard": false,
- "account": true,
- "pending": true,
- "connected": "seller",
- "connected_account_id": "5fd4371e940df5a34a3888b2",
- "deprecated": false,
- "see": "5fd4371e940df5a34a3888b2",
- "field_suffix": "acorp",
- "invitation_id": "5fd4371e940df5a34a3888b2",
- "invitation_expires_at": "2025-11-07T00:00:00Z",
- "expired": false,
- "flow_ids": [
- "5fd4371e940df5a34a3888b2"
], - "logo_url": "string",
- "module_ids": [
- "leadconduit-salesforce.outbound.create_contact"
], - "source": { },
- "recipient": { },
- "time_zone": "America/Los Angeles",
- "trustedform_certified_vendor": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}{- "id": "5fd4371e940df5a34a3888b2",
- "name": "A Corporation",
- "description": "string",
- "standard": false,
- "account": true,
- "pending": true,
- "connected": "seller",
- "connected_account_id": "5fd4371e940df5a34a3888b2",
- "deprecated": false,
- "see": "5fd4371e940df5a34a3888b2",
- "field_suffix": "acorp",
- "invitation_id": "5fd4371e940df5a34a3888b2",
- "invitation_expires_at": "2025-11-07T00:00:00Z",
- "expired": false,
- "flow_ids": [
- "5fd4371e940df5a34a3888b2"
], - "logo_url": "string",
- "module_ids": [
- "leadconduit-salesforce.outbound.create_contact"
], - "source": { },
- "recipient": { },
- "time_zone": "America/Los Angeles",
- "trustedform_certified_vendor": true,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Get the list of all entity aliases for the current account.
OK
[- {
- "id": "5fd4371e940df5a34a3888b2",
- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name",
- "account_id": "5fd4371e940df5a34a3888b2",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]{- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name"
}{- "id": "5fd4371e940df5a34a3888b2",
- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name",
- "account_id": "5fd4371e940df5a34a3888b2",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Returns the entity alias matching the specified ID
OK
{- "id": "5fd4371e940df5a34a3888b2",
- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name",
- "account_id": "5fd4371e940df5a34a3888b2",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Update an existing entity alias matching the specified ID
Update an entity alias
OK
{- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name"
}{- "id": "5fd4371e940df5a34a3888b2",
- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name",
- "account_id": "5fd4371e940df5a34a3888b2",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Deletes the entity alias matching the specified ID
OK
{- "id": "5fd4371e940df5a34a3888b2",
- "entity_id": "64b8f0f5e4b0c3a1d5e6f7a8",
- "entity_alias": "My Custom Source Name",
- "account_id": "5fd4371e940df5a34a3888b2",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}