# HubSpot: add timeline event

Use **HubSpot: add timeline event** to log that a traveler passed this journey step directly onto a HubSpot contact's timeline, alongside emails, calls, and other CRM activity. The event carries the journey's name, the step's name, and whether the traveler is subscribed to push.

Put this point after one that already knows the contact, for example [HubSpot: get contact properties](/product/customer-journey/journey-elements/integrations/hubspot-get-contact-properties/), [HubSpot: create or update contact](/product/customer-journey/journey-elements/integrations/hubspot-create-or-update-contact/), or [HubSpot: update subscription](/product/customer-journey/journey-elements/integrations/hubspot-update-subscription/) — all three put the contact's ID into attribute `hubspot_contact_id`, which this point needs.

Unlike the other HubSpot points, this one has no **Private app token** field: it authenticates through the account's connected HubSpot integration instead of a token you paste into the point.

## Before you start

Connect Pushwoosh to HubSpot first — see [HubSpot integration](/product/integrations/hubspot-integration/).

<Aside type="caution">
A portal connected before Pushwoosh started requesting the `timeline` scope doesn't have it, and this point fails with a permission error. The traveler drops from the journey like any other failed request. Reconnect the integration to grant the scope, following the note on reconnecting in [HubSpot integration](/product/integrations/hubspot-integration/#add-pushwoosh-integration-to-hubspot).
</Aside>

## Configure the point

1. Drag **HubSpot: add timeline event** from the **Integrations** section of the left panel onto the canvas.
2. Double-click the point and enter a **Step Name**.
3. In **HubSpot contact ID**, click **Insert Dynamic Value** to pick `hubspot_contact_id` from the HubSpot point earlier in this journey that found or wrote the contact.
4. If Pushwoosh is connected to more than one HubSpot portal, enter the numeric ID of the one to write to in **HubSpot portal ID**. Leave it empty when there's just one.
5. Click **Save**.

## Response

The traveler continues to whatever step you connect next on the canvas. This point doesn't return an attribute.

Unlike [HubSpot: get contact properties](/product/customer-journey/journey-elements/integrations/hubspot-get-contact-properties/) and [HubSpot: update subscription](/product/customer-journey/journey-elements/integrations/hubspot-update-subscription/), this point has a single path. There's no **Found**/**Not found** branch to connect.

### Failures and unexpected responses

Open [Calls log](/product/customer-journey/journey-elements/channels/webhook/#calls-log) in the point's drawer and check the response:

* A permission error — the connected portal doesn't have the `timeline` scope. See [Before you start](#before-you-start).
* A request naming several portals — **HubSpot portal ID** is empty, and Pushwoosh is connected to more than one HubSpot portal. Fill it in with one of the IDs the response names.

A failed request drops the traveler from the journey. See [Errors and failed requests](/product/customer-journey/journey-elements/integrations/#errors-and-failed-requests).