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

---
id: 053cabef-a2ef-45ed-9aaf-a5ac858b23ec
---

# Track custom events

export const RequiredIndicator = () => {
  return <span className="required-indicator">
      required
    </span>;
};

export const SupportedProducts = ({marketing, sales, service, cms, data, commerce, marketingLevel, salesLevel, serviceLevel, cmsLevel, dataLevel, commerceLevel}) => {
  const translations = {
    description: "Requires one of the following products or higher.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub",
      data: "Data Hub",
      commerce: "Revenue Hub"
    },
    tiers: {
      free: "Free",
      starter: "Starter",
      professional: "Professional",
      enterprise: "Enterprise"
    }
  };
  const translateTier = tier => {
    if (!tier) return '';
    const lowerTier = tier.toLowerCase();
    return translations.tiers[lowerTier] || tier;
  };
  const products = [{
    name: marketing ? translations.productNames.marketing : '',
    level: translateTier(marketingLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/marketing-bolt.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/sales-star.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/service-heart.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/content-play.svg",
    alt: "Content Hub"
  }, {
    name: data ? translations.productNames.data : '',
    level: translateTier(dataLevel),
    icon: "https://developers.hubspot.com/hubfs/Knowledge_Base_2023-24-25/subscription_key_icons/operations_icon.svg",
    alt: "Data Hub"
  }, {
    name: commerce ? translations.productNames.commerce : '',
    level: translateTier(commerceLevel),
    icon: "https://developers.hubspot.com/hubfs/Knowledge_Base/subscription_key_icons/commerce_icon.svg",
    alt: "Revenue Hub"
  }].filter(product => product.name && product.level);
  if (products.length === 0) return null;
  return <div>
      <div className="text-sm mb-2">{translations.description}</div>
      <div className={`grid ${products.length === 1 ? 'grid-cols-1' : 'grid-cols-2'} gap-1.5`}>
        {products.map((product, index) => <div key={index} style={{
    display: 'flex',
    alignItems: 'center'
  }}>
            <img src={product.icon} alt={product.alt} className="w-3.5 h-3.5 mr-1.5 mt-2.5 mb-2.5 flex-shrink-0 align-middle" />
            <span className="font-medium mr-1 text-sm">{product.name} -</span>
            <span className="text-sm">{product.level}</span>
          </div>)}
      </div>
    </div>;
};

<Accordion title="Supported products" defaultOpen="true" icon="cubes">
  <SupportedProducts marketing={true} sales={true} service={true} cms={true} marketingLevel="professional" salesLevel="professional" serviceLevel="professional" cmsLevel="professional" data={true} dataLevel="professional" />
</Accordion>

<Warning>
  **Please note:** `trackEvent` has been deprecated and no longer works. Use `trackCustomBehavioralEvent` instead, as documented below.
</Warning>

Track custom events in your HubSpot account. Custom events can be tied to a contact record so you can see if and when a contact triggered that event.

## Parameters

| Parameter                    | Type   | Description                                                                                                                                                                                                                                                                                                                          |
| ---------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `name` <RequiredIndicator /> | String | The internal name of the custom event, formatted as `pe{HubID}_{name}`. You can find the internal name either via the [Custom events API](/api-reference/latest/events/define-events/get-event-definitions) or [in HubSpot](https://knowledge.hubspot.com/reports/create-custom-events#how-do-i-create-custom-events-using-the-api). |
| `properties`                 | Object | An object of property names and values to send with the event.                                                                                                                                                                                                                                                                       |

## Usage

```javascript theme={null}
var _hsq = (window._hsq = window._hsq || []);
_hsq.push([
  "trackCustomBehavioralEvent",
  {
    name: "pe12345678_my_event",
    properties: {
      property_name: "property_value",
    },
  },
]);
```

## Migrate from trackEvent

To migrate from the deprecated `trackEvent` method, update your calls as follows:

* Replace `trackEvent` with `trackCustomBehavioralEvent`.
* Replace the `id` field with `name`, using the `pe{HubID}_{name}` format for the value.
* Wrap any properties you're sending in a `properties` object.

**Before:**

```javascript theme={null}
var _hsq = (window._hsq = window._hsq || []);
_hsq.push([
  "trackEvent",
  {
    id: "custom_event_name",
    property1: "value1",
  },
]);
```

**After:**

```javascript theme={null}
var _hsq = (window._hsq = window._hsq || []);
_hsq.push([
  "trackCustomBehavioralEvent",
  {
    name: "pe12345678_custom_event_name",
    properties: {
      property1: "value1",
    },
  },
]);
```
