Reading a node's configuration
Click a box and you get a form. Learn to read one node's form and you can read every node's form, because they are all the same shape.
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.
Related lessons
Base rates — what a piece of evidence is actually worth
A face-recognition system that is 99.9% accurate and almost entirely wrong, and a number that sent an innocent woman to prison. Both are the same arithmetic, and it is the arithmetic that decides what any piece of evidence is worth.
ReadConfirmation and survivorship — what you never looked for
Two questions about evidence you did not go looking for. One is a rule you have to discover, and one is a pattern in five famous people — and in both, the thing that would have told you the truth is the thing nobody checks.
ReadLoss aversion, sunk cost and regression — what it costs you
Four questions you answer about yourself rather than about a scenario, and your own answers are the finding. Then the pattern that makes praise look useless and criticism look like it works, whatever you actually do.
Read
