Cazuri de Utilizare Comune
| Sursa | Destination | Fields to Copy |
|---|---|---|
| Companie | Oportunitate | Industry, Company Size, ARR |
| Persoană | Oportunitate | Email, Phone, Title |
| Oportunitate | Companie | Last Deal Amount, Last Won Date |
Basic Field Copy
Example: Copy Contact Email to Opportunity
Goal: When setting a Point of Contact on an opportunity, copy their email to the opportunity for easy access.Prerequisite
Create the destination fields in Settings → Data Model → Opportunities before building the workflow:- Contact Email (type: Email)
- Contact Phone (type: Phone)
Configurare
- Trigger: Record is Updated (Opportunities, Point of Contact field)
- Filter: Check that Point of Contact is not empty
-
Search Records: Find the linked person
- Object: People
- Filter: ID equals
{{trigger.object.pointOfContact.id}}
-
Update Record:
- Object: Opportunities
- Record:
{{trigger.object.id}} - Contact Email:
{{searchRecords[0].email}} - Contact Phone:
{{searchRecords[0].phone}}
Copy Multiple Fields
Example: Sync Company Info to All Related Opportunities
Goal: When company details change, update all related opportunities.Configurare
-
Trigger: Record is Updated (Companies)
- Fields: Industry, Company Size, Annual Revenue
-
Search Records: Find all opportunities for this company
- Object: Opportunities
- Filter: Company ID equals
{{trigger.object.id}}
- Iterator: Loop through each opportunity
-
Update Record (inside iterator):
- Object: Opportunities
- Record:
{{iterator.currentItem.id}} - Company Industry:
{{trigger.object.industry}} - Company Size:
{{trigger.object.companySize}} - Company ARR:
{{trigger.object.annualRevenue}}
Copy on Record Creation
Example: Pre-fill Opportunity with Company Data
Goal: When creating an opportunity linked to a company, automatically copy key company info.Prerequisite
Create the destination fields in Settings → Data Model → Opportunities:- Company Industry (type: Text)
- Company Size (type: Number)
Configurare
-
Trigger: Record is Created (Opportunities)
- Filter: Company is not empty
-
Search Records: Get the linked company’s details
- Object: Companies
- Filter: ID equals
{{trigger.object.company.id}}
-
Update Record:
- Object: Opportunities
- Record:
{{trigger.object.id}} - Company Industry:
{{searchRecords[0].industry}} - Company Size:
{{searchRecords[0].employees}}
Tasks and Notes limitation: Relations on Tasks and Notes are hardcoded as many-to-many and are not yet available in workflow triggers or actions. To access these relations, use the API instead.
Bidirectional Sync
Example: Keep Primary Contact in Sync
Goal: When a company’s primary contact changes, update the contact. When a person becomes primary, update the company.Workflow 1: Company → Person
- Trigger: Record is Updated (Companies, Primary Contact field)
- Update Record: Set person’s “Is Primary Contact” to true
- Search Records: Find previous primary contact
- Update Record: Set previous contact’s “Is Primary Contact” to false
Workflow 2: Person → Company
- Trigger: Record is Updated (People, Is Primary Contact = true)
- Update Record: Set company’s Primary Contact to this person
Be careful with bidirectional syncs to avoid infinite loops. Use filters to check if the value actually changed before updating.
Using Code for Complex Mapping
Example: Transform Data During Copy
Goal: Copy and format phone number from person to opportunity.Cele mai bune practici
Avoid Loops
- Don’t create workflows that trigger each other endlessly
- Use specific field conditions
- Add checks to see if value actually changed
Handle Missing Data
- Always check if source record exists before copying
- Provide default values for optional fields
- Use filters to skip when source field is empty
Performance
- Batch updates when copying to many records
- Use scheduled workflows for bulk sync operations
- Consider using Iterator for multiple record updates