Flows
Fields
The fields a flow can read for a lead, where each comes from, and what a blank one means.
A field is a named value a flow holds for one lead. Conditions test fields, and text settings can hold them in {{braces}}.
A field’s name starts with where it came from:
| Prefix | Comes from |
|---|---|
form. |
What the visitor typed into the form. One field for each form field, by its name in HubSpot. |
trigger. |
What started the flow. |
clean. |
The Clean and enrich step: the email address, cleaned and checked. |
sopro. |
The Clean and enrich step: the company, from Sopro Data. |
hs. |
The HubSpot lookup step: the contact, the company and its deals. |
ask. |
The answers to an Ask questions step, as ask.<id>. |
flow. |
Set by an earlier step of this flow. |
Rules for every field
Section titled “Rules for every field”- A field that is not there reads as blank. A flow does not stop on a missing field.
- Names ignore case.
Form.Emailandform.emailare the same field. - A yes-or-no field holds
yesorno. It is blank when the answer is not known.
Clean and enrich
Section titled “Clean and enrich”| Field | Holds |
|---|---|
clean.email |
The email address, cleaned |
clean.domain |
The company domain |
clean.freemail |
Free-mail address: yes or no |
clean.disposable |
Throwaway address: yes or no |
clean.website |
Has a working website: yes or no |
Sopro Data
Section titled “Sopro Data”| Field | Holds |
|---|---|
sopro.matched |
Found in Sopro Data: yes or no |
sopro.name |
Company name |
sopro.headcount |
Headcount, as a number: the lower end of the band |
sopro.headcount_band |
Headcount band |
sopro.revenue |
Revenue, as a number |
sopro.revenue_band |
Revenue band |
sopro.growth |
Growth, as a number |
sopro.industry |
Industry |
sopro.industry_group |
Industry group |
sopro.country |
Country |
sopro.tier |
Tier |
sopro.type |
Company type |
sopro.founded |
Year founded, as a number |
sopro.headcount lets “is less than 11” and “is more than 500” work. The band 201-500 gives 201, 10,001+ gives 10001 and Myself Only gives 1.
When the company is not found, sopro.matched is no and every other sopro. field is blank. The flow carries on.
HubSpot lookup
Section titled “HubSpot lookup”| Field | Holds |
|---|---|
hs.contact.exists |
Contact is in HubSpot: yes or no |
hs.contact.owner |
Contact owner, as a HubSpot owner ID |
hs.company.exists |
Company is in HubSpot: yes or no |
hs.company.name |
Company name in HubSpot |
hs.company.owner |
Company owner, as a HubSpot owner ID |
hs.deals.open |
Open deals, as a number |
hs.deals.customer |
Is a customer: yes or no |
hs.deals.latestOpen.pipeline |
Latest open deal: pipeline |
hs.deals.latestOpen.stage |
Latest open deal: stage |
hs.deals.latestOpen.owner |
Latest open deal: owner, as a HubSpot owner ID |
hs.deals.latestWon.date |
Latest won deal: date, as yyyy-mm-dd |
hs.deals.latestLost.date |
Latest lost deal: date, as yyyy-mm-dd |
The contact and company properties the lookup reads are fields too, as hs.contact.<property> and hs.company.<property>, by the property’s name in HubSpot.
The deal fields are filled only when the company is in HubSpot. If HubSpot was not asked or did not answer, every hs. field is blank.
The trigger
Section titled “The trigger”| Field | Holds |
|---|---|
trigger.kind |
What started the flow: form, webhook, record or meeting |
trigger.property |
The contact property that changed |
trigger.value |
What the property changed to |
trigger.outcome |
The meeting’s outcome: COMPLETED, NO_SHOW, CANCELED or RESCHEDULED |
A flow that starts from a post to its address also has the posted values as form.<name>.
Set by steps of the flow
Section titled “Set by steps of the flow”A step adds its fields for the steps after it.
| Step | Field | Holds |
|---|---|---|
| Assign from queue | flow.rep_name |
Rep’s name |
flow.rep_owner |
Rep’s HubSpot owner ID | |
flow.queue_name |
Queue’s name | |
| Assign to existing owner | flow.rep_name, flow.rep_owner |
As above |
flow.ownerSource |
Where the owner came from | |
| Assign to a person, Reassign | flow.rep_name, flow.rep_owner |
As above |
| Score | flow.score |
The score, as a number |
| Lookup table | flow.lookup |
What the lookup table gave |
| AI classify | flow.ai |
What the model answered: one of the step’s allowed answers |
| Set value | flow.<name> |
The value you set, under the name you chose |
| Ask questions | ask.<id> |
The answer to each question |
| Show calendar | flow.rep_name, flow.rep_owner |
The rep who hosts the meeting |
flow.meeting_start |
When the meeting starts | |
flow.meeting_moves |
How many times the meeting was moved | |
flow.meeting_cancelled_by |
Who cancelled the meeting: guest, declined or rep | |
flow.meeting_cancel_reason |
The reason given for cancelling | |
| Create deal | hs.deal.id |
The deal’s ID |
Using a field in text
Section titled “Using a field in text”Put the field’s name in double braces:
New lead from {{sopro.name}} ({{sopro.headcount_band}}), given to {{flow.rep_name}}.A setting’s help says when it takes fields. A field that is blank or unknown becomes nothing.
What the trace keeps
Section titled “What the trace keeps”A lead’s trace names the fields each step tested. It does not store what a visitor typed, such as form values, answers, the email address or the company’s name. The Leads screen fills those in from the lead when it shows the trace.
For agents
Section titled “For agents”list_fields gives the fields a flow can use.