@c15t/scripts 2.2.0 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/AGENTS.md +74 -48
  2. package/README.md +3 -3
  3. package/dist/e2e-test-utils.js +60 -24
  4. package/dist/engine/compile.js +45 -45
  5. package/dist/engine/runtime.js +119 -119
  6. package/dist/registry.js +186 -176
  7. package/dist/resolve.js +12 -12
  8. package/dist/vendors/_shared/attributes.js +5 -5
  9. package/dist/vendors/_shared/google-consent.js +10 -10
  10. package/dist/vendors/_shared/install-builders.js +9 -9
  11. package/dist/vendors/_shared/script-url.js +12 -12
  12. package/dist/vendors/ads-and-pixels/linkedin-insights.js +16 -16
  13. package/dist/vendors/ads-and-pixels/meta-pixel.js +82 -82
  14. package/dist/vendors/ads-and-pixels/microsoft-uet.js +57 -57
  15. package/dist/vendors/ads-and-pixels/openai-pixel.js +88 -0
  16. package/dist/vendors/ads-and-pixels/reddit-pixel.js +39 -39
  17. package/dist/vendors/ads-and-pixels/snapchat-pixel.js +25 -25
  18. package/dist/vendors/ads-and-pixels/tiktok-pixel.js +31 -31
  19. package/dist/vendors/ads-and-pixels/x-pixel.js +17 -17
  20. package/dist/vendors/analytics/adobe-analytics.js +17 -17
  21. package/dist/vendors/analytics/ahrefs-analytics.js +8 -8
  22. package/dist/vendors/analytics/amplitude.js +39 -39
  23. package/dist/vendors/analytics/clearbit.js +11 -11
  24. package/dist/vendors/analytics/cloudflare-web-analytics.js +13 -13
  25. package/dist/vendors/analytics/databuddy.js +45 -45
  26. package/dist/vendors/analytics/fathom-analytics.js +15 -15
  27. package/dist/vendors/analytics/google-tag.js +23 -23
  28. package/dist/vendors/analytics/heap.js +37 -37
  29. package/dist/vendors/analytics/hightouch.js +30 -30
  30. package/dist/vendors/analytics/hotjar.js +14 -14
  31. package/dist/vendors/analytics/logrocket.js +24 -24
  32. package/dist/vendors/analytics/matomo-analytics.js +51 -51
  33. package/dist/vendors/analytics/microsoft-clarity.js +31 -31
  34. package/dist/vendors/analytics/mixpanel-analytics.js +31 -31
  35. package/dist/vendors/analytics/pirsch.js +27 -27
  36. package/dist/vendors/analytics/plausible-analytics.js +24 -24
  37. package/dist/vendors/analytics/posthog.js +84 -79
  38. package/dist/vendors/analytics/promptwatch.js +8 -8
  39. package/dist/vendors/analytics/rudderstack.js +50 -50
  40. package/dist/vendors/analytics/rybbit-analytics.js +30 -30
  41. package/dist/vendors/analytics/segment.js +16 -16
  42. package/dist/vendors/analytics/umami-analytics.js +16 -16
  43. package/dist/vendors/analytics/vercel-analytics.js +22 -22
  44. package/dist/vendors/functional/crisp.js +49 -51
  45. package/dist/vendors/functional/intercom.js +18 -18
  46. package/dist/vendors/tag-managers/google-tag-manager.js +20 -20
  47. package/dist-types/__tests__/helpers.d.ts +10 -10
  48. package/dist-types/engine/compile.d.ts +2 -2
  49. package/dist-types/engine/runtime.d.ts +3 -3
  50. package/dist-types/registry.d.ts +182 -173
  51. package/dist-types/resolve.d.ts +2 -2
  52. package/dist-types/types.d.ts +2 -2
  53. package/dist-types/vendors/_shared/attributes.d.ts +2 -2
  54. package/dist-types/vendors/_shared/google-consent.d.ts +2 -2
  55. package/dist-types/vendors/_shared/install-builders.d.ts +1 -1
  56. package/dist-types/vendors/_shared/script-url.d.ts +6 -6
  57. package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +14 -14
  58. package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +27 -27
  59. package/dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts +40 -40
  60. package/dist-types/vendors/ads-and-pixels/openai-pixel.d.ts +211 -0
  61. package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +28 -29
  62. package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +23 -23
  63. package/dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts +22 -22
  64. package/dist-types/vendors/ads-and-pixels/x-pixel.d.ts +15 -15
  65. package/dist-types/vendors/analytics/adobe-analytics.d.ts +3 -3
  66. package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +5 -5
  67. package/dist-types/vendors/analytics/amplitude.d.ts +24 -24
  68. package/dist-types/vendors/analytics/clearbit.d.ts +5 -5
  69. package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +6 -6
  70. package/dist-types/vendors/analytics/databuddy.d.ts +34 -31
  71. package/dist-types/vendors/analytics/fathom-analytics.d.ts +8 -8
  72. package/dist-types/vendors/analytics/google-tag.d.ts +17 -17
  73. package/dist-types/vendors/analytics/heap.d.ts +17 -17
  74. package/dist-types/vendors/analytics/hightouch.d.ts +15 -15
  75. package/dist-types/vendors/analytics/hotjar.d.ts +9 -9
  76. package/dist-types/vendors/analytics/logrocket.d.ts +11 -11
  77. package/dist-types/vendors/analytics/matomo-analytics.d.ts +3 -3
  78. package/dist-types/vendors/analytics/microsoft-clarity.d.ts +12 -13
  79. package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +20 -20
  80. package/dist-types/vendors/analytics/pirsch.d.ts +10 -10
  81. package/dist-types/vendors/analytics/plausible-analytics.d.ts +13 -13
  82. package/dist-types/vendors/analytics/posthog.d.ts +35 -32
  83. package/dist-types/vendors/analytics/promptwatch.d.ts +5 -5
  84. package/dist-types/vendors/analytics/rudderstack.d.ts +16 -16
  85. package/dist-types/vendors/analytics/rybbit-analytics.d.ts +15 -15
  86. package/dist-types/vendors/analytics/segment.d.ts +11 -11
  87. package/dist-types/vendors/analytics/umami-analytics.d.ts +9 -9
  88. package/dist-types/vendors/analytics/vercel-analytics.d.ts +13 -13
  89. package/dist-types/vendors/functional/crisp.d.ts +9 -9
  90. package/dist-types/vendors/functional/intercom.d.ts +12 -12
  91. package/dist-types/vendors/tag-managers/google-tag-manager.d.ts +16 -16
  92. package/docs/README.md +74 -48
  93. package/docs/assets/v3/brand-bar.png +0 -0
  94. package/docs/assets/v3/brand-card.png +0 -0
  95. package/docs/assets/v3/choice-wall.png +0 -0
  96. package/docs/assets/v3/mobile-card.png +0 -0
  97. package/docs/assets/v3/preferences.png +0 -0
  98. package/docs/customization/overview.md +45 -0
  99. package/docs/customization/recipes.md +79 -0
  100. package/docs/customization/slots.md +55 -0
  101. package/docs/customization/tokens.md +76 -0
  102. package/docs/customization/translations.md +49 -0
  103. package/docs/frameworks/javascript/script-loader.md +30 -339
  104. package/docs/frameworks/next/script-loader.md +134 -467
  105. package/docs/frameworks/react/script-loader.md +35 -535
  106. package/docs/guides/consent-state.md +60 -0
  107. package/docs/guides/data-fetching.md +163 -0
  108. package/docs/guides/deployment-modes.md +63 -0
  109. package/docs/guides/troubleshooting.md +68 -0
  110. package/docs/guides/verify-consent.md +62 -0
  111. package/docs/integrations/adobe-analytics.md +239 -105
  112. package/docs/integrations/ahrefs-analytics.md +238 -104
  113. package/docs/integrations/amplitude.md +219 -157
  114. package/docs/integrations/building-integrations.md +32 -224
  115. package/docs/integrations/clearbit.md +247 -86
  116. package/docs/integrations/cloudflare-web-analytics.md +250 -84
  117. package/docs/integrations/crisp.md +251 -97
  118. package/docs/integrations/databuddy.md +259 -153
  119. package/docs/integrations/fathom-analytics.md +239 -96
  120. package/docs/integrations/google-maps.md +328 -207
  121. package/docs/integrations/google-tag-manager.md +248 -96
  122. package/docs/integrations/google-tag.md +261 -90
  123. package/docs/integrations/heap.md +222 -149
  124. package/docs/integrations/hightouch.md +225 -131
  125. package/docs/integrations/hotjar.md +239 -90
  126. package/docs/integrations/intercom.md +239 -98
  127. package/docs/integrations/linkedin-insights.md +243 -113
  128. package/docs/integrations/logrocket.md +241 -123
  129. package/docs/integrations/matomo-analytics.md +256 -111
  130. package/docs/integrations/meta-pixel.md +197 -324
  131. package/docs/integrations/microsoft-clarity.md +233 -114
  132. package/docs/integrations/microsoft-uet.md +245 -110
  133. package/docs/integrations/mixpanel-analytics.md +252 -87
  134. package/docs/integrations/openai-pixel.md +441 -0
  135. package/docs/integrations/overview.md +95 -133
  136. package/docs/integrations/pirsch.md +249 -96
  137. package/docs/integrations/plausible-analytics.md +241 -100
  138. package/docs/integrations/posthog.md +353 -214
  139. package/docs/integrations/promptwatch.md +251 -81
  140. package/docs/integrations/reddit-pixel.md +226 -173
  141. package/docs/integrations/rudderstack.md +244 -187
  142. package/docs/integrations/rybbit-analytics.md +244 -91
  143. package/docs/integrations/segment.md +238 -92
  144. package/docs/integrations/snapchat-pixel.md +240 -110
  145. package/docs/integrations/tiktok-pixel.md +249 -81
  146. package/docs/integrations/umami-analytics.md +242 -95
  147. package/docs/integrations/vercel-analytics.md +242 -90
  148. package/docs/integrations/x-pixel.md +238 -104
  149. package/docs/integrations/youtube.md +354 -142
  150. package/docs/upgrade-v3.md +334 -0
  151. package/package.json +85 -78
  152. package/readme.json +2 -2
  153. package/dist/e2e-test-utils.cjs +0 -166
  154. package/dist/engine/compile.cjs +0 -130
  155. package/dist/engine/runtime.cjs +0 -475
  156. package/dist/registry.cjs +0 -423
  157. package/dist/resolve.cjs +0 -71
  158. package/dist/types.cjs +0 -69
  159. package/dist/vendors/_shared/attributes.cjs +0 -55
  160. package/dist/vendors/_shared/google-consent.cjs +0 -69
  161. package/dist/vendors/_shared/install-builders.cjs +0 -59
  162. package/dist/vendors/_shared/script-url.cjs +0 -78
  163. package/dist/vendors/ads-and-pixels/linkedin-insights.cjs +0 -89
  164. package/dist/vendors/ads-and-pixels/meta-pixel.cjs +0 -206
  165. package/dist/vendors/ads-and-pixels/microsoft-uet.cjs +0 -151
  166. package/dist/vendors/ads-and-pixels/reddit-pixel.cjs +0 -151
  167. package/dist/vendors/ads-and-pixels/snapchat-pixel.cjs +0 -131
  168. package/dist/vendors/ads-and-pixels/tiktok-pixel.cjs +0 -130
  169. package/dist/vendors/ads-and-pixels/x-pixel.cjs +0 -92
  170. package/dist/vendors/analytics/adobe-analytics.cjs +0 -90
  171. package/dist/vendors/analytics/ahrefs-analytics.cjs +0 -68
  172. package/dist/vendors/analytics/amplitude.cjs +0 -193
  173. package/dist/vendors/analytics/clearbit.cjs +0 -69
  174. package/dist/vendors/analytics/cloudflare-web-analytics.cjs +0 -73
  175. package/dist/vendors/analytics/databuddy.cjs +0 -144
  176. package/dist/vendors/analytics/fathom-analytics.cjs +0 -76
  177. package/dist/vendors/analytics/google-tag.cjs +0 -107
  178. package/dist/vendors/analytics/heap.cjs +0 -181
  179. package/dist/vendors/analytics/hightouch.cjs +0 -153
  180. package/dist/vendors/analytics/hotjar.cjs +0 -85
  181. package/dist/vendors/analytics/logrocket.cjs +0 -99
  182. package/dist/vendors/analytics/matomo-analytics.cjs +0 -232
  183. package/dist/vendors/analytics/microsoft-clarity.cjs +0 -138
  184. package/dist/vendors/analytics/mixpanel-analytics.cjs +0 -134
  185. package/dist/vendors/analytics/pirsch.cjs +0 -108
  186. package/dist/vendors/analytics/plausible-analytics.cjs +0 -122
  187. package/dist/vendors/analytics/posthog.cjs +0 -236
  188. package/dist/vendors/analytics/promptwatch.cjs +0 -70
  189. package/dist/vendors/analytics/rudderstack.cjs +0 -227
  190. package/dist/vendors/analytics/rybbit-analytics.cjs +0 -104
  191. package/dist/vendors/analytics/segment.cjs +0 -97
  192. package/dist/vendors/analytics/umami-analytics.cjs +0 -80
  193. package/dist/vendors/analytics/vercel-analytics.cjs +0 -94
  194. package/dist/vendors/functional/crisp.cjs +0 -143
  195. package/dist/vendors/functional/intercom.cjs +0 -89
  196. package/dist/vendors/tag-managers/google-tag-manager.cjs +0 -100
  197. package/docs/shared/react/guides/script-loader.md +0 -311
