Skip to content

CRM Trigger

Overview

The CRM Trigger automatically starts workflows when specific events occur in your BaseCloud CRM. This creates powerful automation based on contact behavior, data changes, and CRM activities without any manual intervention.

When to use this trigger:

  • Send welcome emails when new contacts are created
  • Notify team members when contact data changes
  • Trigger follow-ups based on contact status changes
  • Start workflows when tags are added or removed
  • Automate actions when custom field values change
  • React to deal stage changes

Quick Start

Builder fields

The Field column is the label as it appears in the task builder; Key is the name the value is stored under and referenced by.

Field Key Type Default Notes
Trigger Type trigger_type select 1 Options: Client Created · Client Field Change · Client Field Button Click · Contact Field Change · Quote / Invoice Change · Workflow Note Change · Custom Table: Row Added · Custom Table: Cell Change · Custom Table: Cell Button Click
Target Field var_id select – Options: Client/Company Name · Client Status · Responsible Manager · Company Address: Line 1 · Company Address: Line 2 · Company Address: Line 3 · Company Address: Line 4 · Company Address: Line 5 · Billing Address: Addressed To · Billing Address: Line 1 · Billing Address: Line 2 · Billing Address: Line 3 · Billing Address: Line 4 · Billing Address: Line 5. Only shown when trigger_type is 1
Target Column var_id select – Only shown when trigger_type is 2
Invoice Event var_id select – Options: Quote/Invoice Created · Quote/Invoice Edited · Quote/Invoice Deleted · Quote/Invoice Marked as paid · Quote/Invoice Marked as unpaid. Only shown when trigger_type is 3
Target Contact Field var_id select – Only shown when trigger_type is 5
Target Table var_id select – Only shown when trigger_type is 6
Note Event var_id select – Options: Workflow Note Created · Workflow Note Marked as done. Only shown when trigger_type is 7
Button Field var_id select – Only shown when trigger_type is 8
Button Column var_id select – Only shown when trigger_type is 9
  1. Create a new workflow
  2. Add a CRM Trigger as the first task
  3. Select the trigger event type (contact created, updated, etc.)
  4. Configure event conditions (optional filters)
  5. Save and enable the workflow
  6. The workflow runs automatically when the event occurs

Trigger Event Types

Contact Created

Triggers when a new contact is added to your CRM.

Example Use Cases:

  • Send welcome email to new contacts
  • Assign to sales rep
  • Add to email marketing list
  • Create follow-up task

Contact Updated

Triggers when any contact field is modified.

Optional Filters:

  • Specific field changed (e.g., only when phone number changes)
  • Field changed to specific value (e.g., status changed to "Customer")
  • Any field changed on specific contact

Example Use Cases:

  • Notify team when deal value changes
  • Update external systems when contact details change
  • Send re-engagement email when status changes

Tag Added

Triggers when a specific tag is added to a contact.

Configuration:

  • Select which tag(s) to monitor
  • Trigger on any tag or specific tags only

Example Use Cases:

  • Start nurture sequence when "Lead" tag added
  • Notify manager when "VIP" tag added
  • Send onboarding email when "New Customer" tag added

Tag Removed

Triggers when a tag is removed from a contact.

Example Use Cases:

  • Remove from email list when "Subscribed" tag removed
  • Alert team when "Active" tag removed
  • Update external systems

Field Value Changed

Triggers when a specific custom field reaches a certain value.

Configuration:

  • Select the field to monitor
  • Define the condition (equals, contains, greater than, etc.)
  • Set the target value

Example:

  • Trigger when lifetime_value > 10000
  • Trigger when lead_score >= 80
  • Trigger when status = "Hot Lead"

Deal Stage Changed

Triggers when a deal moves to a specific pipeline stage.

Configuration:

  • Select which pipeline
  • Select which stage(s) to monitor

Example Use Cases:

  • Send proposal when deal reaches "Proposal" stage
  • Notify team when deal closes (moves to "Won")
  • Update accounting system when deal is won

The Custom Fields section of a client record in BaseCloud. A header reads Custom Fields with an edit pencil, a count of 126, and a Hide Empty toggle, above a field search box and an Add Field button. Below it, fields of different types are listed: a Referred By text field, a button, a Multi Select field, a file upload area accepting PDF, DOC, XLS, PPT, ODT, RTF, ZIP, XML, JSON, TXT, CSV and images up to 150MB, and a multiline text field

Custom fields are defined per tenant on the client record itself — the pencil edits the set, Add Field creates one. The name you give a field here is the name you reference from a task.

