Skip to main content

CRM Manager Node Reference

The CRM Manager is a unified node that handles all CRM operations. Rather than separate nodes for contacts, companies, and deals, this single node manages everything through entity type and operation selection.


Overview

PropertyValue
Node Typecrm_manager
CategoryActions
SubcategoryCRM

Why One Node?

The CRM Manager consolidates all CRM operations into one flexible node:

  • Simpler workflows - One node type to learn
  • Consistent interface - Same patterns across all entities
  • Powerful batch operations - Process multiple records at once
  • Relationship management - Link entities together

Configuration

Core Parameters

FieldTypeRequiredDescription
Entity TypeSelectYesWhat type of record to work with
OperationSelectYesWhat action to perform
Entity IDTextConditionalRecord ID (for get/update/delete)
DataObject/JSONConditionalRecord data (for create/update)

Entity Types

Core CRM Entities

EntityDescriptionRequired Fields
contactIndividual peopleemail
companyOrganizationsname
dealSales opportunitiesname
taskAction itemstitle
noteText notescontent, entity_type, entity_id
productProducts/servicesname
activityActivity log entriesactivity_type, entity_type, entity_id

Relationship Entities (Junction Tables)

EntityDescriptionRequired Fields
deal_contactLink deals to contactsdeal_id, contact_id
deal_companyLink deals to companiesdeal_id, company_id
contact_companyLink contacts to companiescontact_id, company_id
deal_productAdd products to dealsdeal_id, product_id
deal_paymentRecord deal paymentsdeal_id, amount
deal_payment_schedulePayment schedulesdeal_id, payment_number, amount, due_date

Channel Entities

EntityDescriptionRequired Fields
voice_callVoice call recordsuser_number, contact_number, provider
whatsapp_conversationWhatsApp chatsphone_number

Operations

Standard Operations

OperationDescriptionRequired
createCreate new recorddata with required fields
getRetrieve single recordentity_id or data with search criteria
searchFind multiple recordssearch_query or filters
updateModify existing recordentity_id + data
deleteRemove recordentity_id

Relationship Operations

OperationDescriptionUse Case
linkConnect two entitiesAdd contact to deal
unlinkDisconnect entitiesRemove contact from deal
update_relationshipModify link propertiesChange contact role in deal

Batch Operations

OperationDescriptionRequired
batch_createCreate multiple recordsitems array with data
batch_updateUpdate multiple recordsitems array or batch_entity_ids + batch_common_data
batch_deleteDelete multiple recordsitems array with entity_ids

Entity Field Reference

Contact Fields

Required: email

Optional:
- first_name, last_name
- phone, mobile
- job_title, department
- address_line1, address_line2, city, state, postal_code, country
- lead_status: "new" | "contacted" | "qualified" | "converted"
- lead_score (number)
- lifecycle_stage
- preferred_contact_method
- timezone, language
- linkedin_url, twitter_handle, facebook_url
- source
- tags (array)
- custom_fields (object)
- owner_email

Company Fields

Required: name

Optional:
- domain, website
- industry, company_type
- size, annual_revenue
- description
- address_line1, address_line2, city, state, postal_code, country
- phone, email
- linkedin_url, twitter_handle, facebook_url
- source, status
- tags (array)
- custom_fields (object)
- owner_email

Deal Fields

Required: name

Optional:
- value (number), currency (default: "INR")
- stage_name: "Unknown" | "Inquiry" | "Qualified" | "Trial" | "Negotiation" | "Closed Won" | "Closed Lost" | "Services"
- probability (0-100)
- deal_type
- expected_close_date, actual_close_date
- close_reason, competitors
- description, next_step
- source
- tags (array)
- is_won, is_lost (boolean)
- custom_fields (object)
- owner_email

Task Fields

Required: title

Optional:
- description
- type
- priority: "low" | "medium" | "high" | "urgent"
- status: "pending" | "in_progress" | "completed" | "cancelled"
- due_date, completed_at
- reminder_date
- assigned_to_email, assigned_by_email
- entity_type, entity_id (to link task to another record)

Note Fields

Required: content, entity_type, entity_id

Optional:
- is_pinned (boolean)
- attachments (array)

Product Fields

Required: name

Optional:
- description, category
- price, cost, currency
- is_active (boolean)
- tags (array)
- custom_fields (object)

Usage Examples

Create Operations

Create Contact:

Entity Type: contact
Operation: create
Data: {
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"phone": "+1234567890",
"lead_status": "new"
}

Create Deal:

Entity Type: deal
Operation: create
Data: {
"name": "Enterprise Contract",
"value": 50000,
"stage_name": "Qualified",
"probability": 25,
"expected_close_date": "2024-06-30"
}

Create Task:

Entity Type: task
Operation: create
Data: {
"title": "Follow up call",
"description": "Discuss proposal details",
"priority": "high",
"due_date": "2024-03-25",
"assigned_to_email": "sales@company.com"
}

Search Operations

Search by Name:

Entity Type: contact
Operation: search
Search Query: "john doe"

Search by Email:

Entity Type: contact
Operation: search
Data: {
"email": "john@example.com"
}

Search with Filters:

Entity Type: deal
Operation: search
Data: {
"stage_name": "Qualified",
"value": {">=": 10000}
}

Partial Name Match:

Entity Type: contact
Operation: search
Data: {
"first_name": {"contains": "John"},
"last_name": {"contains": "Doe"}
}

Get Operations

Get by ID:

