@c15t/react 3.2.0-canary.0 → 3.2.1
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.
- package/AGENTS.md +33 -10
- package/README.md +5 -7
- package/dist/styles.tw3.css +2 -2
- package/dist/version.js +1 -1
- package/dist-types/version.d.ts +1 -1
- package/docs/README.md +33 -10
- package/docs/concepts/choose-your-setup.md +8 -9
- package/docs/concepts/modes.md +5 -3
- package/docs/customization/stylesheets.md +39 -0
- package/docs/frameworks/react/hooks.md +2 -1
- package/docs/frameworks/react/quickstart.md +3 -3
- package/docs/frameworks/react/upgrade-v3.md +2 -2
- package/docs/integrations/activecampaign.md +297 -0
- package/docs/integrations/ada.md +396 -0
- package/docs/integrations/adobe-target.md +460 -0
- package/docs/integrations/adroll.md +336 -0
- package/docs/integrations/amazon-ads.md +424 -0
- package/docs/integrations/appcues.md +368 -0
- package/docs/integrations/attentive.md +313 -0
- package/docs/integrations/building-integrations.md +29 -16
- package/docs/integrations/clearbit.md +1 -1
- package/docs/integrations/customer-io.md +369 -0
- package/docs/integrations/databuddy.md +139 -50
- package/docs/integrations/default-com.md +497 -0
- package/docs/integrations/dynamic-yield.md +373 -0
- package/docs/integrations/fullstory.md +298 -0
- package/docs/integrations/gainsight-px.md +418 -0
- package/docs/integrations/gorgias.md +365 -0
- package/docs/integrations/hubspot.md +529 -0
- package/docs/integrations/insider.md +550 -0
- package/docs/integrations/liveintent.md +327 -0
- package/docs/integrations/lucky-orange.md +336 -0
- package/docs/integrations/marketo.md +309 -0
- package/docs/integrations/optimizely.md +411 -0
- package/docs/integrations/oracle-eloqua.md +301 -0
- package/docs/integrations/overview.md +124 -111
- package/docs/integrations/pendo.md +339 -0
- package/docs/integrations/rb2b.md +363 -0
- package/docs/integrations/salesforce-pardot.md +342 -0
- package/docs/integrations/statable-analytics.md +345 -0
- package/docs/integrations/the-trade-desk.md +328 -0
- package/docs/integrations/vector.md +333 -0
- package/docs/integrations/wisepops.md +416 -0
- package/docs/integrations/zendesk.md +359 -0
- package/package.json +8 -8
- package/docs/integrations/other-ads-and-pixels.md +0 -94
- package/docs/integrations/other-analytics.md +0 -108
- package/docs/integrations/other-chat-and-support.md +0 -112
- package/docs/integrations/other-email-and-sms.md +0 -156
- package/docs/integrations/other-experience.md +0 -222
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Databuddy
|
|
3
|
-
description: Load
|
|
4
|
-
helper,
|
|
5
|
-
check
|
|
3
|
+
description: Load Databuddy only after measurement consent with the c15t
|
|
4
|
+
databuddy helper, turn off tracking features you do not use, record sessions
|
|
5
|
+
with the replay option, and check revocation in DevTools.
|
|
6
6
|
seoTitle: Databuddy cookie consent with c15t
|
|
7
|
-
seoDescription:
|
|
8
|
-
|
|
7
|
+
seoDescription: Load Databuddy and its session replay only with measurement
|
|
8
|
+
consent, and stop both when consent is withdrawn. Set it up with the c15t
|
|
9
|
+
databuddy helper.
|
|
9
10
|
icon: databuddy
|
|
10
11
|
group: integrations
|
|
11
12
|
---
|
|
12
13
|
|
|
13
|
-
The c15t `databuddy` helper
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
`window.databuddyConfig` first. When `measurement` has consent, the helper
|
|
19
|
-
changes to `configWhenGranted` and sets `disabled` to `false`. If the visitor
|
|
20
|
-
withdraws consent, the helper changes both values back.
|
|
14
|
+
The c15t `databuddy` helper waits for `measurement` consent before it loads
|
|
15
|
+
`databuddy.js`. Before the visitor allows measurement, the page sends no
|
|
16
|
+
request to Databuddy and Databuddy stores nothing. If the visitor withdraws
|
|
17
|
+
consent, the helper disables the Databuddy tracker and stops session replay,
|
|
18
|
+
and c15t reloads the page.
|
|
21
19
|
|
|
22
20
|
## Configure Databuddy
|
|
23
21
|
|
|
24
22
|
Copy the client ID from your Databuddy project. The helper passes it to the
|
|
25
|
-
script as `data-client-id`. Remove any existing Databuddy
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
script as `data-client-id`. Remove any existing Databuddy or `replay.js` script
|
|
24
|
+
tag, any `<Databuddy />` component from `@databuddy/sdk`, and any code that
|
|
25
|
+
sets `window.databuddyConfig`. The helper seeds that global only when it is absent,
|
|
26
|
+
so an existing value overrides it.
|
|
28
27
|
|
|
29
28
|
| Package manager | Command |
|
|
30
29
|
| :-------------- | :------------------------------- |
|
|
@@ -37,11 +36,7 @@ is absent, so an existing value overrides your initial state.
|
|
|
37
36
|
import { databuddy } from '@c15t/integrations/databuddy';
|
|
38
37
|
|
|
39
38
|
export const scripts = [
|
|
40
|
-
databuddy({
|
|
41
|
-
clientId: 'YOUR_CLIENT_ID',
|
|
42
|
-
configWhenGranted: { disabled: false },
|
|
43
|
-
configWhenDenied: { disabled: true },
|
|
44
|
-
}),
|
|
39
|
+
databuddy({ clientId: 'YOUR_CLIENT_ID', features: { interactions: false } }),
|
|
45
40
|
];
|
|
46
41
|
```
|
|
47
42
|
|
|
@@ -251,43 +246,137 @@ A kernel you create yourself needs a loader from
|
|
|
251
246
|
|
|
252
247
|
## Options
|
|
253
248
|
|
|
254
|
-
| Option
|
|
255
|
-
|
|
|
256
|
-
| `clientId`
|
|
257
|
-
| `
|
|
258
|
-
| `
|
|
259
|
-
| `
|
|
260
|
-
| `
|
|
249
|
+
| Option | Default | Behavior |
|
|
250
|
+
| ------------------------ | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
251
|
+
| `clientId` | Required | Set as `data-client-id`. The helper trims it. Empty or whitespace-only values log an error and the script does not load. |
|
|
252
|
+
| `loadMode` | `'after-consent'` | When the script loads. See [loading and revocation](#loading-and-revocation). |
|
|
253
|
+
| `features.interactions` | Unset, Databuddy turns it on | Sets `data-track-interactions`. |
|
|
254
|
+
| `features.webVitals` | Unset, Databuddy turns it off | Sets `data-track-web-vitals`. |
|
|
255
|
+
| `features.errors` | Unset, Databuddy turns it off | Sets `data-track-errors`. |
|
|
256
|
+
| `features.outgoingLinks` | Unset, Databuddy turns it off | Sets `data-track-outgoing-links`. |
|
|
257
|
+
| `replay` | `false` | `true` or an object loads `replay.js` while measurement is allowed. See [record sessions](#record-sessions). |
|
|
258
|
+
| `replay.maskText` | Unset, Databuddy masks text | Sets `data-mask-text` on `replay.js`. `false` records page text. |
|
|
259
|
+
| `replay.recordIframes` | Unset, Databuddy turns it off | Sets `data-record-iframes` on `replay.js`. |
|
|
260
|
+
| `replay.scriptUrl` | `https://cdn.databuddy.cc/replay.2026-10-30.1.js` | Replay script URL override. Wins over `version`. A blank value falls back to the default. A custom URL loads without subresource integrity. |
|
|
261
|
+
| `configWhenGranted` | `{ apiUrl, clientId, disabled: false }` | Object set as `window.databuddyConfig` before the script loads with measurement allowed, and on each grant. c15t sets its `disabled` key from consent. |
|
|
262
|
+
| `configWhenDenied` | `{ apiUrl, clientId, disabled: true }` | With `loadMode: 'always'` only. Object set as `window.databuddyConfig` before the script loads without measurement permission, and on each refusal. c15t sets its `disabled` key from consent. |
|
|
263
|
+
| `apiUrl` | `https://basket.databuddy.cc` | Collection endpoint, set as `data-api-url`. |
|
|
264
|
+
| `version` | `'2026-10-30.1'` | Databuddy release to load from the CDN, for both `databuddy.js` and `replay.js`. Only the default version loads with subresource integrity. |
|
|
265
|
+
| `scriptUrl` | `https://cdn.databuddy.cc/databuddy.2026-10-30.1.js` | Loader URL override. Wins over `version`. A blank value falls back to the default. A custom URL loads without subresource integrity. |
|
|
266
|
+
|
|
267
|
+
## Turn off features you do not use
|
|
268
|
+
|
|
269
|
+
Databuddy collects some data unless the site turns it off. Set a `features`
|
|
270
|
+
switch to `false` to stop that collection, or to `true` to turn on a feature
|
|
271
|
+
Databuddy leaves off:
|
|
272
|
+
|
|
273
|
+
```ts
|
|
274
|
+
databuddy({
|
|
275
|
+
clientId: 'YOUR_CLIENT_ID',
|
|
276
|
+
features: {
|
|
277
|
+
interactions: false,
|
|
278
|
+
webVitals: false,
|
|
279
|
+
errors: false,
|
|
280
|
+
outgoingLinks: false,
|
|
281
|
+
},
|
|
282
|
+
});
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
| Switch | Databuddy default | What Databuddy collects |
|
|
286
|
+
| --------------- | ----------------- | -------------------------------------------- |
|
|
287
|
+
| `interactions` | On | Rage clicks, dead clicks and abandoned forms |
|
|
288
|
+
| `webVitals` | Off | FCP, LCP, INP, CLS, TTFB and FPS |
|
|
289
|
+
| `errors` | Off | JavaScript errors, with message and stack |
|
|
290
|
+
| `outgoingLinks` | Off | Clicks on links to other sites |
|
|
291
|
+
|
|
292
|
+
Each switch sets a `data-track-*` attribute on the script. An unset switch
|
|
293
|
+
sets no attribute, so Databuddy keeps its own default. Databuddy reads `data-*`
|
|
294
|
+
attributes after `window.databuddyConfig`, so a switch wins over the same key
|
|
295
|
+
in `configWhenGranted` or `configWhenDenied`.
|
|
261
296
|
|
|
262
297
|
## Loading and revocation
|
|
263
298
|
|
|
264
|
-
`
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
`
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
the
|
|
271
|
-
|
|
299
|
+
| `loadMode` | When `databuddy.js` loads | Before the visitor allows measurement |
|
|
300
|
+
| ----------------- | --------------------------------- | -------------------------------------------------------------------------- |
|
|
301
|
+
| `'after-consent'` | Only while measurement is allowed | No request to Databuddy and no storage |
|
|
302
|
+
| `'always'` | On every page, before consent | The script loads and stores a visitor ID while `disabled` stops it sending |
|
|
303
|
+
|
|
304
|
+
On revocation, the helper sets `window.databuddy.options.disabled` to `true`,
|
|
305
|
+
which stops the main tracker sending. It also sets `disabled: true` in
|
|
306
|
+
`window.databuddyConfig`, or replaces the object with `configWhenDenied` in
|
|
307
|
+
`'always'` mode. A `databuddy.js` download that finishes after the refusal then
|
|
308
|
+
starts disabled. With [`replay`](#record-sessions) on, the helper also stops
|
|
309
|
+
the recorder. c15t then reloads the page, which is the default
|
|
310
|
+
`reloadOnConsentRevoked` behavior. On a later grant, c15t sets both back to
|
|
311
|
+
`false`, and `window.databuddyConfig` to `configWhenGranted`.
|
|
312
|
+
|
|
313
|
+
With `loadMode: 'always'`, `databuddy.js` runs before the visitor chooses. It
|
|
314
|
+
stores its visitor ID in localStorage even while `disabled` is `true`.
|
|
315
|
+
Databuddy's own consent guidance is to delay loading until consent where prior
|
|
316
|
+
consent is required. Use `'always'` only where your policy allows that.
|
|
317
|
+
|
|
318
|
+
## Record sessions
|
|
319
|
+
|
|
320
|
+
Databuddy records sessions with a separate script, `replay.js`. Set `replay`
|
|
321
|
+
to have the helper load it:
|
|
322
|
+
|
|
323
|
+
```ts
|
|
324
|
+
databuddy({ clientId: 'YOUR_CLIENT_ID', replay: true });
|
|
325
|
+
```
|
|
272
326
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
327
|
+
`replay: true` keeps Databuddy's replay defaults, which mask page text and
|
|
328
|
+
typed input. The helper adds `replay.js` only while measurement is allowed,
|
|
329
|
+
including with `loadMode: 'always'`, and passes it the same `clientId` and
|
|
330
|
+
`apiUrl` as `databuddy.js`. `replay.js` does not read Databuddy's `disabled`
|
|
331
|
+
flag, so the helper calls `window.databuddyReplay.stop()` and removes the
|
|
332
|
+
script on revocation. It does the same when you turn `replay` off, remove the
|
|
333
|
+
helper or dispose the script loader. Recording stops without waiting for the
|
|
334
|
+
page reload. A later grant loads `replay.js` again.
|
|
335
|
+
|
|
336
|
+
`replay: { maskText: false }` records page text; typed input stays masked. Use
|
|
337
|
+
it only when your pages show no personal data, such as names, email addresses
|
|
338
|
+
or order details. Recordings would otherwise include that data. To change
|
|
339
|
+
masking for one element, add an attribute to it in your markup:
|
|
340
|
+
|
|
341
|
+
* `data-replay-unmask` records the text of an element that is safe to show.
|
|
342
|
+
* `data-replay-block` leaves the element out. The recording shows an empty box
|
|
343
|
+
of the same size.
|
|
344
|
+
|
|
345
|
+
`recordIframes: true` records your own embedded pages into the parent page's
|
|
346
|
+
recording. Set it on the framed page too. See
|
|
347
|
+
[Databuddy's session replay guide](https://www.databuddy.cc/docs/session-replay)
|
|
348
|
+
for its limits and the dashboard setting that turns replay off.
|
|
349
|
+
|
|
350
|
+
Do not also add `replay.js` to the page as a plain `<script>` tag. Outside
|
|
351
|
+
c15t, it starts recording on the visitor's first click, scroll or key press,
|
|
352
|
+
and uploads that recording even if the visitor has not chosen.
|
|
353
|
+
|
|
354
|
+
## Pinned script files
|
|
355
|
+
|
|
356
|
+
By default the helper loads date-versioned copies of `databuddy.js` and
|
|
357
|
+
`replay.js`, each with an `integrity` attribute. The browser checks the file
|
|
358
|
+
against that hash and does not run a file that has changed on the CDN. A c15t
|
|
359
|
+
release moves the pin to newer Databuddy files.
|
|
360
|
+
|
|
361
|
+
To load another Databuddy release, pass its `version`, such as
|
|
362
|
+
`version: '2026-10-01.1'`. c15t has no hash for other versions, so those files
|
|
363
|
+
load without an `integrity` attribute. A custom `scriptUrl` or
|
|
364
|
+
`replay.scriptUrl` also loads without one.
|
|
277
365
|
|
|
278
366
|
## Verify Databuddy
|
|
279
367
|
|
|
280
|
-
1. In a private window with an opt-in policy, load the page.
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
368
|
+
1. In a private window with an opt-in policy, load the page. DevTools Network
|
|
369
|
+
shows no request to `cdn.databuddy.cc` or `basket.databuddy.cc`, and
|
|
370
|
+
Application shows no `did` key in localStorage.
|
|
371
|
+
2. Click Reject, then reload. There are still no Databuddy requests.
|
|
372
|
+
3. Open Privacy settings and allow measurement. Without a reload,
|
|
373
|
+
`databuddy.js` loads from `cdn.databuddy.cc` with your `data-client-id` and
|
|
374
|
+
an `integrity` attribute, and
|
|
375
|
+
requests reach your `apiUrl`. With `replay` on, `replay.js` loads too. Move
|
|
376
|
+
the pointer or scroll, and a `POST` to `/replay` follows within a few
|
|
377
|
+
seconds.
|
|
289
378
|
4. Turn measurement off again and save. c15t reloads the page, and the new
|
|
290
|
-
page
|
|
379
|
+
page sends no request to `cdn.databuddy.cc` or `basket.databuddy.cc`.
|
|
291
380
|
|
|
292
381
|
See the [consent verification guide](../guides/verify-consent.md) for
|
|
293
382
|
navigation and hosting checks.
|