The Client Statuses screen in BaseCloud Settings. A note reads "Manage client statuses used across the CRM. Deactivate statuses to hide them from dropdowns", beside an Add Status button. Each row has a drag handle for ordering, the status name, its numeric ID, a coloured preview pill and an active toggle. Visible statuses include Prospect (ID 19), Lead (ID 12), Appointment Booked (ID 13), Proposal Sent (ID 1), Busy Closing (ID 18), Onboarding (ID 3), Maintenance (ID 4), Declined (ID 8) and Marketing (ID 27). One row is greyed out with its toggle off, showing a deactivated status

Statuses are defined per tenant in Settings → Client Statuses, so the list differs between accounts — a status that exists in one tenant may not exist in another. Each carries a numeric ID, and that ID is what a task reads and writes; the label is only what people see. Deactivating a status hides it from dropdowns without removing it from records that already hold it.

Outputs

The CRM Trigger outputs the change-log entry that fired it, joined to the client and the users involved. Reference fields as {{task_<ID>_<field>}}.

The change

Field Type Notes
id number The change-log entry's ID.
var_id string Which field changed — e.g. client_status, client_field_updated, contact_created.
var_val string The new value.
var_val_from string The previous value.
date_created string When the change happened, DD/MM/YYYY HH:mm.
custom_field_id number Set when the change was to a custom field.
table_id, row_id, column_id number Set for table-row changes.
wfn_id number Set for workflow-note changes.
inv_id number Set for quote/invoice changes.
channel_id, task_id number The workflow and task that fired.

The client

Field Type Notes
client_id number The client the change belongs to.
company_name string The client's name.
origin string The client's origin (first_contact).
owner_id number Account ID.
user_created number Who created the client.
contact_id number Set when the change concerns a contact.

Who made the change, and who owns the client

Field Type Notes
user_actioned number ID of the user who made the change.
user_actioned_name, user_actioned_surname string Their name.
user_actioned_email, user_actioned_number string Their contact details.
admin_responsible number ID of the client's responsible user.
admin_responsible_name, admin_responsible_surname string Their name.
admin_responsible_email, admin_responsible_number string Their contact details.

Resolved labels, on field-change triggers

Field Type Notes
status_changed_to string Status label, when var_id is client_status.
status_changed_from string The previous status label.
custom_field_changed_to string Readable new value, when a custom field changed. Falls back to the raw value if the field has since been deleted.
custom_field_changed_from string Readable previous value.

Always

Field Type Notes
run boolean Whether the task succeeded.
run_text string A human-readable account of what happened, including any reason it failed.

Real-World Examples

Welcome a newly created client

CRM Trigger  (client created)
  └─ Email   send the welcome message to {{task_47001_company_name}}

Act on a status change

CRM Trigger  (field change, client_status)
  └─ If Statement   {{task_47001_status_changed_to}} equals "Won"
      └─ BaseCloud Accounting   raise the invoice

status_changed_to and status_changed_from give you the readable labels, so you can branch on the change itself rather than on the raw ID.

Tell the new owner when a client is reassigned

CRM Trigger  (field change, admin_responsible)
  └─ Email   notify {{task_47001_admin_responsible_email}}

Keep another system in step

CRM Trigger  (contact updated)
  └─ Webhook Out   post the change to the other system

Conditional Filtering

Add conditions to your CRM Trigger to be more selective about which events trigger workflows.

Filter by Contact Type

Only trigger for contacts with specific status:

Contact Status = "Lead"

Filter by Tag Presence

Only trigger if contact has specific tag:

Contact Tags contains "VIP"

Filter by Custom Field

Only trigger if custom field meets criteria:

custom_country = "South Africa"

Combine Multiple Conditions

Use AND/OR logic:

Contact Status = "Lead" AND custom_lead_score >= 50

Preventing Workflow Loops

The Loop Problem

If your workflow updates a contact's data, and your CRM Trigger monitors "Contact Updated", you'll create an infinite loop.

Example of a problematic workflow:

  1. CRM Trigger - Contact Updated
  2. Edit Client - Update a field
  3. This triggers the workflow again → Loop!

Solution 1: Check Who Triggered

Add an If task to check if the change was made by the system (not a human):

Condition: {{task_47123_triggered_by}} is not "system@basecloudglobal.com"

Solution 2: Monitor Specific Fields Only

Instead of "Any field updated", monitor specific fields:

Only trigger when "status" field changes

Solution 3: Use Changed Field Check

Add an If task at the start:

Condition: {{task_47123_changed_field}} does not equal "last_modified"

Solution 4: Add a "Processing" Flag

  1. At workflow start: Add temporary tag "Processing"
  2. Check if tag exists, if yes → stop workflow
  3. Do your processing
  4. Remove "Processing" tag at end