Entity Type: contact
Operation: get
Entity ID: {{previousNode.contact_id}}

Get by Email (Enhanced Get):

Entity Type: contact
Operation: get
Data: {
"email": "john@example.com"
}

Update Operations

Update Contact Status:

Entity Type: contact
Operation: update
Entity ID: {{contact.id}}
Data: {
"lead_status": "qualified",
"lead_score": 85
}

Update Deal Stage:

Entity Type: deal
Operation: update
Entity ID: {{deal.id}}
Data: {
"stage_name": "Closed Won",
"probability": 100,
"is_won": true
}

Link Contact to Deal:

Entity Type: deal_contact
Operation: link
Data: {
"deal_id": "{{deal.id}}",
"contact_id": "{{contact.id}}",
"role": "Decision Maker",
"is_primary": true
}

Link Company to Contact:

Entity Type: contact_company
Operation: link
Data: {
"contact_id": "{{contact.id}}",
"company_id": "{{company.id}}",
"role": "CEO",
"department": "Executive"
}

Batch Operations

Batch Create Contacts:

Entity Type: contact
Operation: batch_create
Items: [
{"email": "alice@example.com", "first_name": "Alice"},
{"email": "bob@example.com", "first_name": "Bob"},
{"email": "charlie@example.com", "first_name": "Charlie"}
]

Batch Update Same Data:

Entity Type: deal
Operation: batch_update
Batch Entity IDs: {{searchNode.results}}
Batch Common Data: {
"stage_name": "Closed Lost",
"close_reason": "Budget constraints"
}

Output Variables

Single Record Operations

{{crmmanager_1.success}}        - true/false
{{crmmanager_1.entity_id}} - Created/updated record ID
{{crmmanager_1.data}} - Full record data

Search Operations

{{crmmanager_1.results}}        - Array of matching records
{{crmmanager_1.total}} - Total count
{{crmmanager_1.results[0].id}} - First result ID
{{crmmanager_1.results[0].email}} - First result email

Batch Operations

{{crmmanager_1.total}}          - Total items processed
{{crmmanager_1.processed}} - Successfully processed count
{{crmmanager_1.failed}} - Failed count
{{crmmanager_1.created_ids}} - Array of created IDs (batch_create)
{{crmmanager_1.updated_ids}} - Array of updated IDs (batch_update)
{{crmmanager_1.deleted_ids}} - Array of deleted IDs (batch_delete)
{{crmmanager_1.errors}} - Array of error details

Advanced Filtering

Use filter operators in the data field for powerful searches:

Comparison Operators

// Greater than or equal
{"lead_score": {">=": 80}}

// Less than
{"value": {"<": 100000}}

// Date range
{"created_at": {">=": "2024-01-01", "<=": "2024-12-31"}}

Text Operators

// Contains
{"email": {"contains": "@acme.com"}}

// Starts with
{"first_name": {"starts_with": "John"}}

// Ends with
{"domain": {"ends_with": ".com"}}

Multiple Criteria

{
"lead_status": "qualified",
"lead_score": {">=": 80},
"email": {"contains": "@company.com"}
}

Special Features

Upsert Behavior (Contacts)

When updating contacts by email, enable Create If Not Found to automatically create the contact if it doesn't exist:

Entity Type: contact
Operation: update
Entity ID: john@example.com (email as identifier)
Create If Not Found: true
Data: {
"first_name": "John",
"lead_status": "contacted"
}

Custom Fields

Access organization-specific custom fields through the custom_fields object:

Data: {
"email": "john@example.com",
"custom_fields": {
"industry_vertical": "Healthcare",
"contract_type": "Enterprise",
"renewal_date": "2025-01-01"
}
}

JSON Data Input

For complex data, use the json_data field with a JSON string:

JSON Data: '{"email": "{{webhook.payload.email}}", "first_name": "{{webhook.payload.name}}"}'

Common Patterns

Create or Update (Upsert)

[Search Contact] → [Condition: Found?]
→ Yes → [CRM Manager: Update]
→ No → [CRM Manager: Create]

Full Record Creation Flow

[CRM Manager: Create Company]
→ [CRM Manager: Create Contact]
→ [CRM Manager: Link contact_company]
→ [CRM Manager: Create Deal]
→ [CRM Manager: Link deal_contact]
→ [CRM Manager: Link deal_company]

Batch Processing from Loop

[Search Contacts] → [Loop: For each contact]
→ [CRM Manager: Update lead_score]

Efficient Batch Update

[Search Contacts] → [CRM Manager: batch_update with batch_entity_ids]

Error Handling

Always check the success variable:

[CRM Manager] → [Condition: {{crmmanager_1.success}}]
→ true → [Continue workflow]
→ false → [Log Error: {{crmmanager_1.error}}]

Common Errors

ErrorCauseSolution
Missing required fieldEntity type needs specific fieldsCheck required fields table
Entity not foundInvalid entity_idVerify ID or use search first
Duplicate emailContact with email existsUse upsert or search first
Invalid stage_nameStage doesn't exist in pipelineCheck available stages

Best Practices

  1. Use Batch Operations - For multiple records, use batch_create/update/delete instead of loops
  2. Search Before Create - Check if entity exists to avoid duplicates
  3. Validate Required Fields - Ensure all required fields are populated
  4. Use Variables - Reference data from previous nodes with {{node.field}}
  5. Handle Errors - Always check success and have error handling paths
  6. Link Related Entities - Use relationship entities to connect contacts, companies, and deals