Skip to content

HubSpot: Batch unsubscribe contacts from all subscriptions

HubSpot communicationPreferences.statusUnsubscribeContactsBatch: arguments, response, policy and SDK examples.

← Communication preferences operations · Get started

Operation hubspot.communication_preferences_status_unsubscribe_contacts_batch

Provider route: POST /communication-preferences/2026-09/statuses/batch/unsubscribe-all. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/hubspot with npm, or alter-sdk-hubspot with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { HubSpotIntegration } from "@alter-ai/hubspot";
async function execute(input: Parameters<HubSpotIntegration["communicationPreferences"]["statusUnsubscribeContactsBatch"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new HubSpotIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.communicationPreferences.statusUnsubscribeContactsBatch(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_hubspot import HubSpotIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = HubSpotIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.communication_preferences.status_unsubscribe_contacts_batch(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
queryobjectRequired within parentAdditional keys: not allowed
query.channelstringRequired within parentOne of: EMAIL
query.businessUnitIdintegerOptionalFormat: int64
query.verbosebooleanOptionalDefault: false
bodyModelRequired within parentExpand Batch retrieve subscription statuses — request body — body

Referenced models: Batch retrieve subscription statuses — request body — body

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Batch unsubscribe contacts from all subscriptions — response body

Referenced models: Batch unsubscribe contacts from all subscriptions — response body

Batch retrieve subscription statuses — request body — body
FieldTypePresenceDescription and constraints
$objectRoot
inputsarrayRequired within parentA list of strings representing the inputs for batch operations.
inputs[]stringEach item
Batch unsubscribe contacts from all subscriptions — response body
FieldTypePresenceDescription and constraints
$objectRoot
completedAtstringRequired within parentThe date and time when the bulk opt-out operation was completed.
Format: date-time
errorsarrayOptionalAn array of error objects detailing any issues encountered during the bulk opt-out operation.
errors[]ModelEach itemExpand Batch update subscription status — response body — errors item
linksobjectOptionalA collection of URLs linking to related resources or documentation.
Additional keys: see wildcard field
links.*stringAdditional keys
numErrorsJSONOptional
numErrors (anyOf 1)integerAlternativeThe total number of errors encountered during the bulk opt-out operation.
Format: int32
numErrors (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
requestedAtstringOptionalThe date and time when the bulk opt-out request was made.
Format: date-time
resultsarrayRequired within parentAn array containing the results of the bulk opt-out from all communications operation.
results[]ModelEach itemExpand Batch unsubscribe contacts from all subscriptions — response body — results item
startedAtstringRequired within parentThe date and time when the bulk opt-out operation began.
Format: date-time
statusstringRequired within parentThe current status of the bulk opt-out operation, which can be PENDING, PROCESSING, CANCELED, or COMPLETE.
Known values: CANCELED, COMPLETE, PENDING, PROCESSING

Referenced models: Batch update subscription status — response body — errors item, Batch unsubscribe contacts from all subscriptions — response body — results item

Batch update subscription status — response body — errors item
FieldTypePresenceDescription and constraints
$objectRootYe olde error
categorystringRequired within parentA string that categorizes the type of error.
contextobjectRequired within parentAn object containing additional context about the error condition, with keys as context names and values as arrays of strings.
Additional keys: see wildcard field
context.*arrayAdditional keys
context.*[]stringEach item
errorsarrayRequired within parentAn array of ErrorDetail objects providing further information about the error.
errors[]ModelEach itemExpand Batch insert events — response body — errors item errors item
idstringOptionalA string representing the unique identifier of the error.
linksobjectRequired within parentAn object mapping link names to associated URIs that contain documentation about the error or recommended remediation steps.
Additional keys: see wildcard field
links.*stringAdditional keys
messagestringRequired within parentA string containing a human-readable message describing the error.
statusstringRequired within parentA string indicating the status of the error.
subCategoryobjectOptionalAn object providing more specific categorization of the error.

Referenced models: Batch insert events — response body — errors item errors item

Batch unsubscribe contacts from all subscriptions — response body — results item
FieldTypePresenceDescription and constraints
$objectRoot
statusesarrayOptionalAn array of subscription status objects for the contact.
statuses[]ModelEach itemExpand Batch update subscription status — response body — results item
subscriberIdStringstringRequired within parentThe email address of the contact.

Referenced models: Batch update subscription status — response body — results item

Batch insert events — response body — errors item errors item
FieldTypePresenceDescription and constraints
$objectRootRepresents detailed information about an error that occurred in the API. This component is used to provide additional context and specifics about errors, typically as part of an error response.
codestringOptionalThe status code associated with the error detail
contextobjectOptionalContext about the error condition
Additional keys: see wildcard field
context.*arrayAdditional keys
context.*[]stringEach item
instringOptionalThe name of the field or parameter in which the error was found.
messagestringRequired within parentA human readable message describing the error along with remediation steps where appropriate
subCategorystringOptionalA specific category that contains more specific detail about the error
Batch update subscription status — response body — results item
FieldTypePresenceDescription and constraints
$objectRoot
businessUnitIdJSONOptional
businessUnitId (anyOf 1)integerAlternativeThe ID of the business unit associated with the subscription.
Format: int64
businessUnitId (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
channelstringRequired within parentThe type of communication channel, with 'EMAIL' as the only supported option.
Known values: EMAIL
legalBasisstringOptionalThe legal basis for communication, with options including 'LEGITIMATE_INTEREST_PQL', 'LEGITIMATE_INTEREST_CLIENT', 'PERFORMANCE_OF_CONTRACT', 'CONSENT_WITH_NOTICE', 'NON_GDPR', 'PROCESS_AND_STORE', and 'LEGITIMATE_INTEREST_OTHER'.
Known values: CONSENT_WITH_NOTICE, LEGITIMATE_INTEREST_CLIENT, LEGITIMATE_INTEREST_OTHER, LEGITIMATE_INTEREST_PQL, NON_GDPR, PERFORMANCE_OF_CONTRACT, PROCESS_AND_STORE
legalBasisExplanationstringOptionalAn explanation for the legal basis used for communication.
setStatusSuccessReasonstringOptionalThe reason for the successful change in subscription status, such as 'RESUBSCRIBE_OCCURRED' or 'NO_STATUS_CHANGE'.
Known values: NO_STATUS_CHANGE, REQUESTED_CHANGE_OCCURRED, RESUBSCRIBE_OCCURRED, UNSUBSCRIBE_FROM_ALL_OCCURRED
sourcestringRequired within parentThe origin or method through which the subscription status was set.
statusstringRequired within parentThe current subscription status of the contact, which can be 'SUBSCRIBED', 'UNSUBSCRIBED', or 'NOT_SPECIFIED'.
Known values: NOT_SPECIFIED, SUBSCRIBED, UNSUBSCRIBED
subscriberIdStringstringRequired within parentThe contact's email address.
subscriptionIdJSONRequired within parent
subscriptionId (anyOf 1)integerAlternativeThe unique identifier of the subscription.
Format: int64
subscriptionId (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
subscriptionNamestringOptionalThe name of the subscription.
timestampstringRequired within parentThe date and time when the subscription status was last updated.
Format: date-time

SDK function policy ID: hubspot.communication_preferences_status_unsubscribe_contacts_batch. Catalog operation: communication_preferences_status_unsubscribe_contacts_batch. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Required provider scopes: ["communication_preferences.statuses.batch.write"]

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.