Best Practices

✅ Do's

  • Be specific with triggers: Use filters to avoid unnecessary executions
  • Add If tasks for validation: Double-check conditions even if trigger has filters
  • Test thoroughly: Test with real CRM data before enabling
  • Add error notifications: Alert yourself when critical workflows fail
  • Document your workflows: Add clear descriptions of what each workflow does
  • Use tags for tracking: Add tags to show workflow has processed a contact
  • Monitor execution history: Check regularly that workflows are running correctly

❌ Don'ts

  • Don't create loops: Always check if your workflow updates trigger new events
  • Don't trigger on every update: Use specific field monitoring
  • Don't skip error handling: Add If tasks to handle missing data
  • Don't forget timezone issues: Be aware when using time-based conditions
  • Don't over-automate: Not every CRM change needs a workflow

Troubleshooting

Workflow Not Triggering

Possible Causes:

  • Workflow is disabled
  • Trigger conditions too restrictive
  • Event type doesn't match actual CRM action
  • CRM trigger not saved properly

Solutions:

  1. Check workflow toggle is ON
  2. Review trigger configuration and filters
  3. Test by manually performing the CRM action
  4. Check execution history for error messages

Workflow Triggering Too Often

Possible Causes:

  • Trigger conditions too broad
  • Multiple users editing same contacts
  • Workflow creating loop by updating contacts

Solutions:

  1. Add more specific filters
  2. Check if workflow updates trigger additional events
  3. Use "Changed Field" filters
  4. Add processing flag to prevent duplicates

Missing Contact Data

Possible Causes:

  • Custom field not populated yet
  • Contact still being created when workflow runs

Solutions:

  1. Add small delay (5-10 seconds) after trigger
  2. Use If tasks to check if required fields exist
  3. Handle missing data gracefully

Workflow Running Multiple Times

Cause: Multiple CRM updates in quick succession

Solution: Add a delay at workflow start and check if a "processing" tag exists

Advanced Patterns

Sequential Contact Updates

Update contact in stages with delays:

  1. CRM Trigger - Contact Created
  2. Delay - Wait 1 day
  3. Email - Send day 1 email
  4. Delay - Wait 2 days
  5. Email - Send day 3 email
  6. Delay - Wait 4 days
  7. Email - Send day 7 email

Conditional Multi-Path Workflows

Route based on contact properties:

  1. CRM Trigger - Contact Updated
  2. If Task - Check industry
  3. Technology → Tech sales flow
  4. Healthcare → Healthcare sales flow
  5. Other → General flow

Lead Scoring Automation

Automatically update lead scores:

  1. CRM Trigger - Contact Updated
  2. Code Task - Calculate lead score based on actions
  3. Edit Client - Update lead_score field
  4. If Task - If score >= 80
  5. Email - Notify sales team

Tag-Based Segmentation

Automatically segment contacts:

  1. CRM Trigger - Tag Added
  2. If Task - Check which tag was added
  3. "Webinar Attended" → Add to nurture list
  4. "Downloaded Ebook" → Add to education list
  5. "Requested Demo" → Alert sales

Frequently Asked Questions

Can I have multiple CRM Triggers in one workflow?

No, each workflow should have only one trigger task. If you need to respond to multiple CRM events, create separate workflows.

What's the delay between CRM change and workflow execution?

Usually immediate (within seconds). Very complex workflows may take longer.

Can I trigger on custom field changes?

Yes, use the "Field Value Changed" event type and select your custom field.

Will this trigger if I bulk import contacts?

Yes, Contact Created events fire for each imported contact. Consider:

  • Disabling workflows during large imports
  • Using filters to exclude imported contacts
  • Adding batch processing logic

Can I undo a workflow action?

No, workflows execute automatically and cannot be undone. Always test thoroughly before enabling.

How do I test without affecting real contacts?

  1. Create a test contact
  2. Use "Run Test" button if available
  3. Check execution history to see what would happen
  4. Use a test workflow (disabled for real contacts)

Can I trigger based on inactivity?

Not directly. Instead, use a Schedule Trigger to check for inactive contacts periodically:

  1. Timer Trigger - Daily
  2. Google Sheets - get_rows from a list of accounts to review
  3. Loop through results
  4. Send re-engagement email

What happens if the workflow fails?

The system logs the error in execution history. The CRM event still occurred, but the workflow didn't complete. Consider:

  • Adding error notification emails
  • Implementing retry logic
  • Monitoring execution history regularly

Can I prevent certain users from triggering workflows?

Yes, add an If task checking triggered_by:

Condition: {{task_47123_triggered_by}} is not "admin@yourcompany.com"

Next Steps: