Module · How a workflow is built
Reading a node's configuration
Lesson 10 of 40 · 5 min
There is no code behind any of these boxes. Click one and you get a panel of labelled fields — the same panel the person who built it filled in. That is worth saying to a client early, because they are usually bracing for something worse.
One node, three filled-in fields
Open 3.1 · Call every new lead back within 5 minutes and click the box called priority_callback. It is the node that raises the call-back task a branch head sees.
3.1 · Call every new lead back within 5 minutes
A new enquiry arrives, its size decides who calls back, and a task is raised for them. The node in the middle of that sentence is the one to read.
Scroll for all 5 steps →
Three fields, and between them they say a whole sentence: create a task, on a deal, containing this. Every CRM Manager node in the org is that same sentence with different words in it.
What those fields are — and the fourth one
| Field | What it holds |
|---|---|
entity_type | Type of CRM entity or relationship to manage One of: contact · company · deal · note · task · product · activity · deal_contact · deal_company · contact_company · deal_product · deal_payment · deal_payment_schedule Defaults to contact. |
operation | Operation to perform. Use batch_* for multiple items at once. One of: create · update · get · search · delete · link · unlink · update_relationship · batch_create · batch_update · batch_delete Defaults to get. |
entity_id | Entity ID or email (for contacts) for operations that require it |
json_data | JSON string of entity data for create/update (preferred write path). On update: "" blanks a field, null leaves it unchanged, custom_fields merge. |
entity_type
- What it holds
- Type of CRM entity or relationship to manage One of:
contact · company · deal · note · task · product · activity · deal_contact · deal_company · contact_company · deal_product · deal_payment · deal_payment_scheduleDefaults tocontact.
operation
- What it holds
- Operation to perform. Use batch_* for multiple items at once. One of:
create · update · get · search · delete · link · unlink · update_relationship · batch_create · batch_update · batch_deleteDefaults toget.
entity_id
- What it holds
- Entity ID or email (for contacts) for operations that require it
json_data
- What it holds
- JSON string of entity data for create/update (preferred write path). On update: "" blanks a field, null leaves it unchanged, custom_fields merge.
Read them in that order and a node stops being intimidating: what kind of thing, what am I doing to it, which one, and with what content. priority_callback fills in only three, because it creates a task and a task that does not exist yet has no id. Any node that updates something has to name which one, and that is the fourth field.
The field that is not a form
json_data is a JSON string, not a set of tick-boxes — you are editing text. That is the product's own preferred write path and it is worth knowing before you open it, because a missing quote mark is the commonest way to break a working node.
The product's own warnings for this node: WRITES go in `json_data` (a JSON STRING), not a `data` object — the object is dropped on write.
A deal's stage has no native field — set it only via json_data: '{"stage_name": "..."}'.
custom_fields update MERGES: "" blanks a value, JSON null leaves it unchanged, omitted = unchanged.
SEARCH cannot filter by a custom field (it's ignored) — use a database_query SELECT instead.
Read results as {{alias.results}} / {{alias.results[0].id}}; a single entity as {{alias.entity.id}}.
The second of those is the one that catches people in this org. A deal's stage has no field of its own; it is set through json_data. Several of your workflows move a deal along the pipeline, and every one of them does it that way.
Change one thing
Do this on a draft, so nothing you do can fire. 7.2 · Every morning, chase what has gone quiet is one, and it uses the same node type you have just read.
- Open it and click
chase_task. Same node type, same three fields. - In
json_data, find"priority": "medium"and make it"high". Save. - Reopen the node. The change is there, the workflow is still a draft, and no task has been created anywhere — because a draft does not run.
- Now break it on purpose: delete one of the quote marks and save. Read what the builder tells you, then undo it. Recognising that message on sight is worth the thirty seconds.
- Put
mediumback.
Try it
- Open five nodes across three different workflows and, for each, answer the four questions from the table before reading the field labels.
- Find a node whose configuration you cannot explain. Note which one — the answer is in Module 3, and knowing which node beat you is useful.
- Open
2.3 · Mark every lead hot, warm or cold — and say whyand clickwrite_score. It is the same node type as the one you just read, but one field says{{ai}}instead of a value. Do not fix it — it is not broken, and it is explained in Module 3.
Next: Variables: how one node uses another's output — the curly brackets you have now seen in three different nodes, and the one mistake they cause.

