# Glossary

The terms these docs use, and the field names they correspond to in the API and the SDK.

## Evidence

**Certified Digital Record (CDR)**: one piece of consent evidence, made up of the visual record of a page, the signer telemetry, the consent facts derived from the page, and any fields you attached. Identified by `cdrId`, which is what you store alongside your lead. Retained for five years. In the API, CDRs are the resource at `/v1/cdrs/:cdrId`.

**Visual record**: the full-page image of what the person saw.

**Signer telemetry**: who submitted, as far as the network can say. IP address, the full observed IP chain, user agent, and geolocation based on IP. On the API response this is `signerTelemetry`. Timestamps are not in it; they are on the record itself, as `capturedAt` and `createdAt`.

**Disclosure**: the consent language on the page, marked with `data-ec-disclosure`. Its text is captured so the record is searchable and a buyer can confirm the disclosure named their company. Whitespace is collapsed and anything past 5,000 characters is truncated.

**Consent mechanism**: how consent was expressed for a given disclosure. Appears as `consentMechanism` on each disclosure, and only when a submission was detected. One of:

- `checkbox`: a bound consent checkbox was checked.
- `button_submission`: no consent checkbox related to this disclosure anywhere on the page, and the person submitted with a control that was not a refusal.
- `none_detected`: no affirmative consent found. A bound checkbox was unchecked or unreadable, a consent checkbox failed to bind to anything, or the control used to submit read as a refusal such as "No" or "Decline".

**Package CDR**: several CDRs from the same browser session, presented as one composite record. Useful when consent spans multiple pages and the individual records only tell the full story together. Identified by `packageId`. A grouping, not a separate billable thing.

## Your integration

**CID**: your organization's identifier, which the script tag needs. Shown as "Organization ID (CID)" under **Organization → Settings**. On the upload request it travels as `ec_cid`.

**`captureCDR()`**: the SDK function you call at the moment of submission. Returns a `cdrId` once the evidence is durably stored, which is the point at which you can rely on it existing.

**Session**: captures from the same browser tab, grouped. Stored in `sessionStorage`, so each tab is its own session and a session does not survive the tab closing. A session rolls over after 30 minutes of inactivity, and after 4 hours regardless. Identified by `sessionId`.

**Custom metadata**: your own fields, passed as `custom` and returned as `customMetadata`. Keys are limited to 100 characters, values must be primitives, arrays of primitives, or one-level objects, and the whole object must serialize to under 16,000 characters.

Keys with primitive values become filterable through the API, with one level of nesting indexed as `key.subkey`. Matching is exact, but case-insensitive and whitespace-normalized. Very long values and records with hundreds of fields may not be indexed in full, so keep the fields you intend to search by short.

**Redaction**: removing sensitive values from the capture before it leaves the browser. The raw value never reaches us, which makes redaction permanent and unrecoverable, including for you. Correct for payment details and government IDs; never correct for consent language, checkboxes, or submit buttons.

The attribute takes a value, and it is inherited by everything inside the element you put it on:

- `data-ec-redact="full"`: replaces the value or text entirely.
- `data-ec-redact="pan-last4"`: keeps only the last four digits of a card or account number.
- `data-ec-redact="none"`: the same as not tagging the element at all. It does not opt a nested element back out of a redaction it inherits.

A bare `data-ec-redact` with no value redacts nothing. `data-expressconsent-redact` is accepted as a long form.

## Moving evidence between companies

**Lead generator**: the company running the website that captures the evidence. Called the *producer* of a CDR, and appears as `producerOrgId` when you receive one from someone else.

**Lead buyer**: the company that receives a lead and needs the consent evidence with it. Makes one API request against a share URL to pull the record into their own account.

**Share URL**: a single-use-per-organization URL that grants another organization access to a CDR. Generated as you capture, or afterwards from your server.

**Collected**: whether *your* organization has download access to a CDR. Per-organization, not a property of the record, so two organizations looking at the same CDR can see different values. Only when it is true does the API return a `downloadUrl`.

**Download URL**: a short-lived signed link to the visual record, valid about five minutes. Store the `cdrId` and request a fresh URL when you need one; never store the URL itself.

## Next

- [captureCDR()](https://app.expressconsent.com/docs/reference/capture-cdr): Capture a CDR, attach metadata, and generate a share URL.
- [Access and collection](https://app.expressconsent.com/docs/concepts/access): Which organization can download a CDR, which one is charged for it, and how access moves when evidence is shared.
