ORTB
…
Chapter navigation

Canadian TCF (GPP §5)

consent
On this page

Role & classification

The Canadian edition of the Transparency & Consent Framework (TCF) published by the Interactive Advertising Bureau (IAB) Canada, carried as Global Privacy Platform (GPP) §5 with apiPrefix tcfcav1. This site's decoder only reads the leading Version field for this section; the field-level layout is not integrated.

GPP section
§5 (tcfcav1)
Carriage
IAB Canada TCF · PIPEDA

String & field layout

The Canadian edition of the Transparency & Consent Framework (TCF) maintained by the Interactive Advertising Bureau (IAB) Canada, carried as Global Privacy Platform (GPP) §5 with apiPrefix tcfcav1. It targets Canada's Personal Information Protection and Electronic Documents Act (PIPEDA); the core delta from the EU edition is the consent model: EU uses 'consent / legitimate interest', Canada uses 'Express Consent / Implied Consent'. A Consent Management Platform (CMP) must be registered with IAB Canada before it may create TC Strings.

It targets Canada's Personal Information Protection and Electronic Documents Act (PIPEDA): unlike the EU's General Data Protection Regulation (GDPR), which requires explicit consent, PIPEDA allows implied consent in some circumstances — a difference that directly shapes the semantics of consent signals and the UI requirements.

FieldBitsDescription
VersionInt(6)Version number; the value is 1 (the EU edition uses 2).
CreatedDatetimeEpoch time when the TC String was last updated (UTC, rounded to a full day).
LastUpdatedDatetimeEpoch time when the TC String was last updated (UTC, rounded to a full day).
CmpIdInt(12)The ID of the CMP that last updated this TC String.
CmpVersionInt(12)The version of that CMP.
ConsentScreenInt(6)The CMP UI screen number where the user gave consent.
ConsentLanguageString(2)Two-letter ISO 639-1 language code of the CMP UI (en or fr in the Canadian context).
VendorListVersionInt(12)The version of the Global Vendor List (GVL) used to create this TC String.
TcfPolicyVersionInt(6)The TCF policy version of the GVL; a new version invalidates existing strings and requires CMPs to re-establish transparency and consent.
UseNonStandardStacksBoolean1 = the CMP used non-IAB-standard Stack descriptions; 0 = standard Stacks were used.
SpecialFeatureExpressConsentBitfield(12)One bit per Special Feature: 1 = express consent given; 0 = not given.
PurposesExpressConsentBitfield(24)One bit per Purpose: 1 = express consent; 0 = no express consent. Note: Purpose 1 bit is not used in TCF Canada.
PurposesImpliedConsentBitfield(24)One bit per Purpose: 1 = implied consent established and the user has not objected; 0 = implied consent not established or the user has objected. Note: Purpose 1 bit is not used in TCF Canada.
VendorExpressConsentOptimizedRangeList of Vendor IDs for which express consent has been given.
VendorImpliedConsentOptimizedRangeList of Vendor IDs for which implied consent is established and the user has not objected.
PubRestrictionsN-ArrayOfRanges(6,2)Publisher Restrictions: each entry = PurposeId + RestrictionType (0 Purpose Flatly Not Allowed / 1 Require Express Consent / 2 Require Implied Consent / 3 UNDEFINED) + vendor range.

Carriage & access

Carried as GPP §5 (apiPrefix tcfcav1); it appears in __gpp's supportedAPIs as "5:tcfcav1". Client-side API key names follow the pattern IABGPP_TCFCAV1_CmpId / IABGPP_TCFCAV1_VendorExpressConsents / IABGPP_5_TCString etc.

Optional sub-sections

Optional sub-section (SubsectionType Int(3)=1): the Disclosed Vendors list, OptimizedRange-encoded, appended to the Core sub-section with a . delimiter.

Optional sub-section (SubsectionType Int(3)=3): the publisher's own-purpose transparency and consent, containing PubPurposesExpressConsent Bitfield(24) + PubPurposesImpliedConsent Bitfield(24) + NumCustomPurposes Int(6) + custom-purpose bitfields.

Version deltas

Key deltas from TCF EU (from the official Summary of differences): (1) 'consent' → 'express consent'; (2) 'legitimate interest' → 'implied consent'; (3) 'special feature opt ins' → 'special feature express consent'; (4) 'Right to Object' → 'Objection'. Additionally: Version=1 (EU=2); Purpose 1 bit is not used (in EU, Purpose 1 is device-storage consent); ConsentLanguage is English/French bilingual (ISO 639-1 en/fr).

Invalid forms

  • Parsing a Canadian TC String as if it were the EU edition (field-level layout differs: Version=1 vs 2, Express/Implied dual-channel vs Consent/Legitimate Interest)
  • Assuming PIPEDA and GDPR share the same consent semantics (implied vs express consent)
  • Using the Purpose 1 bit (not used in TCF Canada)
  • Interpreting RestrictionType with EU semantics (the Canadian 1 = Require Express Consent / 2 = Require Implied Consent, not the EU's Require Consent / Require Legitimate Interest)
This chapter's body is migrated from the legacy /protocol/gpp-tcf single page; the material matches the official specification.