> ## 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: 92f22c94-42d8-49a4-9e35-9644ef46bc65
---

# Campaigns API

> Endpoints for managing your HubSpot campaigns

export const PostmanCard = ({title, collectionId}) => {
  return <div className="card-condensed-cta">
      <Card title={title ? title : "Postman collection"} href={`https://app.getpostman.com/run-collection/${collectionId}`} horizontal={true} cta="Run in Postman" icon={<svg xmlns="http://www.w3.org/2000/svg" width={25} height={25} preserveAspectRatio="xMidYMid" viewBox="0 0 256 256">
              <path fill="#FF6C37" d="M254.953 144.253c8.959-70.131-40.569-134.248-110.572-143.206C74.378-7.912 10.005 41.616 1.047 111.619c-8.959 70.003 40.569 134.248 110.572 143.334 70.131 8.959 134.248-40.569 143.334-110.7Z" />
              <path fill="#FFF" d="m174.2 82.184-54.007 54.007-15.229-15.23c53.11-53.11 58.358-48.503 69.236-38.777Z" />
              <path fill="#FF6C37" d="M120.193 137.47c-.384 0-.64-.128-.895-.384l-15.358-15.229a1.237 1.237 0 0 1 0-1.792c54.007-54.006 59.638-48.887 71.028-38.649.255.256.383.512.383.896s-.128.64-.383.896l-54.007 53.878c-.128.256-.512.384-.768.384Zm-13.437-16.509 13.437 13.438 52.087-52.087c-9.47-8.446-15.87-11.006-65.524 38.65Z" />
              <path fill="#FFF" d="m135.679 151.676-14.718-14.718 54.007-54.006c14.46 14.59-7.167 38.265-39.29 68.724Z" />
              <path fill="#FF6C37" d="M135.679 152.956c-.384 0-.64-.128-.896-.384l-14.718-14.718c-.256-.256-.256-.512-.256-.896s.128-.64.384-.895L174.2 82.056a1.237 1.237 0 0 1 1.791 0 15.58 15.58 0 0 1 4.991 11.902c-.256 14.206-16.38 32.25-44.28 58.614-.383.256-.767.384-1.023.384Zm-12.926-15.998c8.19 8.319 11.646 11.646 12.926 12.926 21.5-20.476 42.36-41.464 42.488-55.926.128-3.327-1.152-6.655-3.327-9.214l-52.087 52.214Z" />
              <path fill="#FFF" d="m105.22 121.345 10.878 10.878c.256.256.256.512 0 .768-.128.128-.128.128-.256.128l-22.524 4.863c-1.152.128-2.175-.64-2.431-1.791-.128-.64.128-1.28.512-1.664l13.053-13.054c.256-.256.64-.384.768-.128Z" />
              <path fill="#FF6C37" d="M92.934 139.262c-1.92 0-3.327-1.536-3.327-3.455 0-.896.384-1.792 1.024-2.432l13.053-13.054c.768-.64 1.792-.64 2.56 0l10.878 10.878c.768.64.768 1.792 0 2.56-.256.256-.512.384-.896.512l-22.524 4.863c-.256 0-.512.128-.768.128Zm11.902-16.51-12.542 12.543c-.256.256-.383.64-.128 1.024.128.383.512.511.896.383l21.116-4.607-9.342-9.342Z" />
              <path fill="#FFF" d="M202.739 52.238c-8.191-7.935-21.373-7.679-29.307.64-7.935 8.318-7.679 21.372.64 29.306A20.678 20.678 0 0 0 199.155 85l-14.59-14.59 18.174-18.172Z" />
              <path fill="#FF6C37" d="M188.405 89.223c-12.158 0-22.012-9.854-22.012-22.012 0-12.158 9.854-22.012 22.012-22.012 5.631 0 11.134 2.176 15.23 6.143.255.256.383.512.383.896s-.128.64-.384.895L186.357 70.41l13.566 13.566c.512.512.512 1.28 0 1.792l-.256.256c-3.327 2.047-7.295 3.199-11.262 3.199Zm0-41.337c-10.75 0-19.452 8.703-19.324 19.453 0 10.75 8.702 19.452 19.452 19.324 2.944 0 5.887-.64 8.575-2.047l-13.438-13.31c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l17.149-17.15c-3.456-2.943-7.807-4.479-12.414-4.479Z" />
              <path fill="#FFF" d="m203.122 52.622-.255-.256-18.301 18.044 14.461 14.462c1.408-.896 2.816-1.92 3.967-3.072a20.51 20.51 0 0 0 .128-29.178Z" />
              <path fill="#FF6C37" d="M199.155 86.28c-.384 0-.64-.128-.896-.384l-14.589-14.59c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l18.173-18.173a1.237 1.237 0 0 1 1.791 0l.384.256c8.575 8.574 8.575 22.396.128 31.098-1.28 1.28-2.687 2.432-4.223 3.328-.384.128-.64.256-.768.256Zm-12.798-15.87 12.926 12.926c1.024-.64 2.048-1.536 2.816-2.304 7.294-7.294 7.678-19.196.64-26.875L186.357 70.41Z" />
              <path fill="#FFF" d="M176.375 84.488a7.879 7.879 0 0 0-11.134 0l-48.247 48.247 8.063 8.063 51.062-44.792c3.328-2.816 3.584-7.807.768-11.134-.256-.128-.384-.256-.512-.384Z" />
              <path fill="#FF6C37" d="M124.929 142.077c-.384 0-.64-.128-.896-.383l-8.063-8.063a1.237 1.237 0 0 1 0-1.792l48.247-48.247a9.115 9.115 0 0 1 12.926 0 9.115 9.115 0 0 1 0 12.926l-.384.384-51.063 44.792c-.128.255-.384.383-.767.383Zm-6.143-9.342 6.27 6.271 50.167-44.024c2.816-2.304 3.072-6.527.768-9.342-2.303-2.816-6.526-3.072-9.342-.768-.128.128-.256.256-.512.384l-47.351 47.48Z" />
              <path fill="#FFF" d="M80.009 187.637c-.512.256-.768.768-.64 1.28l2.175 9.214c.512 1.28-.256 2.816-1.663 3.2-1.024.384-2.176 0-2.816-.768l-14.077-13.95 45.943-45.943 15.87.256 10.75 10.75c-2.56 2.175-18.045 17.149-55.542 35.961Z" />
              <path fill="#FF6C37" d="M78.985 202.61c-1.024 0-2.048-.383-2.688-1.151l-13.95-13.95c-.255-.256-.383-.512-.383-.896 0-.383.128-.64.384-.895l45.944-45.944c.256-.256.64-.384.895-.384l15.87.256c.383 0 .64.128.895.384l10.75 10.75c.256.256.384.64.384 1.024s-.128.64-.512.896l-.895.767c-13.566 11.902-31.995 23.804-54.902 35.194l2.175 9.086c.384 1.664-.384 3.456-1.92 4.352-.767.384-1.407.512-2.047.512Zm-14.078-15.997 13.182 13.054c.384.64 1.152.896 1.792.512.64-.384.896-1.152.512-1.792l-2.176-9.214c-.256-1.152.256-2.176 1.28-2.688 22.652-11.39 40.952-23.163 54.39-34.81l-9.47-9.47-14.718-.256-44.792 44.664Z" />
              <path fill="#FFF" d="m52.11 197.62 11.006-11.007 16.38 16.381-26.107-1.791c-1.151-.128-1.92-1.152-1.791-2.304 0-.512.128-1.024.512-1.28Z" />
              <path fill="#FF6C37" d="m79.497 204.146-26.236-1.791c-1.92-.128-3.199-1.792-3.071-3.712.128-.768.384-1.535 1.024-2.047L62.22 185.59a1.237 1.237 0 0 1 1.792 0l16.38 16.38c.385.385.512.897.257 1.408-.256.512-.64.768-1.152.768Zm-16.381-15.74-10.11 10.11c-.384.255-.384.895 0 1.151.127.128.255.256.511.256l22.652 1.536-13.053-13.054ZM104.452 146.557c-.768 0-1.28-.64-1.28-1.28 0-.384.128-.64.384-.896l12.414-12.414a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-20.477 4.352h-.256Zm12.414-11.902-8.446 8.446 13.821-2.943-5.375-5.503Z" />
              <path fill="#FFF" d="m124.8 140.926-14.077 3.071c-1.024.256-2.048-.384-2.303-1.408-.128-.64 0-1.28.511-1.791l7.807-7.807 8.063 7.935Z" />
              <path fill="#FF6C37" d="M110.467 145.277a3.168 3.168 0 0 1-3.2-3.2c0-.895.385-1.663.897-2.303l7.806-7.807a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-14.078 3.072h-.64Zm6.399-10.622-6.91 6.91c-.257.257-.257.512-.129.768s.384.384.768.384l11.774-2.56-5.503-5.502ZM203.25 64.907c-.256-.767-1.151-1.151-1.92-.895-.767.255-1.151 1.151-.895 1.92 0 .127.128.255.128.383.768 1.536.512 3.455-.512 4.863-.512.64-.384 1.536.128 2.048.64.512 1.536.384 2.048-.256 1.92-2.432 2.303-5.503 1.023-8.063Z" />
            </svg>} />
    </div>;
};