@@ -1,149 +1,111 @@
1
1
  ---
2
- title: Integrations
3
- description: Load analytics, pixels, tag managers, and widgets through c15t so
4
- consent state controls when they run, update, and appear in your consent UI.
2
+ title: Overview
3
+ description: Find all c15t integrations for analytics, tag managers,
4
+ advertising, chat and embedded content.
5
5
  group: integrations
6
6
  ---
7
- Third-party tools are easy to paste into app code, but consent makes them part
8
- of your privacy runtime. Analytics SDKs, ad pixels, tag managers, and chat
9
- widgets can load remote code, store identifiers, send events, and keep running
10
- after the first page view.
11
7
 
12
- > ℹ️ **Info:**
13
- > Put consent-sensitive vendor tools in c15t instead of scattering script tags across your codebase. c15t becomes the place that decides when they can load, when they must stop, and which consent categories your UI needs to show.
8
+ ## Choose an integration
14
9
 
15
- ## Why Manage Tools In c15t
10
+ Use the vendor helper from `@c15t/scripts` with your existing c15t provider or
11
+ script loader. Every helper returns a script configuration; importing one does
12
+ not install the vendor. Start with your [framework quickstart](https://c15t.com/docs/frameworks)
13
+ to connect Inth and render consent UI, then follow the vendor guide.
16
14
 
17
- When you install a vendor directly in your app, your consent logic has to chase
18
- that vendor everywhere it appears: page layouts, route handlers, event helpers,
19
- tag-manager snippets, and cleanup code.
15
+ | Package manager | Command |
16
+ | :-------------- | :-------------------------- |
17
+ | npm | `npm install @c15t/scripts` |
18
+ | pnpm | `pnpm add @c15t/scripts` |
19
+ | yarn | `yarn add @c15t/scripts` |
20
+ | bun | `bun add @c15t/scripts` |
20
21
 
21
- Register the vendor with c15t instead. The integration becomes a declarative
22
- `Script` that the consent runtime can reason about:
22
+ `@c15t/scripts` is a separate add-on. Keep the main `c15t` package for imports
23
+ such as `c15t/react` and `c15t/next`.
23
24
 
24
- * c15t registers the tool with the runtime and evaluates it against the current
25
- consent state;
26
- * c15t automatically adds the tool's consent category to the active categories,
27
- so GDPR-style consent UIs include `measurement`, `marketing`, or
28
- `functionality` when an enabled integration needs them;
29
- * c15t blocks the script until consent is granted, or loads it with denied
30
- defaults when the vendor has its own consent mode;
31
- * c15t handles revocation by unloading the script or calling the vendor's
32
- consent API;
33
- * c15t runs vendor setup in the right order, including queue stubs, global
34
- functions, data attributes, default page-view events, and consent updates.
25
+ Browse integrations by service type below. The tables distinguish helpers that
26
+ wait for permission from helpers
27
+ that load immediately and send consent signals. Read the vendor's revocation
28
+ behavior before choosing either approach.
35
29
 
36
- That gives your app one consent lifecycle instead of many scattered vendor
37
- lifecycles.
30
+ ## Embeds
38
31
 
39
- ## Built-In Helpers
32
+ | Integration | v3 implementation | Loading behavior |
33
+ | ------------------------------- | --------------------------------------------- | --------------------------------------------------------- |
34
+ | [Google Maps](./google-maps.md) | Framework-specific consent-gated map iframe | Iframe mounts only while the chosen permission is allowed |
35
+ | [YouTube](./youtube.md) | Framework-specific consent-gated video iframe | Iframe mounts only while the chosen permission is allowed |
40
36
 
41
- c15t ships prebuilt script helpers in
42
- [`@c15t/scripts`](https://www.npmjs.com/package/@c15t/scripts) for the
43
- third-party tools developers integrate most often. Prefer them over copied
44
- vendor snippets whenever c15t already supports the vendor.
37
+ Both guides include all nine framework examples. React and Svelte use `Frame`;
38
+ Vue conditionally renders the iframe, and Astro and JavaScript use the existing
39
+ kernel to control its DOM lifecycle. Embeds do not require `@c15t/scripts`.
45
40
 
46
- Every helper returns a regular `Script` object, so it works anywhere the c15t
47
- [script loader](/docs/frameworks/javascript/script-loader) accepts scripts. You
48
- usually choose the helper, provide the vendor ID, and pass the result to your
49
- provider's `scripts` option. The vendor page explains anything else that still
50
- matters, such as custom events, region settings, privacy modes, or ecommerce
51
- payloads.
41
+ ## Tag managers
52
42
 
53
- ## Choose An Integration Style
54
-
55
- Most apps mix more than one style. Pick the smallest one that keeps consent behavior obvious.
56
-
57
- |Style|Use when|
58
- |--|--|
59
- |**Built-in helper** from `@c15t/scripts`|The vendor is listed below — start here.|
60
- |**Plain `Script`**|One-off app code with simple load and callback behavior.|
61
- |**Manifest-backed helper**|Reusable vendor integration with structured setup phases, queues, stubs, or a vendor consent API.|
62
- |**Iframe / renderable integration**|Vendor exposes an iframe or React component, not just a script tag.|
63
-
64
- Setup is the same shape in every framework: import the helper, call it with vendor options, and pass the result to the consent runtime through your provider's `scripts` option. See the framework guides for end-to-end snippets — [JavaScript](/docs/frameworks/javascript/script-loader), [React](/docs/frameworks/react/script-loader), [Next.js](/docs/frameworks/next/script-loader).
65
-
66
- ## Renderable Integrations
67
-
68
- Maps and video embeds need a visible component as well as consent-aware loading.
69
- The React and Next.js packages include components that own the placeholder,
70
- vendor loading, and rendered surface. They are imported from the framework
71
- package rather than `@c15t/scripts`.
72
-
73
- * [Google Maps](/docs/integrations/google-maps)
74
- * [YouTube](/docs/integrations/youtube)
43
+ | Integration | Helper | Category | Loading behavior |
44
+ | --------------------------------------------- | ------------------ | ----------- | ------------------------------------ |
45
+ | [Google Tag Manager](./google-tag-manager.md) | `googleTagManager` | `necessary` | Always loads; signals Google consent |
75
46
 
76
47
  ## Analytics
77
48
 
78
- Analytics integrations usually require `measurement` consent. Some vendors can run in a consent-aware or cookieless mode; others should stay fully blocked until measurement consent is granted.
79
-
80
- * [Google Tag (gtag.js)](/docs/integrations/google-tag)
81
- * [Ahrefs Analytics](/docs/integrations/ahrefs-analytics)
82
- * [Adobe Analytics](/docs/integrations/adobe-analytics)
83
- * [Amplitude](/docs/integrations/amplitude)
84
- * [Cloudflare Web Analytics](/docs/integrations/cloudflare-web-analytics)
85
- * [Clearbit](/docs/integrations/clearbit)
86
- * [Microsoft Clarity](/docs/integrations/microsoft-clarity)
87
- * [Databuddy](/docs/integrations/databuddy)
88
- * [Rybbit Analytics](/docs/integrations/rybbit-analytics)
89
- * [Fathom Analytics](/docs/integrations/fathom-analytics)
90
- * [Heap](/docs/integrations/heap)
91
- * [Mixpanel Analytics](/docs/integrations/mixpanel-analytics)
92
- * [Hotjar](/docs/integrations/hotjar)
93
- * [Hightouch](/docs/integrations/hightouch)
94
- * [LogRocket](/docs/integrations/logrocket)
95
- * [Matomo Analytics](/docs/integrations/matomo-analytics)
96
- * [PostHog](/docs/integrations/posthog)
97
- * [Promptwatch](/docs/integrations/promptwatch)
98
- * [Pirsch](/docs/integrations/pirsch)
99
- * [RudderStack](/docs/integrations/rudderstack)
100
- * [Segment](/docs/integrations/segment)
101
- * [Plausible Analytics](/docs/integrations/plausible-analytics)
102
- * [Umami Analytics](/docs/integrations/umami-analytics)
103
- * [Vercel Analytics](/docs/integrations/vercel-analytics)
104
-
105
- ## Functional
106
-
107
- Functional integrations usually require `functionality` consent. They add optional user-facing capabilities, such as chat widgets, that should only run after the user allows them.
108
-
109
- * [Crisp](/docs/integrations/crisp)
110
- * [Intercom](/docs/integrations/intercom)
111
-
112
- ## Ads & Pixels
113
-
114
- Advertising pixels usually require `marketing` consent. Many of them need startup stubs so events can be queued safely before the remote SDK loads — built-in helpers handle this for you.
115
-
116
- * [Meta Pixel](/docs/integrations/meta-pixel)
117
- * [Snapchat Pixel](/docs/integrations/snapchat-pixel)
118
- * [Reddit Pixel](/docs/integrations/reddit-pixel)
119
- * [TikTok Pixel](/docs/integrations/tiktok-pixel)
120
- * [LinkedIn Insight Tag](/docs/integrations/linkedin-insights)
121
- * [Microsoft UET](/docs/integrations/microsoft-uet)
122
- * [X (Twitter) Pixel](/docs/integrations/x-pixel)
123
-
124
- ## Tag Managers
125
-
126
- Tag managers can load other scripts, so they deserve extra care. Prefer vendor consent modes and denied defaults before any tags are allowed to run.
127
-
128
- * [Google Tag Manager](/docs/integrations/google-tag-manager)
129
-
130
- ## Build Your Own
131
-
132
- If c15t does not ship the vendor you need, drop down a level:
133
-
134
- * build a one-off `Script` directly in your app for simple cases,
135
- * build a reusable manifest-backed helper for shared or package-level integrations,
136
- * or combine the script loader with iframe gating for visible media and widget integrations.
137
-
138
- ### Build a Custom Integration
139
-
140
- Learn when to use a raw `Script`, when to use a manifest, and how to debug and test custom integrations.
141
-
142
- [Read the guide →](/docs/integrations/building-integrations)
143
-
144
- ## Where To Next
145
-
146
- * Read the script loader guide for your framework: [JavaScript](/docs/frameworks/javascript/script-loader), [React](/docs/frameworks/react/script-loader), [Next.js](/docs/frameworks/next/script-loader).
147
- * Use the [Google Maps](/docs/integrations/google-maps) and [YouTube](/docs/integrations/youtube) components for built-in renderable integrations.
148
- * See the [iframe blocking](/docs/frameworks/react/iframe-blocking) pattern for other visible embeds such as calendars and social widgets.
149
- * Use [`has()`](/docs/frameworks/javascript/api/checking-consent) to conditionally run app code based on consent state.
49
+ | Integration | Helper | Category | Loading behavior |
50
+ | --------------------------------------------------------- | ------------------------ | -------------------------- | -------------------------------------------------------- |
51
+ | [Google Tag](./google-tag.md) | `gtag` | `measurement or marketing` | Always loads; signals Google consent |
52
+ | [Ahrefs Analytics](./ahrefs-analytics.md) | `ahrefsAnalytics` | `measurement` | Waits for effective permission |
53
+ | [Adobe Analytics](./adobe-analytics.md) | `adobeAnalytics` | `measurement` | Waits for effective permission |
54
+ | [Amplitude](./amplitude.md) | `amplitude` | `measurement` | Waits for effective permission |
55
+ | [Cloudflare Web Analytics](./cloudflare-web-analytics.md) | `cloudflareWebAnalytics` | `measurement` | Waits for effective permission |
56
+ | [Clearbit](./clearbit.md) | `clearbit` | `marketing` | Waits for effective permission |
57
+ | [Microsoft Clarity](./microsoft-clarity.md) | `clarity` | `measurement` | Gated initially; retains SDK and signals storage consent |
58
+ | [Databuddy](./databuddy.md) | `databuddy` | `measurement` | Always loads; switches SDK configuration |
59
+ | [Fathom Analytics](./fathom-analytics.md) | `fathomAnalytics` | `measurement` | Waits for effective permission |
60
+ | [Heap](./heap.md) | `heap` | `measurement` | Waits for effective permission |
61
+ | [Matomo Analytics](./matomo-analytics.md) | `matomoAnalytics` | `measurement` | Gated by default; optional consent mode |
62
+ | [Mixpanel](./mixpanel-analytics.md) | `mixpanelAnalytics` | `measurement` | Always loads; calls opt-in and opt-out APIs |
63
+ | [Hotjar](./hotjar.md) | `hotjar` | `measurement` | Waits for effective permission |
64
+ | [Hightouch](./hightouch.md) | `hightouch` | `measurement` | Waits for effective permission |
65
+ | [LogRocket](./logrocket.md) | `logRocket` | `measurement` | Waits for effective permission |
66
+ | [Plausible Analytics](./plausible-analytics.md) | `plausibleAnalytics` | `measurement` | Waits for effective permission |
67
+ | [PostHog](./posthog.md) | `posthog` | `measurement` | Configurable; default always loads |
68
+ | [Promptwatch](./promptwatch.md) | `promptwatch` | `measurement` | Waits for effective permission |
69
+ | [Pirsch](./pirsch.md) | `pirsch` | `measurement` | Waits for effective permission |
70
+ | [RudderStack](./rudderstack.md) | `rudderstack` | `measurement` | Gated by default; optional destination consent mode |
71
+ | [Segment](./segment.md) | `segment` | `measurement` | Waits for effective permission |
72
+ | [Rybbit Analytics](./rybbit-analytics.md) | `rybbitAnalytics` | `measurement` | Waits for effective permission |
73
+ | [Umami Analytics](./umami-analytics.md) | `umamiAnalytics` | `measurement` | Waits for effective permission |
74
+ | [Vercel Analytics](./vercel-analytics.md) | `vercelAnalytics` | `measurement` | Waits for effective permission |
75
+
76
+ ## Functionality
77
+
78
+ | Integration | Helper | Category | Loading behavior |
79
+ | ------------------------- | ---------- | --------------- | ------------------------------ |
80
+ | [Crisp](./crisp.md) | `crisp` | `functionality` | Waits for effective permission |
81
+ | [Intercom](./intercom.md) | `intercom` | `functionality` | Waits for effective permission |
82
+
83
+ ## Ads and pixels
84
+
85
+ | Integration | Helper | Category | Loading behavior |
86
+ | ---------------------------------------------- | ------------------ | ----------- | ------------------------------------------------- |
87
+ | [Meta Pixel](./meta-pixel.md) | `metaPixel` | `marketing` | Waits for effective permission |
88
+ | [OpenAI Pixel](./openai-pixel.md) | `openaiPixel` | `marketing` | Gated initially; retains SDK and signals consent |
89
+ | [Reddit Pixel](./reddit-pixel.md) | `redditPixel` | `marketing` | Gated initially; retains SDK and switches cookies |
90
+ | [TikTok Pixel](./tiktok-pixel.md) | `tiktokPixel` | `marketing` | Gated initially; retains SDK and signals consent |
91
+ | [LinkedIn Insight Tag](./linkedin-insights.md) | `linkedinInsights` | `marketing` | Waits for effective permission |
92
+ | [Microsoft UET](./microsoft-uet.md) | `microsoftUet` | `marketing` | Always loads; signals ad storage consent |
93
+ | [Snapchat Pixel](./snapchat-pixel.md) | `snapchatPixel` | `marketing` | Waits for effective permission |
94
+ | [X Pixel](./x-pixel.md) | `xPixel` | `marketing` | Waits for effective permission |
95
+
96
+ ## Keep one owner per vendor
97
+
98
+ Remove direct snippets, tracking images, framework plugins and duplicate
99
+ SDK initializers before adding a helper. A vendor loaded outside c15t is not
100
+ controlled by the configuration here. Tag managers and data pipelines can load
101
+ other destinations, which need their own consent settings.
102
+
103
+ Initial loading and later event calls are separate. Some helpers keep an SDK
104
+ loaded to send consent updates. Others remove their script element without a
105
+ vendor stop callback. Neither approach can reverse code or requests that already
106
+ ran. Guard application events and verify automatic tracking after revocation.
107
+
108
+ Use [custom integrations](./building-integrations.md) for a service
109
+ without a helper, or an SDK your application already owns. Follow
110
+ [consent verification](../guides/verify-consent.md) for fresh sessions, rejection,
111
+ acceptance, revocation and navigation.