> ## Documentation Index
> Fetch the complete documentation index at: https://docs.introw.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Trigger HubSpot workflows from partner engagement

> Enroll a HubSpot workflow the moment a partner submits a form, visits the portal, comments, or updates a shared record, using the app events Introw writes to the contact and company timeline.

Yes, a HubSpot workflow can run off a partner action, and it does not have to wait for a CRM record to appear first.
Introw writes partner activity to HubSpot as **app events** - HubSpot's term for timeline events a connected app publishes - and HubSpot can enroll a record on one.
So a deal registration routes itself to the right AE the second a partner files it, a quiet partner triggers a check-in task, and a comment on a shared deal pings the owner.

The events fire automatically whenever HubSpot is connected with current scopes.
There is no toggle in Introw to switch them on.

## What you'll achieve

A live HubSpot workflow that enrolls on a real partner action - a form submitted, a portal visit, a comment, a shared record updated - runs the follow-up your team would otherwise do by hand, and can write the result back into Introw.

## The app events you can trigger on

Six events, each written twice: once against the partner's **contact** and once against their **company**, so you can work at either grain.

| App event           | Fires when                                                            | What the event carries                             |
| ------------------- | --------------------------------------------------------------------- | -------------------------------------------------- |
| **Portal visit**    | A partner opens your portal                                           | Who visited, a link to the partner in Introw       |
| **Comment**         | A partner comments on a shared record, task, or thread                | Who commented, the comment, which kind of record   |
| **Asset viewed**    | A partner opens or downloads a piece of content                       | Who viewed it, the asset name, a link to the asset |
| **Object update**   | A partner changes a field on a shared record                          | Who changed it, which kind of record               |
| **Form submitted**  | A form is submitted: deal registration, lead, MDF request, onboarding | Who submitted, the form name, a link to it         |
| **Deal closed won** | A partner marks a shared deal won from the portal                     | Who changed it, which kind of record               |

Those carried values are the event's properties, and they are what HubSpot lets you filter and group on.
Each card also shows a detail block - every submitted field on **Form submitted**, the before and after values on **Object update** and **Deal closed won**.
Read that on the timeline, but treat it as display data: HubSpot does not expose it to filters, lists, or reports.

Five of the six are partner-initiated by design.
Your own team working a record in HubSpot writes no event, because that activity is already in HubSpot.
**Form submitted** is the exception: it fires for any submission, including one your team files on a partner's behalf, and lands on the submitter's contact plus the partner's company.

Repeat activity is grouped rather than counted per click: one portal visit per partner contact per portal in a four-hour window, one event for a view and a download of the same asset inside 30 minutes, one event for several field changes on the same record inside 30 minutes.
Previewing a portal as a partner writes nothing at all, so your own testing stays out of both the timeline and the numbers.

## Before you start

