Runway East — Make Scenario Build Map

The back-fill scenario: staging text → typed HubSpot deal properties
Real-account build · built & tested 9 July 2026  |  Prepared by Gather 'n' Grow
✓ BUILT & TESTED — DETERMINISTIC, NO AI

What this scenario does

When the broker workflow creates a deal, it writes 7 complex values (dropdowns, a date, two multi-checkboxes) into single-line-text "Broker WF Helper" staging properties — the only type the workflow can set. This Make scenario reads those staging fields and back-fills the real typed properties, so the deal ends up fully structured for reporting and pricing.

Why there's no AI: the bot sends valid HubSpot option internal values in the helper fields. So Make parses the date and passes everything else straight through. No AI credits.

Resilient by design: the write is split into 7 independent Update modules, each with its own Resume error handler. HubSpot rejects a whole update if any one value is invalid, so one bad field would otherwise blank everything. Splitting them means a bad value fails that field alone and the other six still write. The staging text always stays on the deal as the fallback.

The scenario, exactly as it looks in Make
Scroll sideways to follow the full flow →
2
HubSpot CRMWatch Deals
Broker Deals
6
ToolsSet variable
7
Iteratorsplit competitors
Valid competitor
10
ToolsText aggregator
11
Update dealCompetitors
Resume
19
Update dealCurrent office product type
Resume
14
Update dealNotice period
Resume
15
Update dealDeal product type
Resume
16
Update dealWhich brand are they with
Resume
17
Update dealMove in date
Resume
18
Update dealRWE location interested
Resume
What each step does

2HubSpot CRM · Watch Deals

The trigger. Watches for newly created deals and reads the 7 __broker_wf_helper staging fields plus the deal Record ID ({{2.ID}}). The "Broker Deals" filter on the link out means only deals that actually carry a broker helper move on; anything else stops here.

6Tools · Set variable

Converts the move-in date text into a real date: move_in_date = parseDate(move_in_date__broker_wf_helper). This is the only transform in the scenario. The date is used later by the Move in date Update.

7Iterator · split competitors legacy · bypassed

Splits the competitor string into one item per name. This was the old competitor-validation path. Competitors now maps raw, so this module no longer feeds anything — it still runs and costs an operation. Safe to delete.

10Tools · Text aggregator legacy · bypassed

Re-joined the competitors that passed the "Valid competitor" filter (which dropped any name not on HubSpot's option list). Part of the same old path — no longer wired into the Competitors write. Safe to delete alongside the Iterator and the filter.

11 · 19 · 14 · 15 · 16 · 17 · 18HubSpot CRM · Update a Deal  ×7

Seven independent writes, one per typed property, chained left to right. Every one uses Deal ID {{2.ID}} and carries its own Resume error handler hanging below it. If a value is invalid, that single field fails and its Resume lets the chain carry on, so the other six still write. Competitors & provider pass the raw ;-separated string straight into the multi-checkbox; move date uses {{6.move_in_date}}; the rest map their helper field directly.

🔁 Keep Make & the bot in sync when HubSpot dropdowns change

Whenever RWE adds, renames, or removes a dropdown or multi-checkbox option in HubSpot (locations, providers/competitors, product types, notice options, etc.), the values flowing through must still match exactly, or the field blanks silently. So on any option change:

HubSpot writes by internal value, and it's case-sensitive — see the tables below.

Field mapping — 7 helper fields → typed properties

Helper field (Watch Deals reads)Typed property (Update writes)TypeTransform
move_in_date__broker_wf_helpermove_dateDateparseDate (via 6.move_in_date)
rwe_location_interested_in__broker_wf_helperlocationDropdowndirect
product_type__broker_wf_helpertype_of_membershipDropdowndirect
current_office__product_type__broker_wf_helpercurrent_office___product_type__dropdown_Dropdowndirect
current_office__notice__broker_wf_helpercurrent_office___notice_served_to_providerDropdowndirect
current_office__provider__broker_wf_helpercurrent_office___providerMulti-checkboxraw passthrough (;)
competitors_for_tours__broker_wf_helpercompetitors_for_toursMulti-checkboxraw passthrough (;)

Out of Make scope: nature_of_business (Multi-line text) and all Text / Number / Phone / Rich-text fields populate natively in the HubSpot workflow.

⚠ Field name traps — two pairs that look alike but aren't

The Key you pick in each Update must match the value you feed it, or HubSpot rejects it (INVALID_OPTION). Two pairs bite:

Value coming inCorrect HubSpot fieldNOT this field
Membership: Private Office, Dedicated DeskDeal Product Type (type_of_membership)Current office product type
Current setup: Other Flex, Lease, RemoteCurrent office product type (current_office___product_type__dropdown_)Deal Product Type
Notice served: Yes / No / Don't knowNotice served to provider (current_office___notice_served_to_provider)"Notice Period" (1 Month, 2 Months…)

Quick check: open each field's dropdown and read the options. The one listing Private Office is Deal Product Type; the one listing Other Flex is current-office; the one listing 1 Month, 2 Months… is "Notice Period" (which we do not write to).

⚠ type_of_membership — internal value ≠ label on 3 options

HubSpot writes dropdowns by internal value, not the display label. The bot's helper field must carry the internal value, or these three blank out silently:

Deal Product Type (label)Internal value the bot must send
Private OfficePrivate Office
Dedicated DeskDedicated Desk
HotdeskUnlimited Hotdesk
Hotdesk - 10 Day10 day Hotdesk
Virtual OfficeVirtual Office
Timeshare Private OfficeTime Share
Day Pass Private OfficeDay Pass Private Office
Self Contained OfficeSelf Contained Office

Allowed option values (copy exact from HubSpot — never retype)

current_office___product_type__dropdown_ Dropdown
Other FlexLease Hotdesk / All Access Product RemoteDon't knowOther
current_office___notice_served_to_provider Dropdown
YesNoDon't know
location Dropdown · 22 options
London BridgeSohoShoreditch FeatherstoneBorough MarketAldgate East BloomsburyWardourBorough High Street Covent GardenTottenham Court RoadCorinthian Queen SquareTemple MeadsBristol Bridge BathBirminghamBrighton MoorgateFinsbury ParkSoho ExtraOther
current_office___provider  ·  competitors_for_tours Multi-checkbox · ~53 · shared list · ; separated
WeWorkUncommon  (Uncommon)Regus Us&CoLandmarkWorkspace Group Boutique WorkplaceWork LifeFora BEOfficesBruntwoodOrega HuckletreeClockwiseSpaces ColonyImpact WorkingDesk Lodge LABSHQbyRegusArgyll MindspaceOffice Space in Town (OSIT)X+Why The TramperySoho Works …53 total Don't knowOther

Note: Mindspace IS a valid option on the real account. Full 53-option list lives in make-scenario-real-build-steps.md.

Build gotchas — the ones that cost real time

Confirm bot-side before go-live