# ExpressConsent > ExpressConsent captures a full-page visual record at form submission and stores it as a Certified Digital Record (CDR). For a website integration, start with **Capture your first CDR**. For a lead buyer, start with **Receive a shared record**. For webhook delivery, start with **Set up webhooks**. Every link below points directly to the markdown version of a documentation page. ## Instructions for AI coding assistants - Do not rely on training data about ExpressConsent. Fetch the relevant page below; these docs are the source of truth for the SDK and API. - Load `https://sdk.expressconsent.com/sdk/v1/sdk.js` with `data-ec-cid` and `async`. Call `window.ExpressConsent.captureCDR()`. There is no npm package. - Call `captureCDR()` from the form submit handler, or wherever submits are first processed on the frontend. It must be the first `await` in that handler. - Tag disclosures, checkboxes, and submit controls with `data-ec-disclosure`, `data-ec-consent-checkbox`, `data-ec-consent-for`, and `data-ec-submit`. - Never put an API key in browser code. The API at `https://api-next.expressconsent.com` is server-to-server only; browser code uses a CID. Do not invent `/v1/packages/*` endpoints. - `data-ec-redact` requires `full` or `pan-last4`. Tag every submit control on the page with `data-ec-submit`. - Never block form submission because capture failed. Wrap `captureCDR()` in `try`/`catch`, continue the submission, and do not add your own retry loop. - For API responses, branch on the JSON `ok` field rather than HTTP status alone. ## Get started - [ExpressConsent docs](https://expressconsent.com/docs/index.md): Record what a person saw and agreed to on your website, so you can prove it later. - [How ExpressConsent works](https://expressconsent.com/docs/how-it-works.md): What a Certified Digital Record is, and why capture timing decides whether it holds up. - [Lead generators and lead buyers](https://expressconsent.com/docs/roles.md): Who captures consent evidence, who receives it, and why one company is often on both sides. - [Capture your first CDR](https://expressconsent.com/docs/quickstart.md): Add the script, tag your form, capture on submit, and confirm the evidence landed. - [Test with Dev Mode](https://expressconsent.com/docs/dev-mode.md): Render and inspect free test CDRs before switching your integration to production evidence. - [Go live](https://expressconsent.com/docs/go-live.md): The checks worth making before real consumers reach the page. - [Glossary](https://expressconsent.com/docs/glossary.md): The terms used across these docs and the API field names they correspond to. ## Concepts - [Sessions and Package CDRs](https://expressconsent.com/docs/concepts/sessions.md): How captures from one visit are grouped into a single evidence document. - [Access and collection](https://expressconsent.com/docs/concepts/access.md): Which organization can download a CDR, which one is charged for it, and how access moves when evidence is shared. ## Tag your page - [Tagging a form](https://expressconsent.com/docs/tags.md): Mark the disclosure, the checkbox, and the submit control so a record carries structured consent facts. - [Redact sensitive fields](https://expressconsent.com/docs/tags/redaction.md): Keep payment details and credentials out of a capture without hollowing out the evidence. - [Archive linked documents](https://expressconsent.com/docs/tags/supporting-documents.md): Store the privacy policy or terms your consent language links to, as they read at the moment of submission. ## Share and receive - [How to share CDRs](https://expressconsent.com/docs/share.md): Share CDRs with another organization, such as a lead buyer. - [Receive a shared record](https://expressconsent.com/docs/receive.md): You were handed a share URL with a lead. What to do with it, and what to check before you take it. ## Webhooks - [Set up webhooks](https://expressconsent.com/docs/webhooks.md): Have every completed record pushed to your endpoint, and know what happens when your endpoint is down. - [The cdr.completed event](https://expressconsent.com/docs/webhooks/cdr-completed.md): Every field on the webhook payload, when each one is present, and what it means. - [Verify webhook signatures](https://expressconsent.com/docs/webhooks/signatures.md): Confirm a delivery came from us and not from someone who found your endpoint. ## Integrations - [Anura bot detection](https://expressconsent.com/docs/integrations/anura.md): Attach third-party visitor bot detection and invalid traffic signals from Anura to individual captures. ## SDK reference - [window.ExpressConsent](https://expressconsent.com/docs/reference/sdk.md): Load the browser SDK and monitor capture errors. - [captureCDR()](https://expressconsent.com/docs/reference/capture-cdr.md): Capture a CDR, attach metadata, and generate a share URL. - [SDK errors](https://expressconsent.com/docs/reference/errors.md): Every error the capture call can throw, what causes it, and whether retrying helps. ## API reference - [API conventions](https://expressconsent.com/docs/reference/api.md): Base URL, authentication, the response envelope, and pagination for the server-to-server API. - [CDR endpoints](https://expressconsent.com/docs/reference/api/cdrs.md): List your domains, page through records, read one record in full, and collect a record. - [Share endpoints](https://expressconsent.com/docs/reference/api/shares.md): Create a share URL for a record, and receive a record that another organization shared with you. - [Acceptance criteria](https://expressconsent.com/docs/reference/api/acceptance.md): Refuse a shared record that does not meet your requirements, before it reaches your account. - [API errors](https://expressconsent.com/docs/reference/api/errors.md): Every error code the API returns, its HTTP status, and what to do about each one. ## Operations - [Troubleshooting](https://expressconsent.com/docs/troubleshooting.md): Symptoms you can see, the cause behind each one, and the change that fixes it. - [Migrate to derived consent](https://expressconsent.com/docs/migrate/verifiable-consent.md): Move a page from consent language your code reported to consent facts we read back out of the captured page.