@koda-sl/baker-cli 0.414.0 → 0.415.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3576,6 +3576,14 @@ baker flows schema side-effect googleSpreadsheet
3576
3576
 
3577
3577
  baker flows add-node contact --type text --name "Thanks"
3578
3578
  baker flows add-side-effect contact --node <nodeId> --type googleSpreadsheet # triggerId comes from the step
3579
+ baker flows connect contact --side-effect se-hubspotForm-1 --hubspot-form <formId> # attach the connected HubSpot account + form, no card
3580
+ baker flows connect contact --all --hubspot-form <formId> # every hubspotForm step still unwired, one call
3581
+ baker flows options calendly # what a step/destination can use: calendly, savvycal, highlevel, highlevelForm, googleSpreadsheet
3582
+ baker flows connect contact --node book --resource <id> # fill a Calendly/SavvyCal/GoHighLevel step yourself
3583
+ baker flows connect contact --side-effect se-gsheet-1 --resource <spreadsheetId> # a sheet Baker can reach (--tab to pick the tab)
3584
+ baker flows connect contact --side-effect se-gsheet-1 --new-sheet "Contact leads" --columns "Name,Email" # create one and wire it
3585
+ baker flows connect contact --side-effect se-pipedrive-1 # Pipedrive / GoHighLevel contact: the account is the destination
3586
+ baker flows connect contact --all --type googleSpreadsheet --same-as madrid:se-gsheet-1 # copy another Form's destination
3579
3587
  baker flows map contact --from map.json --write # a whole mapping at once — past ~3 fields, use this
3580
3588
  baker flows map contact --map A=nombre --write # one or two fields
3581
3589
  baker flows map contact --hubspot-form <guid> --from map.json --write # HubSpot: field types read off the form
@@ -3587,7 +3595,9 @@ baker flows normalize contact --write # repairs a nulled optional;
3587
3595
  Notes:
3588
3596
 
3589
3597
  - **`schema` takes the kind as an argument because `hubspot` is both** — a node type (embeds a form on the page) and a side-effect type (fires a behavioural event). They are different things with one name.
3590
- - **Configure the destination before you map.** `columnMapping`/`fieldMapping` describe a *specific* destination — sheet columns, a portal's field names — that only `request_flow_input` can see, and that call returns it. A mapping written first is valid JSON that ships and drops every submission; `verify` blocks the half-wired result.
3598
+ - **`connect` wires a HubSpot form without asking the user.** When HubSpot is connected and the agent knows which form is meant, `baker flows connect <slug> --hubspot-form <formId> [--side-effect <id>]` attaches the account and the form to a `hubspotForm` side effect (`--all`: every one in the Form still missing it, never repointing one already wired) — the same thing the chat card writes, sealed by Baker so the config never passes through the agent. It refuses a form with spam prevention (captcha) on, and returns `destination.formGuid` for `map --hubspot-form`. The card (`request_flow_input`) stays for an unconnected account or an ambiguous choice.
3599
+ - **`options` + `connect` do the same for every other connected platform.** `baker flows options <kind>` lists what the connected account holds (Calendly events, SavvyCal links, GoHighLevel calendars and forms, the Google spreadsheets Baker can reach); `connect --node|--side-effect <id> --resource <id>` writes exactly what the card would. Pipedrive and a GoHighLevel contact take no resource. `--new-sheet` creates a spreadsheet in the connected Google account (Google only lets Baker reach sheets it created or the user chose), `--same-as <slug>:<id>` copies another Form's wired destination, `--all --type <kind>` fills every unwired one of a kind. Nothing connected answers `NOT_CONNECTED` with the `request_connection` fix; several accounts connected need `--account <id>`.
3600
+ - **Configure the destination before you map.** `columnMapping`/`fieldMapping` describe a *specific* destination — sheet columns, a portal's field names — that only `connect` or `request_flow_input` can set, and both return it. A mapping written first is valid JSON that ships and drops every submission; `verify` blocks the half-wired result.
3591
3601
  - **`map` reads the record shape off the side effect's type.** One property name, four record shapes: a Sheet is addressed by column letter, HubSpot by property name, Pipedrive and GoHighLevel by field key, Crmble by field id. That is why there is no `--key`, and why `--entity` and `--custom`/`--standard` are required rather than defaulted.
3592
3602
  - **A mapping is usually eight to fifteen fields, so `--from` is the main door.** It takes `{ "map": { "<destField>": "<value>" } }` from a file or stdin; `--map` flags are for one or two. Both produce identical output.
3593
3603
  - **Most CRM fields are not fed by a form field.** The value grammar is a bare form field (`nombre`), `field:Step.name` when two steps share a name, `tracking:utm_source`, `global:Name`, `code:exposed_value`, a `"literal"`, or any of those joined with `+`. Tracking names are validated against the engine's own `TRACKING_FIELD_IDS`, read out of the workspace rather than copied — attribution columns are the most common CRM mapping there is, and they were unexpressible before.