GET /communication-preferences/v4/statuses/{email}?channel=EMAIL returns OBJECT_NOT_FOUND for a contact that has no subscription record yet (treat it as never set); after a change it returns one row per type with SUBSCRIBED, UNSUBSCRIBED or NOT_SPECIFIED.
Measured
More facts from this area
- "Manage communication subscriptions" is workflow action
0-43347357(v8). Its fields are plain strings:targetContact,channel(EMAIL),optState(OPT_OUTorOPT_IN),subscriptionId,legalBasisandlegalBasisExplanation.Measured - A per-type status change is
POST /communication-preferences/v4/statuses/{email}with{channel: "EMAIL", subscriptionId, statusState: "UNSUBSCRIBED" | "SUBSCRIBED", legalBasis, legalBasisExplanation}.Measured - Each subscription type has a contact property
hs_email_optout_<id>(the type'sid): a HubSpot-defined, read-only single checkbox labelled "Opted out of email: <name>". The globalhs_email_optoutsits beside them, and workflow filters can use both.Measured - Subscription types can't be created or deleted through the API: a
POST /communication-preferences/v4/definitionsanswers 405. They are created one at a time in Settings > Marketing > Email > Subscription Types; reading them works.Documented and measured - In the "Manage communication subscriptions" workflow action the subscription type is a fixed choice, not a token, so a workflow that must act on different types per record needs one branch and one action per type.Measured
Spriggit uses these facts when it plans changes. See something out of date? Email [email protected]