<Steps>
  <Step title="Connect HubSpot with current scopes">
    Go to [Integrations](https://app.introw.io/settings/integrations?category=crm) and confirm HubSpot shows as **Connected**.
    If the tile shows **Update available**, or the header shows **Install update**, run it and re-authorize so the app holds the scopes it needs to write timeline events.
    See [Connect HubSpot as your source of truth](/features/integrations/crm/guides/connect-hubspot).
  </Step>

  <Step title="Check your HubSpot subscription">
    Event enrollment triggers and the custom report builder both need a **Professional** or **Enterprise** subscription, on any hub.
    Below those tiers the events still land on the timeline for people to read; they just cannot drive a workflow or a custom report.
  </Step>

  <Step title="Expect nothing to switch on in Introw">
    App events are governed by the HubSpot app being installed, not by an Introw setting.
    There is no toggle and nothing to configure per event: let a partner act once, and the first events appear.
  </Step>
</Steps>

## Steps

<Steps>
  <Step title="Pick the object the workflow runs on">
    Introw writes each event to both the partner's contact and their company, so build a **contact-based** or **company-based** workflow.
    Choose by what the follow-up needs.
    A contact workflow gives you the person who acted, which is what you want for routing a submission or emailing the partner rep.
    A company workflow gives you the partner account, which is what you want for account-level scoring, lifecycle, or alerting the account owner.
    A deal-based or ticket-based workflow has nothing to enroll on here, because Introw does not write these events to deals or tickets.
  </Step>

  <Step title="Add the event as the enrollment trigger">
    In the workflow's enrollment triggers, choose **When an event occurs**, open the **Integrations** category, and select **Integration event occurs**.
    The Introw events are listed there once the app is installed; pick the one you want, for example **Form submitted**.
    HubSpot enrolls the record each time that event arrives, so the workflow runs per action rather than per property state.
  </Step>

  <Step title="Narrow the trigger to the activity you care about">
    An unfiltered **Form submitted** trigger enrolls on every form: registrations, MDF requests, onboarding questionnaires.
    Select **+ Add criteria to further define your trigger** and filter on the event's own properties - most often the form name, so only deal registrations enroll.
    Do the same for the other events: a specific asset on **Asset viewed**, the kind of record on **Object update**.

    Add the enrollment filters you would use anywhere else (partner tier on the company, owner, country) in the same trigger group.
    HubSpot evaluates those filters at the exact moment the event arrives, so a property set a second later is invisible to them.
  </Step>

  <Step title="Add the actions the activity should set off">
    Build the branch you would build for any other trigger: notify the partner manager, create a task for the AE who owns the account, rotate the record to an owner, set a property, start a sequence, or wait and check whether anyone responded.
    For a deal registration, the useful shape is usually: enroll on **Form submitted**, filter to the registration form, then alert the partner manager and the AE who owns the account.
  </Step>

  <Step title="Act back in Introw from the same workflow">
    The workflow can finish the round trip inside Introw.
    Introw ships custom workflow actions - create or update a partner, enroll a partner in a journey, issue a certificate - so a workflow triggered by partner activity writes the consequence straight back into the partner's world.
    See [Use Introw workflow actions in HubSpot](./use-introw-workflow-actions-in-hubspot).
  </Step>

  <Step title="Turn it on and test with a real action">
    Activate the workflow, then have a partner (or your own test contact) take the action from the portal.
    An event trigger only fires when the event actually arrives, so generate one by taking the action; editing a property will not enroll the record.
    Open the workflow's **History** and confirm the record enrolled and the actions ran.
  </Step>
</Steps>

## Which trigger should you use

A partner action often writes a CRM record too, and that record is a trigger in its own right.
The two are not interchangeable.

| You want to act on                                                   | Use                                                                        |
| -------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| The submission itself, the moment it lands                           | The Introw **Form submitted** app event                                    |
| The deal or lead the submission created                              | HubSpot's own **Object created** or property-change trigger on that record |
| A submission only once your team has accepted it                     | The record the acceptance writes, not the event                            |
| Activity that writes no record at all: visits, asset views, comments | App events - nothing else in HubSpot can see that activity                 |

Timing decides most of these.
On a form that accepts submissions automatically, Introw writes the CRM records first and the app event after, so a workflow enrolling on the event can already read the deal it created.
On a form with an approval gate, the event fires when the partner submits, before any record exists - the acceptance is what writes the record later.

## What you cannot automate this way

* **Branching on an individual answer.** The submitted fields are display data on the card, not filterable properties. To branch on what a partner answered, map that field to a CRM property in the form's [CRM automation](/features/forms/crm-automations/guides/connect-a-form-to-your-crm) and trigger on the record instead.
* **Enrolling a deal or a ticket.** The events are written to the contact and the company only.
* **Firing on approval.** **Form submitted** fires at submission, whether the form auto-accepts or waits for an approver.
* **Catching every click.** Repeat activity is grouped, so a workflow enrolling on **Portal visit** fires once per partner contact per four-hour window, not on every page they open.
* **Running in Salesforce.** App events are a HubSpot surface. Salesforce automation runs the other way around, from [Introw's own workflows](/features/automation/workflows) writing into the CRM.

## Verify it worked

Have a partner submit a form from their portal.
Within seconds the linked HubSpot contact and company show a **Form submitted** card, and the workflow you built lists that record in its **History** with every action marked as run.

## Related

<CardGroup cols={2}>
  <Card title="Report on partner engagement in HubSpot" icon="chart-line" href="./report-on-partner-engagement-in-hubspot">
    The same events, counted: reports, lists, and lead scoring.
  </Card>

  <Card title="Use Introw workflow actions in HubSpot" icon="gear" href="./use-introw-workflow-actions-in-hubspot">
    The other half of the round trip: HubSpot workflows acting back into Introw.
  </Card>

  <Card title="Connect a form to your CRM" icon="arrows-rotate" href="/features/forms/crm-automations/guides/connect-a-form-to-your-crm">
    What a submission writes into HubSpot, and the records you can trigger on.
  </Card>

  <Card title="Introw workflows" icon="diagram-project" href="/features/automation/workflows">
    Automation that runs inside Introw, on the same partner activity.
  </Card>

  <Card title="Set up Introw inside HubSpot" icon="id-card" href="./set-up-the-hubspot-partner-connect-card">
    The app cards that put partner collaboration on the record itself.
  </Card>

  <Card title="Implementation reference" icon="screwdriver-wrench" href="../technical">
    Full configuration options.
  </Card>
</CardGroup>
