Skip to main content
GET
/
marketing
/
campaigns
/
2026-03
/
{campaignGuid}
/
reports
/
metrics
Get Campaign Metrics
curl --request GET \
  --url https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/reports/metrics \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/reports/metrics"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/reports/metrics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/reports/metrics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/reports/metrics"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/reports/metrics")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.hubapi.com/marketing/campaigns/2026-03/{campaignGuid}/reports/metrics")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "influencedContacts": 123,
  "newContactsFirstTouch": 123,
  "newContactsLastTouch": 123,
  "sessions": 123
}
{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}

Supported products

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

campaignGuid
string
required

The unique identifier of the campaign

Query Parameters

endDate
string

The end date for fetching attribution data, in YYYY-MM-DD format. Optional. Example: 2000-01-27

startDate
string

The start date for fetching attribution data, in YYYY-MM-DD format. Optional. Example: 2000-01-20

Response

successful operation

influencedContacts
integer<int32>
required

The number of contacts influenced by the campaign.

newContactsFirstTouch
integer<int32>
required

The number of new contacts attributed to the campaign as the first touchpoint.

newContactsLastTouch
integer<int32>
required

The number of new contacts attributed to the campaign as the last touchpoint.

sessions
integer<int32>
required

The total number of sessions generated by the campaign.

Last modified on March 31, 2026