export const ScopesList = ({scopes = [], description = "This API requires one of the following scopes:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

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>;
};

<PostmanCard collectionId="26126890-c8e3f08f-8fa9-4a9f-9929-bfa7964ceb21" />

<AccordionGroup>
  <Accordion title="Supported products" defaultOpen="true" icon="cubes">
    <SupportedProducts marketing={true} marketingLevel="professional" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'FORM',
  'OBJECT_LIST',
  'EXTERNAL_WEB_URL',
  'SEQUENCE',
  'MEETING_EVENT',
  'PLAYBOOK',
  'FEEDBACK_SURVEY',
  'PODCAST_EPISODE',
  'SALES_DOCUMENT',
  'EMAIL',
  'CASE_STUDY',
  'KNOWLEDGE_ARTICLE',
  'CALL',
  'WEB_INTERACTIVE'
]}
    />
  </Accordion>
</AccordionGroup>

In HubSpot, the [campaigns tool](https://knowledge.hubspot.com/campaigns/understand-campaigns) can be used to create, manage, and report on a single marketing campaign using multiple assets in one place. For example, you can create a campaign using marketing emails and social posts and raise awareness of a new product or an event.

Using the campaigns API, you can create, read, update, and delete marketing campaign data. For example, you can use these endpoints to create and manage HubSpot campaigns from your external applications. You can also transfer campaign data to external data warehouses for analytics.

## Scope requirements

The following scopes are required to use the campaigns API, based on the endpoints you're using:

* `marketing.campaigns.read`: provides access to view details about marketing campaigns and their associated assets. This scope is required for all endpoints.
* `marketing.campaigns.write`: grants access to create, delete, and modify marketing campaigns. This is required for all modification endpoints.
* `marketing.campaigns.revenue.read`: provides access to view revenue details and deal amounts attributed to a marketing campaign.

<Alert type="warning" titleText="Please note:">
  If your integration was set up before 9 July, 2025, and was configured to use only the `marketing.campaigns.read` scope group to execute campaign modifications, those API calls will fail, unless the integration also requests the `marketing.campaigns.write` scope group for the applicable API endpoints.
</Alert>

## Create a campaign

To create a campaign, make a `POST` request to `/marketing/v3/campaigns`.

Create a campaign with the given properties and return the campaign object, including the `campaignGuid` and created properties. For example, to create a new campaign, you would make a `POST` request with the following request body.

```json theme={null}
{
  "properties": {
    "hs_name": "Inbound",
    "hs_start_date": "2024-10-30",
    "hs_notes": "Campaign notes"
  }
}
```

The response will include a `campaignGuid`, a unique identifier for the campaign. This will be formatted as a UUID. In the following example, the `campaignGuid` is `edb9b6c3-d2e2-4ca8-8396-832262aed0d4`.

```json theme={null}
{
  "id": "edb9b6c3-d2e2-4ca8-8396-832262aed0d4",
  "properties": {
    "hs_name": "Inbound",
    "hs_start_date": "2024-10-30",
    "hs_notes": "Campaign notes"
  },
  "createdAt": "2024-10-30T03:30:17.883Z",
  "updatedAt": "2024-12-07T16:50:06.678Z"
}
```

## Retrieve a campaign

To retrieve the details of an existing campaign, make a `GET` request to `/marketing/v3/campaigns/{campaignGuid}`.

This endpoint will return the campaign information. Depending on the query parameters used, this can also be used to return information about the assets and the corresponding assets' metrics. When using this endpoint, you can use the following query parameters.

* `properties`:a comma-separated list of the properties to be returned in the response. For example, `hs_name`, `hs_campaign_status`, `hs_notes`.
  * If any of the specified properties has an empty value on the requested object, it will be ignored and not returned in response.
  * If the parameter is empty, the response will include an empty properties map.
  * If you have the *Brands add-on* and you've associated your campaign with a brand, the response will return a `businessUnits` value, which will indicate the associated brand.
* `startDate`:the start date to fetch asset metrics, formatted as YYYY-MM-DD. This is used to fetch the metrics associated with the assets for a specified period. If no date is specified, no asset metrics will be retrieved.
* `endDate`:the end date to fetch asset metrics, formatted as YYYY-MM-DD. This is used to fetch the metrics associated with the assets for a specified period. If no date is specified, no asset metrics will be retrieved.

For example, if you made a `GET` request with `/marketing/v3/campaigns/edb9b6c3-d2e2-4ca8-8396-832262aed0d4?properties=hs_name,hs_start_date`, this would result in the following response body:

```json theme={null}
{
  "id": "edb9b6c3-d2e2-4ca8-8396-832262aed0d4",
  "properties": {
    "hs_name": "Inbound",
    "hs_start_date": "2024-10-30"
  },
  "assets": {
    "EMAIL": {
      "paging": {
        "next": {
          "link": "?after=NTI1Cg%3D%3D",
          "after": "NTI1Cg%3D%3D"
        },
        "results": [
          {
            "id": "832",
            "name": "My email"
          }
        ]
      }
    }
  },
  "createdAt": "2024-10-30T03:30:17.883Z",
  "updatedAt": "2024-12-07T16:50:06.678Z"
}
```

## List assets

To retrieve the assets associated with a campaign make a `GET` request to `/marketing/v3/campaigns/{campaignId}/assets/{assetType}`.

This endpoint lists all assets of the campaign by asset type. The `assetType` parameter is required, and each request can only fetch assets of a single type. The following are required:

* `campaignGuid`:the UUID of the campaign.
* `assetType`:the type of asset to be fetched.

You can use the following query parameters with the endpoint:

* `after`:a cursor for pagination. If provided, the results will start after the given cursor. For example, you can use the value NTI1Cg%3D%3D.
* `limit`:define the maximum number of results to return. The allowed values range from 1 to 100. If no limit is specified, it will be set to 10 assets by default.
* `startDate`:the start date to fetch asset metrics, formatted as YYYY-MM-DD. This is used to fetch the metrics associated with the assets for a specified period. If no date is specified, no asset metrics will be retrieved.
* `endDate`:the end date to fetch asset metrics, formatted as YYYY-MM-DD. This is used to fetch the metrics associated with the assets for a specified period. If no date is specified, no asset metrics will be retrieved.

The following is a list of available asset types and metrics related to the assets that are returned in response:

| Asset                   | Asset type                 | Metrics                                                                                 |
| ----------------------- | -------------------------- | --------------------------------------------------------------------------------------- |
| Ad campaigns            | `AD_CAMPAIGN`              | No metrics available.                                                                   |
| Blog posts              | `BLOG_POST`                | `CONTACTS_FIRST_TOUCH`, `CONTACTS_LAST_TOUCH`, `SUBMISSIONS`, and `VIEWS`               |
| Calls                   | `CALL`                     | No metrics available.                                                                   |
| Case Studies            | `CASE_STUDY`               | `CTA_CLICKS`                                                                            |
| CTAs                    | `WEB_INTERACTIVE`          | `CLICKS` and `VIEWS`                                                                    |
| CTAs (Legacy)           | `CTA`                      | `CLICKS`, `SUBMISSIONS`, and `VIEWS`                                                    |
| External website pages  | `EXTERNAL_WEB_URL`         | `VIEWS`                                                                                 |
| Feedback surveys        | `FEEDBACK_SURVEY`          | No metrics available.                                                                   |
| Forms                   | `FORM`                     | `CONVERSION_RATE`, `SUBMISSIONS`, and `VIEWS`                                           |
| Files                   | `FILE_MANAGER_FILE`        | No metrics available.                                                                   |
| Knowledge Base Articles | `KNOWLEDGE_ARTICLE`        | No metrics available.                                                                   |
| Landing pages           | `LANDING_PAGE`             | `CONTACTS_FIRST_TOUCH`, `CONTACTS_LAST_TOUCH`, `CUSTOMERS`, `SUBMISSIONS`, and `VIEWS`  |
| Marketing emails        | `MARKETING_EMAIL`          | `CLICKS`, `OPEN`, and `SENT`                                                            |
| Marketing events        | `MARKETING_EVENT`          | `ATTENDEES`, `CANCELLATIONS`, and `REGISTRATIONS`                                       |
| Meetings                | `MEETING_EVENT`            | No metrics available.                                                                   |
| Playbooks               | `PLAYBOOK`                 | No metrics available.                                                                   |
| Podcast episodes        | `PODCAST_EPISODE`          | No metrics available.                                                                   |
| Sales documents         | `SALES_DOCUMENT`           | No metrics available.                                                                   |
| Sales emails            | `EMAIL`                    | No metrics available.                                                                   |
| Sequences               | `SEQUENCE`                 | No metrics available.                                                                   |
| SMS                     | `MARKETING_SMS`            | `SENT`, `DELIVERED`, and `UNIQUE_CLICKS`                                                |
| Social posts            | `SOCIAL_BROADCAST`         | `FACEBOOK_CLICKS`, `LINKEDIN_CLICKS`, and `TWITTER_CLICKS`                              |
| Static lists            | `OBJECT_LIST`              | `CONTACTS`                                                                              |
| Videos                  | `MEDIA`                    | No metrics available.                                                                   |
| Website pages           | `SITE_PAGE`                | `CONTACTS_FIRST_TOUCH`, `CONTACTS_LAST_TOUCH`, `CUSTOMERS`, `SUBMISSIONS`, and `VIEWS`. |
| Workflows               | `AUTOMATION_PLATFORM_FLOW` | `CURRENTLY_ENROLLED` and `STARTED`                                                      |

## Manage asset associations

To associate an asset with a campaign make a `PUT` request to `/marketing/v3/campaigns/{campaignGuid}/assets/{assetType}/{assetId}`.

To remove an asset from a campaign make a `DELETE` request to `/marketing/v3/campaigns/{campaignGuid}/assets/{assetType}/{assetId}`.

You can use the endpoints above to create and remove associations for the following asset types:

* Ads
* Blog Posts
* Calls
* Case Studies
* CTAs
* CTAs (Legacy)
* External Website Pages
* Feedback Surveys
* Forms
* Files
* Knowledge Base Articles
* Landing Pages
* Marketing Email
* Marketing Events
* Meetings
* Playbooks
* Podcast Episodes
* Sales Documents
* Sales Emails
* Sequences
* SMS
* Social Posts
* Static Lists
* Videos
* Website Pages
* Workflows

For other asset types, learn how to [associate assets and content with a campaign](https://knowledge.hubspot.com/campaigns/associate-assets-and-content-with-a-campaign) in HubSpot.

## Update campaign

To perform a partial update of a campaign identified by the specified campaignGuid, make a `PATCH` request to `/marketing/v3/campaigns/{campaignGuid}`.

You can use [campaigns properties](#campaign-properties) to update your campaign. The provided property values will be overwritten. If your request includes read-only or non-existent properties, you will encounter a `400 error`. Learn more about which properties can be used.

Example request body:

```json theme={null}
{
  "properties": {
    "hs_name": "Inbound 2024"
  }
}
```

Example response:

```json theme={null}
{
  "id": "edb9b6c3-d2e2-4ca8-8396-832262aed0d4",
  "properties": {
    "hs_name": "Inbound 2024"
  },
  "createdAt": "2024-10-30T03:30:17.883Z",
  "updatedAt": "2024-12-07T16:50:06.678Z"
}
```

## Delete a campaign

To delete a campaign, make a `DELETE` request to `/marketing/v3/campaigns`.

This call will always return a `204 No Content` response, regardless of whether the `campaignGuid` provided corresponds to an existing campaign or not.

## Search for campaigns

To search for campaigns based on query parameters, make a `GET` request to `/marketing/v3/campaigns/{campaignGuid}`.

When using this endpoint, you can use the following query parameters.

* `name`: return all campaigns whose names contain the specified substring. This allows partial matching of campaign names, returning all campaigns that include the given substring in their name. If this parameter is not provided, the search will return all campaigns.
* `sort`: the field by which to sort the results. Allowed values are `hs_name`, `createdAt`, `updatedAt`. An optional hyphen (`-`) before the property name will denote descending order. For example, you can use `-CREATED_AT` to sort your campaigns from newest to oldest. If this is not specified, the list of campaigns will be sorted in alphabetical order by campaign name.
* `after`: a cursor for pagination. If provided, the results will start after the given cursor. For example, you can use the value `NTI1Cg%3D%3D`.
* `limit`: define the maximum number of results to return. The allowed values range from 1 to 100. If no limit is specified, it will be set to 50 campaigns by default.
* `properties:` a comma-separated list of the properties to be returned in the response. For example, `hs_name`, `hs_campaign_status`, `hs_notes`. If any of the specified properties has an empty value on the requested object, it will be ignored and not returned in response. If the parameter is empty, the response will include an empty `properties` map.

```json theme={null}
{
  "total": 14,
  "results": [
    {
      "id": "972e2774-7409-43c2-a8b9-581732dff5a7",
      "properties": {
        "hs_name": "Inbound 2023"
      },
      "createdAt": "2023-09-07T10:18:06.320Z",
      "updatedAt": "2023-09-07T10:18:06.320Z"
    },
    {
      "id": "703bc2f0-f000-4840-b6ae-b2d74bc09fa0",
      "properties": {
        "hs_name": "Inbound 2024"
      },
      "createdAt": "2024-06-25T10:57:26.232Z",
      "updatedAt": "2024-06-25T10:57:26.232Z"
    }
  ],
  "paging": {
    "next": {
      "after": "Mg%3D%3D",
      "link": "https://api.hubspotqa.com/marketing/v3/campaigns? properties=hs_name&limit=2&after=Mg%3D%3D"
    }
  }
}
```

## Campaign properties

<Warning>
  **Please note:**

  On July 9, 2025, the `hs_goal` property was sunsetted.

  * If your integration is still sending or expecting the `hs_goal` property, it will not break the request. Instead, the `hs_goal` property will be silently ignored.
  * If your integration relies on the returned value from the `hs_goal` property, this change could cause breakages (e.g., parsing errors or null value handling issues).

  To avoid these issues, check that your code does not depend on `hs_goal` values being present in API responses, and remove any logic or mapping tied to this field if no longer required.
</Warning>

When using the `properties` query parameter for your campaign endpoints, you can use the properties below. Note that the first set of properties can be both retrieved and updated, while the second set are read-only.

| Property             | Type              | Description                                                                                              |
| -------------------- | ----------------- | -------------------------------------------------------------------------------------------------------- |
| `hs_name`            | String            | The campaign's name. This should be unique, with a max size of 256 characters.                           |
| `hs_start_date`      | Date (YYYY-MM-DD) | The campaign's start date.                                                                               |
| `hs_end_date`        | Date (YYYY-MM-DD) | The campaign's end date.                                                                                 |
| `hs_notes`           | String            | Any notes about the campaign.                                                                            |
| `hs_audience`        | String            | The campaign's audience.                                                                                 |
| `hs_currency_code`   | ISO currency code | The currency code used for the campaign.                                                                 |
| `hs_campaign_status` | Enumeration       | The status of the campaign. This includes `planned`, `in_progress`, `active`, `paused`, and `completed`. |
| `hs_utm`             | String            | The campaign's UTM values. This must not exceed 256 characters.                                          |

**Read-only properties**

| Property                     | Type           | Description                                                                                                                                         |
| ---------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `hs_owner`                   | User ID        | The user id of the user that owns the campaign                                                                                                      |
| `hs_color_hex`               | Hex code       | The color of the campaign in hex color code.                                                                                                        |
| `hs_created_by_user_id`      | User ID        | The user id of the user that originally created the campaign                                                                                        |
| `hs_object_id`               | String         | The internal CRM object ID.                                                                                                                         |
| `hs_budget_items_sum_amount` | Monetary value | The sum of all budget items. Learn more about managing your [campaign budget](https://knowledge.hubspot.com/campaigns/manage-your-campaign-budget). |
| `hs_spend_items_sum_amount`  | Monetary value | The sum of all spend items. Learn more about managing your [campaign budget](https://knowledge.hubspot.com/campaigns/manage-your-campaign-budget).  |
