Skip to content

Contact Task

Overview

The Contact Task manages contact records in your CRM - get contact details, add new contacts, or edit existing ones. Use it to maintain accurate contact information, link contacts to clients, and keep your CRM data up-to-date.

When to use this task:

  • Retrieve contact information
  • Add new contacts to existing clients
  • Update contact details
  • Link/unlink contacts from clients
  • Validate contact data
  • Manage contact relationships
  • Build contact databases
  • Sync contact information

Key Features:

  • Four actions: Get, Get Contacts, Add, Edit
  • Auto-validates emails and phone numbers
  • Auto-formats phone numbers to E.164
  • Links contacts to client records
  • Supports contact unlinking
  • Triggers global CRM events
  • Returns comprehensive contact data

Quick Start

Get Contact:

1. Add Contact task
2. Select Action: Get
3. Enter a Contact ID, or add matching items (email, cell number, …)
4. Save

Get Contacts (all matches):

1. Add Contact task
2. Select Action: Get Contacts
3. Add matching items (e.g. Email Domain: acme.com)
4. Loop over the contact_ids output
5. Save

Add Contact:

1. Add Contact task
2. Select Action: Add
3. Enter contact details
4. Link to Client ID (required)
5. Save

Edit Contact:

1. Add Contact task
2. Select Action: Edit
3. Enter Contact ID
4. Update fields needed
5. Save

Configuration

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
Action Action select get Options: Get Contact · Get Contacts · Add Contact · Edit Contact
Find the contact by Contact ID + match_* rows contact-match-rows – Only shown when Action is get. See Finding the contact
Find contacts by match_* rows contact-match-rows – Only shown when Action is get_contacts. The same items minus Contact ID, returning every match
Contact ID Contact ID text – Only shown when Action is edit
Client ID Client ID text – Only shown when Action is add, edit
First Name User Name text – Only shown when Action is add, edit
Last Name User Surname text – Only shown when Action is add, edit
Email User Email text – Only shown when Action is add, edit
Cell Number User Cell Number text – Only shown when Action is add, edit
Landline Number User Landline Number text – Only shown when Action is add, edit
Notes Notes textarea – Only shown when Action is add, edit
Custom Fields custom_fields contact-custom-fields – Only shown when Action is add, edit

Action Selection

Get Contact:

Action: Get
Contact ID: {{task_15001_contact_id}}

Retrieves all contact information.

Finding the contact (Get)

Get Contact can find the contact by several fields. Contact ID is always the first item; add more with Add matching item. A contact must match every item you fill in. Blank items are ignored, so leave the Contact ID blank to find the contact by the other items only.

This differs from Match to Client

Match to Client tries its criteria in order and stops at the first one that finds a client, so later criteria are fallbacks. The Contact task combines its items instead: each one you add narrows the search. An item that cannot be used — a variable that did not resolve, a value that is not a valid email, phone number, contact ID or option of the field — stops the lookup entirely and the run text says which item and why. Dropping the item instead would widen the search and return a contact the workflow never asked for. A blank item is different: it is simply ignored.

Item Key Matches
Contact ID Contact ID The contact with that ID. Given a comma-separated list, the first ID in it. Get only — an ID names one contact, so Get Contacts ignores it
Email match_user_email Exact email address (not case sensitive)
Email Domain match_user_email_domain Everyone at the same domain. Takes acme.com or a whole address
Cell Number match_user_cell_number Same number in E.164, digits-only or local form; falls back to the last 9 digits
Landline Number match_user_landline_number As Cell Number
A contact custom field match_contact_field_id_<id> Text, number, checkbox, single select and multi select. See below
Action: Get
Contact ID: (blank)
Email Domain: acme.com
VIP: Yes

finds the most recently added contact who is at acme.com and has VIP ticked.

Custom fields use the same Direct / Variable control as the rest of the builder. A checkbox offers Yes / No, a select offers its options, and a multi select lets you pick several — a contact holding any of them matches. Switch to Variable to map a value in instead; the value is read the same way the Add and Edit actions read it, so a variable resolving to Yes, to an option's name, or to its ID all match.

Unlike Match to Client, this finds contacts that are not linked to any client. When several contacts match every item, the most recently added one is used and the run text says how many matched. The matched_by output lists the items that were matched on.

Tasks built before matching existed only have a Contact ID, so they run exactly as before.

A list of IDs names the first one

contact_ids — from Get Contacts or from Match to Client — can be dropped straight onto Contact ID, and the task uses the first ID in the list. The run text says which one it used. Use a Loop when you want each of them, not just the first.

Get Contacts:

Action: Get Contacts
Email Domain: acme.com
VIP: Yes

Returns every contact matching all the items, as contact_ids — a comma-separated list of contact IDs, newest first. Each item you add narrows the list, so one item on its own returns the widest set.

It returns IDs only. To act on each contact, feed contact_ids to a Loop task and put a Get Contact task inside the loop, with the loop's item as its Contact ID.

At most 500 contacts are returned. When more match, the 500 most recently added are returned and the run text says so.

Add Contact:

Action: Add
Client ID: {{task_13001_client_id}}
First Name: {{task_55001_first_name}}
Surname: {{task_55001_last_name}}
Email: {{task_55001_email}}
Cell: {{task_55001_phone}}

Creates new contact linked to client.

Edit Contact:

Action: Edit
Contact ID: {{task_28001_contact_id}}
Cell: {{task_55001_new_phone}}

Updates existing contact fields. Only the fields you fill in are changed — a blank First Name, Last Name, Email, Cell Number, Landline Number or Notes leaves the contact's current value as it is, including when a mapped variable resolves to nothing. To fill in just a birthday, set the Contact ID, add that one custom field, and leave everything else blank.

