> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://katalyz.crisp.help/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Katalyz actions in HubSpot workflows

The Katalyz app adds five custom actions to HubSpot workflows, so a deal moving through your pipeline can create a room, invite the buying committee, post a message, or hand a contact a magic link — without anyone opening Katalyz.

## Before you start

- The HubSpot integration has to be connected at the org level. See [Connecting HubSpot](https://katalyz.crisp.help/en/article/connecting-hubspot-160gs96/).
- **A HubSpot plan that includes workflows.** Workflows need a **Professional or Enterprise** tier of Marketing Hub, Sales Hub, Service Hub, Data Hub (formerly Operations Hub), Smart CRM or Revenue Hub. Beyond that there's no extra requirement: actions provided by a connected app — Katalyz included — work in every workflow type. (The *custom code* action is the one that specifically needs Data Hub Professional; the Katalyz actions are not custom code.)
- You need HubSpot permissions to create or edit workflows.

You'll find the actions in the workflow editor under the **Katalyz** app when you add an action.

![HubSpot workflow action picker with the Katalyz app expanded, showing the five actions](https://storage.crisp.chat/users/helpdesk/website/-/5/5/4/8/554891f22af0b400/hubspot-workflow-action-picker_dzpw6x.png)

## The five actions at a glance

| Action | Runs on | Required inputs | Outputs |
|---|---|---|---|
| **Create Dealroom** | Company, Deal | **Title**, **Template** | **Dealroom ID**, **Error message** |
| **Invite Contact to related dealroom(s)** | Contact | **Dealroom Role**, **Notify?**, **Invite to latest dealroom created?** | **Error message** |
| **Invite Related Contacts to Dealroom (with Magic Links)** | Company, Deal | **Dealroom ID**, **Dealroom Role**, **Notify Contacts**, **Position Filter** | **Contact Email**, **Magic Links**, **Total Invitations**, **Error message** |
| **Send message to Dealroom** | Company, Deal | **Dealroom ID**, **Message** | **Error message** |
| **Generate Magic Link** | Contact | **Dealroom ID** | **Contact Email**, **Magic Link**, **Magic Token**, **Error Message** |

"Runs on" is the object type of the workflow itself. A deal-based workflow can use **Create Dealroom**; a contact-based workflow can use **Generate Magic Link**; and so on. An action doesn't show up in a workflow whose object type it doesn't support.

## Create Dealroom

Creates a room from one of your Katalyz templates and links it to the record the workflow is running on.

**Runs on:** company-based and deal-based workflows.

| Input | Required | What it does |
|---|---|---|
| **Title** | Yes | The name of the new room. |
| **Template** | Yes | The template to start from. The list is fetched live from your Katalyz workspace, so published templates appear in the dropdown without any extra setup. |

| Output | What you get |
|---|---|
| **Dealroom ID** | The identifier of the room that was just created. Every other action that targets a room takes this value. |
| **Error message** | Empty on success; the reason on failure. |

The room lands in your workspace already associated with the originating deal or company, exactly as if it had been created from [the Katalyz card](https://katalyz.crisp.help/en/article/working-from-hubspot-the-katalyz-card-4yjtix/).

## Invite Contact to related dealroom(s)

Invites the contact the workflow is running on into the rooms already related to them.

**Runs on:** contact-based workflows.

| Input | Required | What it does |
|---|---|---|
| **Filter: Dealroom Title** | No | Narrows the invitation to rooms whose title matches. |
| **Filter: Dealroom ID** | No | Narrows the invitation to one specific room. |
| **Dealroom Role** | Yes | **Viewer** or **Editor**. |
| **Notify?** | Yes | Sends the invitation email to the contact when enabled. |
| **Invite to latest dealroom created?** | Yes | When enabled, only the most recently created matching room is used. |

| Output | What you get |
|---|---|
| **Error message** | Empty on success; the reason on failure. |

Both filters are optional, but leaving them both empty means the action works on every room related to that contact. Combining a filter with **Invite to latest dealroom created?** is the usual way to keep it predictable.

## Invite Related Contacts to Dealroom (with Magic Links)

Takes every contact associated with the deal or company, invites the ones that match your position filter, and returns their magic links.

**Runs on:** company-based and deal-based workflows.

| Input | Required | What it does |
|---|---|---|
| **Dealroom ID** | Yes | The room to invite into. Usually the **Dealroom ID** output of an earlier **Create Dealroom** step. |
| **Dealroom Role** | Yes | **Viewer** or **Editor**. |
| **Notify Contacts** | Yes | Emails the invitation to each contact when enabled. |
| **Position Filter** | Yes | "Filter contacts by position. Multiple values separated by comma." |

| Output | What you get |
|---|---|
| **Contact Email** | The invited contact's email. |
| **Magic Links** | The links generated for the invited contacts. |
| **Total Invitations** | How many invitations the step sent. |
| **Error message** | Empty on success; the reason on failure. |

**Position Filter** is required, so decide deliberately what it should hold — it is what stops a workflow from inviting every contact on a large account.

## Send message to Dealroom

Posts a message into an existing room.

**Runs on:** company-based and deal-based workflows.

| Input | Required | What it does |
|---|---|---|
| **Dealroom ID** | Yes | The room to post into. |
| **Message** | Yes | The message body. |

| Output | What you get |
|---|---|
| **Error message** | Empty on success; the reason on failure. |

Useful as a follow-up step: a deal slips to a later stage, and the room gets a note telling the buyer what happens next.

## Generate Magic Link

Generates a magic login link for the contact the workflow is running on, without sending anything. You decide what to do with the link afterwards — put it in a HubSpot marketing email, write it to a property, hand it to another step.

**Runs on:** contact-based workflows.

| Input | Required | What it does |
|---|---|---|
| **Dealroom ID** | Yes | The room the link should open. |

| Output | What you get |
|---|---|
| **Contact Email** | The contact the link belongs to. |
| **Magic Link** | The link itself. |
| **Magic Token** | The raw token behind the link, if you need to build your own URL. |
| **Error Message** | Empty on success; the reason on failure. |

> This action's labels are only available in English. In a French-language portal it appears with its English name and field labels.

## Roles: Viewer and Editor only

Every action that assigns access offers **Viewer** and **Editor** — nothing else. Katalyz rooms themselves have four roles (Owner, Editor, Commenter, Viewer); the other two are set in the Katalyz app once the person is in the room. Pick **Viewer** for read access and **Editor** when the person needs to contribute.

## The outputs each action returns

Every Katalyz action returns a set of outputs — **Create Dealroom** returns a **Dealroom ID**, the invitation actions return **Magic Link** / **Magic Links** and **Total Invitations**, and all of them return an **Error message** that is empty on success and carries the reason on failure.

Whether you can feed one action's output into a later step depends on your workflow and on what HubSpot exposes at that point, so check it in the workflow editor rather than assuming it. If the outputs you need aren't available downstream, set the **Dealroom ID** explicitly on each action instead.

![The outputs of a Katalyz action shown in the HubSpot workflow editor](https://storage.crisp.chat/users/helpdesk/website/-/5/5/4/8/554891f22af0b400/hubspot-workflow-action-output_12iaumt.png)

## Worked example

A deal reaches **Proposal sent**, and you want the buyer to land in a room the same minute.

1. **Trigger** — a deal-based workflow, enrolling deals whose stage becomes **Proposal sent**.
2. **Create Dealroom** — **Title** built from the deal name, **Template** set to your proposal template.
3. **If/then branch** — is **Error message** known? If yes, create a task for the deal owner and stop. If no, continue. (Branching on **Error message** is worth doing after any of these actions, so failures don't pass unnoticed.)
4. **Invite Related Contacts to Dealroom (with Magic Links)** — **Dealroom Role** **Viewer**, **Notify Contacts** on, **Position Filter** listing the job titles you care about.
5. **Send message to Dealroom** — a short message introducing the proposal and the next step.

Steps 4 and 5 both need a **Dealroom ID**. How you supply it depends on your setup — check in the workflow editor whether step 2's output is available there.

The same shape works for renewals, onboarding kick-offs, or any stage where the handover to the buyer should be automatic rather than remembered.

## Related articles
- [Connecting HubSpot](https://katalyz.crisp.help/en/article/connecting-hubspot-160gs96/)
- [HubSpot: syncing rooms with deals, companies and contacts](https://katalyz.crisp.help/en/article/hubspot-syncing-rooms-with-deals-companies-and-contacts-mahadg/)