@c15t/scripts 3.0.0-alpha.2 → 3.0.0-alpha.4

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 (300) hide show
  1. package/AGENTS.md +129 -63
  2. package/README.md +8 -29
  3. package/SKILL.md +33 -0
  4. package/dist/adobe-analytics.js +2 -0
  5. package/dist/ahrefs-analytics.js +2 -0
  6. package/dist/amplitude.js +2 -0
  7. package/dist/clearbit.js +2 -0
  8. package/dist/cloudflare-web-analytics.js +2 -0
  9. package/dist/cloudflare-zaraz.js +2 -0
  10. package/dist/crisp.js +2 -0
  11. package/dist/databuddy.js +2 -0
  12. package/dist/e2e-test-utils.js +2 -139
  13. package/dist/engine/compile.js +2 -89
  14. package/dist/engine/runtime.js +2 -448
  15. package/dist/events.js +2 -218
  16. package/dist/fathom-analytics.js +2 -0
  17. package/dist/front-chat.js +2 -0
  18. package/dist/google-tag-manager.js +2 -0
  19. package/dist/google-tag.js +2 -0
  20. package/dist/heap.js +2 -0
  21. package/dist/hightouch.js +2 -0
  22. package/dist/hotjar.js +2 -0
  23. package/dist/intercom.js +2 -0
  24. package/dist/klaviyo.js +2 -0
  25. package/dist/linkedin-insights.js +2 -0
  26. package/dist/logrocket.js +2 -0
  27. package/dist/matomo-analytics.js +2 -0
  28. package/dist/meta-pixel.js +2 -0
  29. package/dist/microsoft-clarity.js +2 -0
  30. package/dist/microsoft-uet.js +2 -0
  31. package/dist/mixpanel-analytics.js +2 -0
  32. package/dist/one-dollar-stats.js +2 -0
  33. package/dist/openai-pixel.js +2 -0
  34. package/dist/pinterest-tag.js +2 -0
  35. package/dist/pirsch.js +2 -0
  36. package/dist/plausible-analytics.js +2 -0
  37. package/dist/posthog.js +2 -0
  38. package/dist/promptwatch.js +2 -0
  39. package/dist/reddit-pixel.js +2 -0
  40. package/dist/registry.js +2 -422
  41. package/dist/resolve.js +2 -33
  42. package/dist/rudderstack.js +2 -0
  43. package/dist/rybbit-analytics.js +2 -0
  44. package/dist/segment.js +2 -0
  45. package/dist/snapchat-pixel.js +2 -0
  46. package/dist/tiktok-pixel.js +2 -0
  47. package/dist/types.js +2 -16
  48. package/dist/umami-analytics.js +2 -0
  49. package/dist/vendors/_shared/attributes.js +2 -14
  50. package/dist/vendors/_shared/google-consent.js +2 -27
  51. package/dist/vendors/_shared/install-builders.js +2 -21
  52. package/dist/vendors/_shared/required-id.js +2 -0
  53. package/dist/vendors/_shared/script-url.js +2 -28
  54. package/dist/vendors/ads-and-pixels/linkedin-insights.js +2 -48
  55. package/dist/vendors/ads-and-pixels/meta-pixel.js +2 -153
  56. package/dist/vendors/ads-and-pixels/microsoft-uet.js +2 -110
  57. package/dist/vendors/ads-and-pixels/openai-pixel.js +2 -88
  58. package/dist/vendors/ads-and-pixels/pinterest-tag.js +2 -123
  59. package/dist/vendors/ads-and-pixels/reddit-pixel.js +2 -107
  60. package/dist/vendors/ads-and-pixels/snapchat-pixel.js +2 -87
  61. package/dist/vendors/ads-and-pixels/tiktok-pixel.js +2 -89
  62. package/dist/vendors/ads-and-pixels/x-pixel.js +2 -48
  63. package/dist/vendors/analytics/adobe-analytics.js +2 -49
  64. package/dist/vendors/analytics/ahrefs-analytics.js +2 -27
  65. package/dist/vendors/analytics/amplitude.js +2 -134
  66. package/dist/vendors/analytics/clearbit.js +2 -28
  67. package/dist/vendors/analytics/cloudflare-web-analytics.js +2 -32
  68. package/dist/vendors/analytics/databuddy.js +2 -103
  69. package/dist/vendors/analytics/fathom-analytics.js +2 -35
  70. package/dist/vendors/analytics/google-tag.js +2 -78
  71. package/dist/vendors/analytics/heap.js +2 -134
  72. package/dist/vendors/analytics/hightouch.js +2 -109
  73. package/dist/vendors/analytics/hotjar.js +2 -44
  74. package/dist/vendors/analytics/logrocket.js +2 -58
  75. package/dist/vendors/analytics/matomo-analytics.js +2 -191
  76. package/dist/vendors/analytics/microsoft-clarity.js +2 -100
  77. package/dist/vendors/analytics/mixpanel-analytics.js +2 -93
  78. package/dist/vendors/analytics/one-dollar-stats.js +2 -30
  79. package/dist/vendors/analytics/pirsch.js +2 -67
  80. package/dist/vendors/analytics/plausible-analytics.js +2 -81
  81. package/dist/vendors/analytics/posthog.js +2 -200
  82. package/dist/vendors/analytics/promptwatch.js +2 -29
  83. package/dist/vendors/analytics/rudderstack.js +2 -183
  84. package/dist/vendors/analytics/rybbit-analytics.js +2 -63
  85. package/dist/vendors/analytics/segment.js +2 -65
  86. package/dist/vendors/analytics/umami-analytics.js +2 -39
  87. package/dist/vendors/analytics/vercel-analytics.js +2 -53
  88. package/dist/vendors/email-and-sms/klaviyo.js +2 -0
  89. package/dist/vendors/functional/crisp.js +2 -100
  90. package/dist/vendors/functional/front-chat.js +2 -64
  91. package/dist/vendors/functional/intercom.js +2 -45
  92. package/dist/vendors/tag-managers/cloudflare-zaraz.js +2 -98
  93. package/dist/vendors/tag-managers/google-tag-manager.js +2 -73
  94. package/dist/vercel-analytics.js +2 -0
  95. package/dist/x-pixel.js +2 -0
  96. package/dist-types/adobe-analytics.d.ts +2 -0
  97. package/dist-types/ahrefs-analytics.d.ts +2 -0
  98. package/dist-types/amplitude.d.ts +2 -0
  99. package/dist-types/clearbit.d.ts +2 -0
  100. package/dist-types/cloudflare-web-analytics.d.ts +2 -0
  101. package/dist-types/cloudflare-zaraz.d.ts +2 -0
  102. package/dist-types/crisp.d.ts +2 -0
  103. package/dist-types/databuddy.d.ts +2 -0
  104. package/dist-types/e2e-test-utils.d.ts +2 -0
  105. package/dist-types/engine/compile.d.ts +2 -3
  106. package/dist-types/engine/runtime.d.ts +2 -3
  107. package/dist-types/events.d.ts +2 -46
  108. package/dist-types/fathom-analytics.d.ts +2 -0
  109. package/dist-types/front-chat.d.ts +2 -0
  110. package/dist-types/google-tag-manager.d.ts +2 -0
  111. package/dist-types/google-tag.d.ts +2 -0
  112. package/dist-types/heap.d.ts +2 -0
  113. package/dist-types/hightouch.d.ts +2 -0
  114. package/dist-types/hotjar.d.ts +2 -0
  115. package/dist-types/intercom.d.ts +2 -0
  116. package/dist-types/klaviyo.d.ts +2 -0
  117. package/dist-types/linkedin-insights.d.ts +2 -0
  118. package/dist-types/logrocket.d.ts +2 -0
  119. package/dist-types/matomo-analytics.d.ts +2 -0
  120. package/dist-types/meta-pixel.d.ts +2 -0
  121. package/dist-types/microsoft-clarity.d.ts +2 -0
  122. package/dist-types/microsoft-uet.d.ts +2 -0
  123. package/dist-types/mixpanel-analytics.d.ts +2 -0
  124. package/dist-types/one-dollar-stats.d.ts +2 -0
  125. package/dist-types/openai-pixel.d.ts +2 -0
  126. package/dist-types/pinterest-tag.d.ts +2 -0
  127. package/dist-types/pirsch.d.ts +2 -0
  128. package/dist-types/plausible-analytics.d.ts +2 -0
  129. package/dist-types/posthog.d.ts +2 -0
  130. package/dist-types/promptwatch.d.ts +2 -0
  131. package/dist-types/reddit-pixel.d.ts +2 -0
  132. package/dist-types/registry.d.ts +2 -485
  133. package/dist-types/resolve.d.ts +2 -9
  134. package/dist-types/rudderstack.d.ts +2 -0
  135. package/dist-types/rybbit-analytics.d.ts +2 -0
  136. package/dist-types/segment.d.ts +2 -0
  137. package/dist-types/snapchat-pixel.d.ts +2 -0
  138. package/dist-types/tiktok-pixel.d.ts +2 -0
  139. package/dist-types/types.d.ts +2 -314
  140. package/dist-types/umami-analytics.d.ts +2 -0
  141. package/dist-types/vendors/_shared/attributes.d.ts +2 -35
  142. package/dist-types/vendors/_shared/google-consent.d.ts +2 -47
  143. package/dist-types/vendors/_shared/install-builders.d.ts +2 -30
  144. package/dist-types/vendors/_shared/required-id.d.ts +2 -0
  145. package/dist-types/vendors/_shared/script-url.d.ts +2 -75
  146. package/dist-types/vendors/ads-and-pixels/linkedin-insights.d.ts +2 -92
  147. package/dist-types/vendors/ads-and-pixels/meta-pixel.d.ts +2 -289
  148. package/dist-types/vendors/ads-and-pixels/microsoft-uet.d.ts +2 -105
  149. package/dist-types/vendors/ads-and-pixels/openai-pixel.d.ts +2 -211
  150. package/dist-types/vendors/ads-and-pixels/pinterest-tag.d.ts +2 -295
  151. package/dist-types/vendors/ads-and-pixels/reddit-pixel.d.ts +2 -210
  152. package/dist-types/vendors/ads-and-pixels/snapchat-pixel.d.ts +2 -171
  153. package/dist-types/vendors/ads-and-pixels/tiktok-pixel.d.ts +2 -106
  154. package/dist-types/vendors/ads-and-pixels/x-pixel.d.ts +2 -183
  155. package/dist-types/vendors/analytics/adobe-analytics.d.ts +2 -75
  156. package/dist-types/vendors/analytics/ahrefs-analytics.d.ts +2 -62
  157. package/dist-types/vendors/analytics/amplitude.d.ts +2 -234
  158. package/dist-types/vendors/analytics/clearbit.d.ts +2 -60
  159. package/dist-types/vendors/analytics/cloudflare-web-analytics.d.ts +2 -67
  160. package/dist-types/vendors/analytics/databuddy.d.ts +2 -147
  161. package/dist-types/vendors/analytics/fathom-analytics.d.ts +2 -90
  162. package/dist-types/vendors/analytics/google-tag.d.ts +2 -95
  163. package/dist-types/vendors/analytics/heap.d.ts +2 -316
  164. package/dist-types/vendors/analytics/hightouch.d.ts +2 -285
  165. package/dist-types/vendors/analytics/hotjar.d.ts +2 -73
  166. package/dist-types/vendors/analytics/logrocket.d.ts +2 -101
  167. package/dist-types/vendors/analytics/matomo-analytics.d.ts +2 -41
  168. package/dist-types/vendors/analytics/microsoft-clarity.d.ts +2 -97
  169. package/dist-types/vendors/analytics/mixpanel-analytics.d.ts +2 -113
  170. package/dist-types/vendors/analytics/one-dollar-stats.d.ts +2 -39
  171. package/dist-types/vendors/analytics/pirsch.d.ts +2 -96
  172. package/dist-types/vendors/analytics/plausible-analytics.d.ts +2 -122
  173. package/dist-types/vendors/analytics/posthog.d.ts +2 -175
  174. package/dist-types/vendors/analytics/promptwatch.d.ts +2 -36
  175. package/dist-types/vendors/analytics/rudderstack.d.ts +2 -330
  176. package/dist-types/vendors/analytics/rybbit-analytics.d.ts +2 -82
  177. package/dist-types/vendors/analytics/segment.d.ts +2 -164
  178. package/dist-types/vendors/analytics/umami-analytics.d.ts +2 -93
  179. package/dist-types/vendors/analytics/vercel-analytics.d.ts +2 -66
  180. package/dist-types/vendors/email-and-sms/klaviyo.d.ts +2 -0
  181. package/dist-types/vendors/functional/crisp.d.ts +2 -78
  182. package/dist-types/vendors/functional/front-chat.d.ts +2 -62
  183. package/dist-types/vendors/functional/intercom.d.ts +2 -135
  184. package/dist-types/vendors/tag-managers/cloudflare-zaraz.d.ts +2 -39
  185. package/dist-types/vendors/tag-managers/google-tag-manager.d.ts +2 -96
  186. package/dist-types/vercel-analytics.d.ts +2 -0
  187. package/dist-types/x-pixel.d.ts +2 -0
  188. package/docs/README.md +129 -63
  189. package/docs/assets/v3/bottom-bar.png +0 -0
  190. package/docs/assets/v3/brand-card.png +0 -0
  191. package/docs/assets/v3/brand-preferences.png +0 -0
  192. package/docs/assets/v3/choice-wall.png +0 -0
  193. package/docs/assets/v3/headless-bar-html.png +0 -0
  194. package/docs/assets/v3/headless-bar-mobile.png +0 -0
  195. package/docs/assets/v3/headless-bar.png +0 -0
  196. package/docs/assets/v3/slim-bar.png +0 -0
  197. package/docs/concepts/choose-your-setup.md +87 -0
  198. package/docs/concepts/consent-categories.md +84 -0
  199. package/docs/{guides → concepts}/consent-state.md +89 -105
  200. package/docs/{guides → concepts}/data-fetching.md +31 -27
  201. package/docs/concepts/how-consent-works.md +123 -0
  202. package/docs/concepts/policies.md +71 -0
  203. package/docs/customization/class-names.md +202 -0
  204. package/docs/customization/dark-mode.md +157 -0
  205. package/docs/customization/motion.md +119 -0
  206. package/docs/customization/overview.md +67 -34
  207. package/docs/customization/recipes.md +839 -49
  208. package/docs/customization/slots.md +216 -35
  209. package/docs/customization/stylesheets.md +147 -0
  210. package/docs/customization/tailwind.md +842 -0
  211. package/docs/customization/tokens.md +163 -96
  212. package/docs/customization/translations.md +60 -3
  213. package/docs/frameworks/astro/embeds.md +160 -0
  214. package/docs/frameworks/astro/network-blocker.md +86 -0
  215. package/docs/frameworks/astro/scripts.md +155 -0
  216. package/docs/frameworks/html/embeds.md +142 -0
  217. package/docs/frameworks/html/network-blocker.md +105 -0
  218. package/docs/frameworks/html/scripts.md +164 -0
  219. package/docs/frameworks/javascript/scripts.md +137 -0
  220. package/docs/frameworks/next/embeds.md +90 -0
  221. package/docs/frameworks/next/network-blocker.md +153 -0
  222. package/docs/frameworks/next/scripts.md +196 -0
  223. package/docs/frameworks/nuxt/embeds.md +81 -0
  224. package/docs/frameworks/nuxt/network-blocker.md +97 -0
  225. package/docs/frameworks/nuxt/scripts.md +89 -0
  226. package/docs/frameworks/react/embeds.md +89 -0
  227. package/docs/frameworks/react/network-blocker.md +140 -0
  228. package/docs/frameworks/react/scripts.md +115 -0
  229. package/docs/frameworks/svelte/embeds.md +96 -0
  230. package/docs/frameworks/svelte/network-blocker.md +141 -0
  231. package/docs/frameworks/svelte/scripts.md +144 -0
  232. package/docs/frameworks/sveltekit/embeds.md +103 -0
  233. package/docs/frameworks/sveltekit/network-blocker.md +159 -0
  234. package/docs/frameworks/sveltekit/scripts.md +172 -0
  235. package/docs/frameworks/tanstack-start/embeds.md +96 -0
  236. package/docs/frameworks/tanstack-start/network-blocker.md +145 -0
  237. package/docs/frameworks/tanstack-start/scripts.md +103 -0
  238. package/docs/frameworks/vue/embeds.md +84 -0
  239. package/docs/frameworks/vue/network-blocker.md +99 -0
  240. package/docs/frameworks/vue/scripts.md +93 -0
  241. package/docs/guides/banner-experiments.md +654 -0
  242. package/docs/guides/troubleshooting.md +120 -47
  243. package/docs/guides/verify-consent.md +81 -49
  244. package/docs/integrations/adobe-analytics.md +167 -159
  245. package/docs/integrations/ahrefs-analytics.md +152 -154
  246. package/docs/integrations/amplitude.md +162 -156
  247. package/docs/integrations/building-integrations.md +136 -37
  248. package/docs/integrations/clearbit.md +154 -154
  249. package/docs/integrations/cloudflare-web-analytics.md +156 -156
  250. package/docs/integrations/cloudflare-zaraz.md +209 -261
  251. package/docs/integrations/crisp.md +164 -158
  252. package/docs/integrations/databuddy.md +157 -173
  253. package/docs/integrations/fathom-analytics.md +158 -156
  254. package/docs/integrations/front-chat.md +167 -167
  255. package/docs/integrations/google-maps.md +118 -83
  256. package/docs/integrations/google-tag-manager.md +178 -163
  257. package/docs/integrations/google-tag.md +163 -160
  258. package/docs/integrations/heap.md +163 -155
  259. package/docs/integrations/hightouch.md +161 -157
  260. package/docs/integrations/hotjar.md +159 -155
  261. package/docs/integrations/intercom.md +183 -153
  262. package/docs/integrations/klaviyo.md +486 -0
  263. package/docs/integrations/linkedin-insights.md +174 -150
  264. package/docs/integrations/logrocket.md +160 -156
  265. package/docs/integrations/matomo-analytics.md +188 -178
  266. package/docs/integrations/meta-pixel.md +188 -150
  267. package/docs/integrations/microsoft-clarity.md +163 -155
  268. package/docs/integrations/microsoft-uet.md +148 -154
  269. package/docs/integrations/mixpanel-analytics.md +155 -160
  270. package/docs/integrations/one-dollar-stats.md +166 -165
  271. package/docs/integrations/openai-pixel.md +204 -301
  272. package/docs/integrations/overview.md +137 -80
  273. package/docs/integrations/pinterest-tag.md +191 -183
  274. package/docs/integrations/pirsch.md +169 -159
  275. package/docs/integrations/plausible-analytics.md +172 -158
  276. package/docs/integrations/posthog.md +313 -240
  277. package/docs/integrations/promptwatch.md +154 -154
  278. package/docs/integrations/reddit-pixel.md +185 -157
  279. package/docs/integrations/rudderstack.md +201 -186
  280. package/docs/integrations/rybbit-analytics.md +171 -160
  281. package/docs/integrations/segment.md +182 -154
  282. package/docs/integrations/snapchat-pixel.md +186 -156
  283. package/docs/integrations/tiktok-pixel.md +171 -150
  284. package/docs/integrations/umami-analytics.md +163 -158
  285. package/docs/integrations/vercel-analytics.md +166 -157
  286. package/docs/integrations/x-pixel.md +176 -150
  287. package/docs/integrations/youtube.md +121 -86
  288. package/docs/upgrade-v3.md +496 -467
  289. package/package.json +10 -257
  290. package/dist-types/__tests__/helpers.d.ts +0 -141
  291. package/docs/assets/v3/brand-bar.png +0 -0
  292. package/docs/assets/v3/mobile-card.png +0 -0
  293. package/docs/assets/v3/preferences.png +0 -0
  294. package/docs/frameworks/javascript/script-loader.md +0 -100
  295. package/docs/frameworks/next/script-loader.md +0 -216
  296. package/docs/frameworks/react/script-loader.md +0 -69
  297. package/docs/guides/deployment-modes.md +0 -75
  298. package/docs/guides/shared-consent-controls.md +0 -158
  299. package/docs/integrations/clear-on-revocation.md +0 -167
  300. package/docs/integrations/granular-consent.md +0 -210