Custom fields work like Edit Client: only the ones you add are touched, and an added custom field whose value is blank clears that field. When the value comes from a variable that is sometimes empty, put an If task before the Contact task so a missing value does not clear one already on the contact.

Contact Fields

First Name:

First Name: {{task_55001_first_name}}

User Surname (Last Name):

User Surname: {{task_55001_last_name}}

Email:

Email: {{task_55001_email}}

Auto-validated. Invalid emails are rejected.

Cell (Mobile):

Cell: {{task_55001_mobile}}

Auto-formatted to E.164. Invalid numbers rejected.

Landline:

Landline: {{task_55001_phone}}

Auto-formatted to E.164.

Position:

Position: {{task_55001_job_title}}

Job title or role.

Notes:

Notes: Additional information about contact

Client Linking

Link to Client (Add action):

Client ID: {{task_13001_client_id}}

Required for Add action.

Change Client Link (Edit action):

Client ID: {{task_15002_client_id}}

Move contact to different client.

Unlink from Client (Edit action):

Client ID: (leave empty)

Removes client link entirely.

Outputs

Field Type Example Notes
contact_id number 881 The contact acted on.
matched_by string email, vip The matching items the contact was found on.
contact_ids string 881,874,802 Get Contacts only: comma-separated contact IDs, newest first.
contact_count number 3 Get Contacts only: how many IDs were returned.
contact_name string Jane First name. Empty string when unset.
contact_surname string Doe Surname.
contact_email string jane@example.com
contact_cell_number string +27825550111
contact_landline_number string +27115550100
contact_notes string Prefers email
contact_receive_invoices boolean true Whether the contact receives invoices.
contact_email_unsubscribe boolean false true means they have opted out of email. Check this before sending.
contact_sms_unsubscribe boolean false true means they have opted out of SMS.
custom_fields array [{…}] The contact's custom fields, when the action returns them.
run boolean true
run_text string Contact retrieved.

Honour the unsubscribe flags

contact_email_unsubscribe and contact_sms_unsubscribe are returned so a workflow can respect them. Branch on them with an If Statement before an Email or SMS task.

Real-World Examples

Check whether someone has opted out before messaging

Schedule
  └─ Contact           get the contact
      └─ If Statement  {{task_28001_contact_email_unsubscribe}} is false
          └─ Email     send the campaign

Add a contact to a client

Form Submission
  └─ Match to Client   look the client up
      └─ Contact       add the new contact

Correct a contact's details

Webhook In
  └─ Contact   edit the contact's phone number

Best Practices

Email Validation

  1. Validate before submission - Check email format
  2. Handle invalid gracefully - Use If task to check success
  3. Unique emails - One email per contact (system enforced)
  4. Business emails preferred - Personal emails for individuals

Phone Numbers

  1. Use Phone Formatter first - Ensure consistent format
  2. Include country code - For international contacts
  3. Validate before submit - Invalid numbers are rejected
  4. Multiple numbers - Use cell and landline fields

Contact Linking

  1. Always link to client - Contacts need client association
  2. Verify client exists - Use Match to Client first
  3. Handle unlink carefully - Empty Client ID removes link
  4. One primary contact - Mark most important contact clearly

Data Quality

  1. Required fields - First name, last name, and client ID (for Add)
  2. Clean data - Trim whitespace, fix case
  3. Validate before create - Check for duplicates
  4. Update regularly - Keep contact info current

Troubleshooting

Contact Not Created

Check:

  1. Valid Client ID provided?
  2. Client exists in system?
  3. Email format valid?
  4. Phone number valid?
  5. First name and surname provided?

Debug: Check workflow logs for validation errors

Email Already Exists

Issue: Cannot create contact with duplicate email

Cause: Another contact already has this email

Solution:

  • Use Match to Client to find existing contact first
  • Update existing contact instead of creating new
  • Verify email is unique before creation

Phone Number Invalid

Issue: Contact not created due to phone validation

Cause: Phone number format not recognized

Solution: Use Phone Formatter first

Phone Formatter → Format: {{task_55001_phone}}
Contact (Add) → Cell: {{task_24001_formatted}}

Contact Not Unlinked

Issue: Contact still linked after edit

Cause: Client ID field not properly emptied

Solution: Ensure Client ID field is completely blank (not "null" string)

Update Not Saving

Issue: Edit action doesn't update fields

Cause: Contact ID invalid or missing

Solution: Verify contact exists first with Get action

Frequently Asked Questions

Can I create contact without client?

No. All contacts must be linked to a client. Create client first with New Client.

Can I add multiple contacts to one client?

Yes. Run Contact task multiple times with same Client ID or use Loop.

How do I change a contact's email?

Use Edit action with Contact ID and new Email field.

Can I merge duplicate contacts?

No. This task doesn't merge. Handle duplicates manually in CRM or via custom code.

What happens to contact when client is deleted?

Contact remains but becomes orphaned. Re-link to different client.

Can I add custom fields?

No. Use Edit Client task to add custom fields to the client record.

How do I make a contact the primary contact?

System uses first created contact as primary. No specific "primary" flag in this task.

Can I get all contacts for a client?

Use Match to Client: its contact_ids output is a comma-separated list of every contact linked to the client.


  • New Client - Create client before adding contacts
  • Match to Client - Find client or contact by criteria
  • Edit Client - Update client information
  • Phone Formatter - Format phones before adding
  • Loop - Add multiple contacts in batch
  • If Task - Conditional contact operations