@@ -1,31 +1,31 @@
1
1
  ---
2
- title: Overview
2
+ title: Integrations
3
3
  description: Find all c15t integrations for analytics, tag managers,
4
- advertising, chat and embedded content.
4
+ advertising, email and SMS, chat and embedded content.
5
5
  group: integrations
6
6
  ---
7
7
 
8
8
  ## Choose an integration
9
9
 
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.
10
+ Each vendor helper in `@c15t/integrations` returns a script configuration that you
11
+ register with your c15t provider. Importing a helper installs nothing on its
12
+ own. Set up consent with your [framework quickstart](https://c15t.com/docs/frameworks) first,
13
+ then follow the vendor guide.
14
14
 
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` |
15
+ | Package manager | Command |
16
+ | :-------------- | :------------------------------------- |
17
+ | npm | `npm install @c15t/integrations@alpha` |
18
+ | pnpm | `pnpm add @c15t/integrations@alpha` |
19
+ | yarn | `yarn add @c15t/integrations@alpha` |
20
+ | bun | `bun add @c15t/integrations@alpha` |
21
21
 
22
- `@c15t/scripts` is a separate add-on. Keep the main `c15t` package for imports
23
- such as `c15t/react` and `c15t/next`.
22
+ `@c15t/integrations` is a separate package. Keep importing c15t itself from `c15t`,
23
+ for example `c15t/react` or `c15t/next`.
24
24
 
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.
25
+ The Loading behavior column shows when each helper requests the vendor. Most
26
+ wait for the category to be allowed. A few load on every page and pass the
27
+ permission to the vendor's own consent API, so the browser contacts the vendor
28
+ before a choice.
29
29
 
30
30
  ## Embeds
31
31
 
@@ -36,46 +36,46 @@ behavior before choosing either approach.
36
36
 
37
37
  Both guides include all nine framework examples. React and Svelte use `ConsentGate`;
38
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`.
39
+ kernel to control its DOM lifecycle. Embeds do not require `@c15t/integrations`.
40
40
 
41
41
  ## Tag managers
42
42
 
43
- | Integration | Helper | Category | Loading behavior |
44
- | --------------------------------------------- | ------------------ | ----------- | ------------------------------------------------ |
45
- | [Cloudflare Zaraz](./cloudflare-zaraz.md) | `cloudflareZaraz` | `necessary` | Synchronizes purposes; Zaraz owns tool execution |
46
- | [Google Tag Manager](./google-tag-manager.md) | `googleTagManager` | `necessary` | Always loads; signals Google consent |
43
+ | Integration | Helper | Category | Loading behavior |
44
+ | --------------------------------------------- | ------------------ | ----------- | ------------------------------------------------- |
45
+ | [Cloudflare Zaraz](./cloudflare-zaraz.md) | `cloudflareZaraz` | `necessary` | Always runs; syncs purposes, Zaraz runs the tools |
46
+ | [Google Tag Manager](./google-tag-manager.md) | `googleTagManager` | `necessary` | Always loads; signals Google consent |
47
47
 
48
48
  ## Analytics
49
49
 
50
- | Integration | Helper | Category | Loading behavior |
51
- | --------------------------------------------------------- | ------------------------ | -------------------------- | -------------------------------------------------------- |
52
- | [Google Tag](./google-tag.md) | `gtag` | `measurement or marketing` | Always loads; signals Google consent |
53
- | [Ahrefs Analytics](./ahrefs-analytics.md) | `ahrefsAnalytics` | `measurement` | Waits for effective permission |
54
- | [Adobe Analytics](./adobe-analytics.md) | `adobeAnalytics` | `measurement` | Waits for effective permission |
55
- | [Amplitude](./amplitude.md) | `amplitude` | `measurement` | Waits for effective permission |
56
- | [Cloudflare Web Analytics](./cloudflare-web-analytics.md) | `cloudflareWebAnalytics` | `measurement` | Waits for effective permission |
57
- | [Clearbit](./clearbit.md) | `clearbit` | `marketing` | Waits for effective permission |
58
- | [Microsoft Clarity](./microsoft-clarity.md) | `clarity` | `measurement` | Gated initially; retains SDK and signals storage consent |
59
- | [Databuddy](./databuddy.md) | `databuddy` | `measurement` | Always loads; switches SDK configuration |
60
- | [Fathom Analytics](./fathom-analytics.md) | `fathomAnalytics` | `measurement` | Waits for effective permission |
61
- | [Heap](./heap.md) | `heap` | `measurement` | Waits for effective permission |
62
- | [Matomo Analytics](./matomo-analytics.md) | `matomoAnalytics` | `measurement` | Gated by default; optional consent mode |
63
- | [Mixpanel](./mixpanel-analytics.md) | `mixpanelAnalytics` | `measurement` | Always loads; calls opt-in and opt-out APIs |
64
- | [OneDollarStats](./one-dollar-stats.md) | `oneDollarStats` | `measurement` | Waits for effective permission |
65
- | [Hotjar](./hotjar.md) | `hotjar` | `measurement` | Waits for effective permission |
66
- | [Hightouch](./hightouch.md) | `hightouch` | `measurement` | Waits for effective permission |
67
- | [LogRocket](./logrocket.md) | `logRocket` | `measurement` | Waits for effective permission |
68
- | [Plausible Analytics](./plausible-analytics.md) | `plausibleAnalytics` | `measurement` | Waits for effective permission |
69
- | [PostHog](./posthog.md) | `posthog` | `measurement` | Configurable; default always loads |
70
- | [Promptwatch](./promptwatch.md) | `promptwatch` | `measurement` | Waits for effective permission |
71
- | [Pirsch](./pirsch.md) | `pirsch` | `measurement` | Waits for effective permission |
72
- | [RudderStack](./rudderstack.md) | `rudderstack` | `measurement` | Gated by default; optional destination consent mode |
73
- | [Segment](./segment.md) | `segment` | `measurement` | Waits for effective permission |
74
- | [Rybbit Analytics](./rybbit-analytics.md) | `rybbitAnalytics` | `measurement` | Waits for effective permission |
75
- | [Umami Analytics](./umami-analytics.md) | `umamiAnalytics` | `measurement` | Waits for effective permission |
76
- | [Vercel Analytics](./vercel-analytics.md) | `vercelAnalytics` | `measurement` | Waits for effective permission |
77
-
78
- ## Functionality
50
+ | Integration | Helper | Category | Loading behavior |
51
+ | --------------------------------------------------------- | ------------------------ | ---------------------------- | ---------------------------------------------------------------------------- |
52
+ | [Google Tag](./google-tag.md) | `gtag` | `measurement` or `marketing` | Always loads; signals Google consent |
53
+ | [Ahrefs Analytics](./ahrefs-analytics.md) | `ahrefsAnalytics` | `measurement` | Waits for effective permission |
54
+ | [Adobe Analytics](./adobe-analytics.md) | `adobeAnalytics` | `measurement` | Waits for effective permission |
55
+ | [Amplitude](./amplitude.md) | `amplitude` | `measurement` | Waits for effective permission; opts the SDK out on revocation |
56
+ | [Cloudflare Web Analytics](./cloudflare-web-analytics.md) | `cloudflareWebAnalytics` | `measurement` | Waits for effective permission |
57
+ | [Clearbit](./clearbit.md) | `clearbit` | `marketing` | Waits for effective permission |
58
+ | [Microsoft Clarity](./microsoft-clarity.md) | `clarity` | `measurement` | Gated initially; keeps the SDK and signals storage consent |
59
+ | [Databuddy](./databuddy.md) | `databuddy` | `measurement` | Always loads; switches the SDK's disabled flag |
60
+ | [Fathom Analytics](./fathom-analytics.md) | `fathomAnalytics` | `measurement` | Waits for effective permission |
61
+ | [Heap](./heap.md) | `heap` | `measurement` | Waits for effective permission |
62
+ | [Matomo Analytics](./matomo-analytics.md) | `matomoAnalytics` | `measurement` | Gated by default; optional consent mode |
63
+ | [Mixpanel](./mixpanel-analytics.md) | `mixpanelAnalytics` | `measurement` | Always loads; calls opt-in and opt-out APIs |
64
+ | [OneDollarStats](./one-dollar-stats.md) | `oneDollarStats` | `measurement` | Waits for effective permission |
65
+ | [Hotjar](./hotjar.md) | `hotjar` | `measurement` | Waits for effective permission |
66
+ | [Hightouch](./hightouch.md) | `hightouch` | `measurement` | Waits for effective permission |
67
+ | [LogRocket](./logrocket.md) | `logRocket` | `measurement` | Waits for effective permission |
68
+ | [Plausible Analytics](./plausible-analytics.md) | `plausibleAnalytics` | `measurement` | Waits for effective permission |
69
+ | [PostHog](./posthog.md) | `posthog` | `measurement` | Configurable; defaults to always loading and calling opt-in and opt-out APIs |
70
+ | [Promptwatch](./promptwatch.md) | `promptwatch` | `measurement` | Waits for effective permission |
71
+ | [Pirsch](./pirsch.md) | `pirsch` | `measurement` | Waits for effective permission |
72
+ | [RudderStack](./rudderstack.md) | `rudderstack` | `measurement` | Gated by default; optional destination consent mode |
73
+ | [Segment](./segment.md) | `segment` | `measurement` | Waits for effective permission |
74
+ | [Rybbit Analytics](./rybbit-analytics.md) | `rybbitAnalytics` | `measurement` | Waits for effective permission |
75
+ | [Umami Analytics](./umami-analytics.md) | `umamiAnalytics` | `measurement` | Waits for effective permission |
76
+ | [Vercel Analytics](./vercel-analytics.md) | `vercelAnalytics` | `measurement` | Waits for effective permission |
77
+
78
+ ## Chat and support
79
79
 
80
80
  | Integration | Helper | Category | Loading behavior |
81
81
  | ----------------------------- | ----------- | --------------- | ------------------------------ |
@@ -83,33 +83,90 @@ kernel to control its DOM lifecycle. Embeds do not require `@c15t/scripts`.
83
83
  | [Front Chat](./front-chat.md) | `frontChat` | `functionality` | Waits for effective permission |
84
84
  | [Intercom](./intercom.md) | `intercom` | `functionality` | Waits for effective permission |
85
85
 
86
+ ## Email and SMS
87
+
88
+ | Integration | Helper | Category | Loading behavior |
89
+ | ----------------------- | --------- | ----------------------------- | ---------------------------------------------------------- |
90
+ | [Klaviyo](./klaviyo.md) | `klaviyo` | `marketing` and `measurement` | Waits for both; optional forms-only mode needs `marketing` |
91
+
86
92
  ## Ads and pixels
87
93
 
88
- | Integration | Helper | Category | Loading behavior |
89
- | ---------------------------------------------- | ------------------ | ----------- | ---------------------------------------------------- |
90
- | [Meta Pixel](./meta-pixel.md) | `metaPixel` | `marketing` | Waits for effective permission |
91
- | [OpenAI Pixel](./openai-pixel.md) | `openaiPixel` | `marketing` | Gated initially; retains SDK and signals consent |
92
- | [Pinterest Tag](./pinterest-tag.md) | `pinterestTag` | `marketing` | Gated initially; retains the tag and signals consent |
93
- | [Reddit Pixel](./reddit-pixel.md) | `redditPixel` | `marketing` | Gated initially; retains SDK and switches cookies |
94
- | [TikTok Pixel](./tiktok-pixel.md) | `tiktokPixel` | `marketing` | Gated initially; retains SDK and signals consent |
95
- | [LinkedIn Insight Tag](./linkedin-insights.md) | `linkedinInsights` | `marketing` | Waits for effective permission |
96
- | [Microsoft UET](./microsoft-uet.md) | `microsoftUet` | `marketing` | Always loads; signals ad storage consent |
97
- | [Snapchat Pixel](./snapchat-pixel.md) | `snapchatPixel` | `marketing` | Waits for effective permission |
98
- | [X Pixel](./x-pixel.md) | `xPixel` | `marketing` | Waits for effective permission |
99
-
100
- ## Keep one owner per vendor
101
-
102
- Remove direct snippets, tracking images, framework plugins and duplicate
103
- SDK initializers before adding a helper. A vendor loaded outside c15t is not
104
- controlled by the configuration here. Tag managers and data pipelines can load
105
- other destinations, which need their own consent settings.
106
-
107
- Initial loading and later event calls are separate. Some helpers keep an SDK
108
- loaded to send consent updates. Others remove their script element without a
109
- vendor stop callback. Neither approach can reverse code or requests that already
110
- ran. Guard application events and verify automatic tracking after revocation.
111
-
112
- Use [custom integrations](./building-integrations.md) for a service
113
- without a helper, or an SDK your application already owns. Follow
114
- [consent verification](../guides/verify-consent.md) for fresh sessions, rejection,
115
- acceptance, revocation and navigation.
94
+ | Integration | Helper | Category | Loading behavior |
95
+ | ---------------------------------------------- | ------------------ | ----------- | ---------------------------------------------------------------- |
96
+ | [Meta Pixel](./meta-pixel.md) | `metaPixel` | `marketing` | Gated initially; keeps the SDK and signals consent |
97
+ | [OpenAI Pixel](./openai-pixel.md) | `openaiPixel` | `marketing` | Gated initially; keeps the SDK and signals consent |
98
+ | [Pinterest Tag](./pinterest-tag.md) | `pinterestTag` | `marketing` | Gated initially; keeps the tag and signals consent |
99
+ | [Reddit Pixel](./reddit-pixel.md) | `redditPixel` | `marketing` | Gated initially; keeps the pixel and toggles first-party cookies |
100
+ | [TikTok Pixel](./tiktok-pixel.md) | `tiktokPixel` | `marketing` | Gated initially; keeps the SDK and signals consent |
101
+ | [LinkedIn Insight Tag](./linkedin-insights.md) | `linkedinInsights` | `marketing` | Waits for effective permission |
102
+ | [Microsoft UET](./microsoft-uet.md) | `microsoftUet` | `marketing` | Always loads; signals ad storage consent |
103
+ | [Snapchat Pixel](./snapchat-pixel.md) | `snapchatPixel` | `marketing` | Waits for effective permission |
104
+ | [X Pixel](./x-pixel.md) | `xPixel` | `marketing` | Waits for effective permission |
105
+
106
+ ## Load each vendor once
107
+
108
+ Remove the vendor's own snippet, tracking image, framework plugin or tag
109
+ manager entry before adding its helper. c15t cannot gate a copy it did not
110
+ load. Tag managers and data pipelines such as Segment can load further
111
+ destinations, which need consent settings of their own.
112
+
113
+ When a visitor turns off a category they had allowed, c15t reloads the page so
114
+ that code which already ran stops. Each vendor guide lists what its helper does
115
+ on revocation and how to check it.
116
+
117
+ ## Vendor switches and cookie cleanup
118
+
119
+ Every helper sets a `vendor` slug, so once you declare that vendor a visitor
120
+ can allow its category and still switch the vendor off. Gating also leaves
121
+ behind the cookies a vendor already wrote; `clearOnRevocation` deletes them
122
+ when their category is denied. Each framework documents both in its Scripts
123
+ and embeds group:
124
+
125
+ | Framework | Vendor consent | Clear on revocation |
126
+ | -------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
127
+ | Next.js | [Vendor consent](https://c15t.com/docs/frameworks/next/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/next/clear-on-revocation) |
128
+ | TanStack Start | [Vendor consent](https://c15t.com/docs/frameworks/tanstack-start/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/tanstack-start/clear-on-revocation) |
129
+ | React | [Vendor consent](https://c15t.com/docs/frameworks/react/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/react/clear-on-revocation) |
130
+ | Nuxt | [Vendor consent](https://c15t.com/docs/frameworks/nuxt/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/nuxt/clear-on-revocation) |
131
+ | Vue | [Vendor consent](https://c15t.com/docs/frameworks/vue/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/vue/clear-on-revocation) |
132
+ | Astro | [Vendor consent](https://c15t.com/docs/frameworks/astro/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/astro/clear-on-revocation) |
133
+ | Svelte | [Vendor consent](https://c15t.com/docs/frameworks/svelte/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/svelte/clear-on-revocation) |
134
+ | SvelteKit | [Vendor consent](https://c15t.com/docs/frameworks/sveltekit/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/sveltekit/clear-on-revocation) |
135
+ | HTML | [Vendor consent](https://c15t.com/docs/frameworks/html/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/html/clear-on-revocation) |
136
+ | JavaScript | [Vendor consent](https://c15t.com/docs/frameworks/javascript/vendor-consent) | [Clear on revocation](https://c15t.com/docs/frameworks/javascript/clear-on-revocation) |
137
+
138
+ ## Send events only to allowed integrations
139
+
140
+ `createEventDispatcher` from `@c15t/integrations/events` sends one named event to
141
+ every registered integration that has an event API and is allowed right now.
142
+ It drops events while measurement is denied, and one vendor's error does not
143
+ stop delivery to the others:
144
+
145
+ ```ts
146
+ import { createEventDispatcher } from '@c15t/integrations/events';
147
+
148
+ const events = createEventDispatcher({
149
+ scripts,
150
+ getSnapshot: () => runtime.kernel.getSnapshot(),
151
+ pageviews: ['segment'],
152
+ });
153
+
154
+ events.track('docs_search', { resultCount: 4 });
155
+ events.pageview(location.pathname);
156
+ ```
157
+
158
+ Pass the same `scripts` you registered and a function that returns the live
159
+ consent snapshot. `track` supports Google Tag Manager, Google Tag, PostHog,
160
+ Mixpanel, Segment, Hightouch, Heap, Amplitude, LogRocket, Adobe Analytics,
161
+ Databuddy, Plausible, Fathom, Pirsch, Microsoft Clarity, Hotjar, Vercel
162
+ Analytics, OneDollarStats, Umami, Rybbit, RudderStack and Matomo.
163
+ `pageview` sends single-page-app page views only to the integrations named in
164
+ `pageviews`: PostHog, Segment or Hightouch. Call it from your router's
165
+ navigation hook. The first call records the path without sending, and repeated
166
+ paths or hash-only changes are skipped.
167
+
168
+ ## Add a vendor without a helper
169
+
170
+ Use [custom integrations](./building-integrations.md) for a
171
+ vendor without a helper, or an SDK your app already loads. Test every
172
+ integration with the [consent verification guide](../guides/verify-consent.md).