# Individual Modules Catalog

<WebSDK2 />

The Incode Web SDK is composed of small, single-purpose modules. Each module ships independently and exposes (depending on the module) a web component, a headless Manager, or both.

This page is the **complete catalog**. For deep-dives, see the per-module reference pages linked below where they exist; otherwise consult [Headless Mode](doc:web-sdk-2-headless-mode) for headless API patterns and [Web Components](doc:web-sdk-2-web-components) for the consumer-element API surface.

> **New here?** Most modules follow one of five implementation patterns (form-based, camera-capture, backend-process, document-signing, composite). [Module Patterns](doc:web-sdk-2-module-patterns) documents each pattern's lifecycle once so per-module pages can stay focused on what's actually unique. Read that first if you're orienting on the SDK.

## How to read this catalog

| Column               | Meaning                                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Web component**    | If present, registered automatically when you import the UI subpath. Use as a custom element (e.g. `<incode-phone>`).                 |
| **Headless manager** | If present, the factory function for the module's headless API (subscribe to state, drive the state machine yourself, render any UI). |
| **Core import**      | Where the module's TypeScript types and headless API live.                                                                            |
| **UI import**        | Side-effect import that registers the web component and lets you import its CSS. Empty when the module is headless-only.              |

For a tour of how to combine these into a full integration, start with [Getting Started](doc:web-sdk-2-getting-started).

***

## Identity capture

| Module               | Web component               | Headless manager               | Core import                         | UI import                          |
| -------------------- | --------------------------- | ------------------------------ | ----------------------------------- | ---------------------------------- |
| **Selfie**           | `<incode-selfie>`           | `createSelfieManager`          | `@incodetech/core/selfie`           | `@incodetech/web/selfie`           |
| **ID document**      | `<incode-id>`               | `createIdCaptureManager`       | `@incodetech/core/id`               | `@incodetech/web/id`               |
| **ID OCR**           | —                           | `createIdOcrManager`           | `@incodetech/core/id-ocr`           | —                                  |
| **CPF OCR**          | —                           | `createCpfOcrManager`          | `@incodetech/core/cpf-ocr`          | `@incodetech/web/cpf-ocr`          |
| **Document capture** | `<incode-document-capture>` | `createDocumentCaptureManager` | `@incodetech/core/document-capture` | `@incodetech/web/document-capture` |
| **Document upload**  | —                           | `createDocumentUploadManager`  | `@incodetech/core/document-upload`  | —                                  |
| **Face match**       | `<incode-face-match>`       | `createFaceMatchManager`       | `@incodetech/core/face-match`       | `@incodetech/web/face-match`       |

* **Selfie** — face capture with ML-powered liveness detection. Supports single-frame, multi-modal, and video-liveness modes. Validates against masks, glasses, headwear, closed eyes, lighting. See [Module: Selfie](doc:web-sdk-2-module-selfie-1).
* **ID document** — government ID, passport, and driver's-license capture with quality checks (blur, glare, perspective). See [Module: ID](doc:web-sdk-2-module-id-capture).
* **ID OCR** — extracts structured data from a captured ID image (name, DOB, address, ID number, etc.). See [Module: ID OCR](doc:web-sdk-2-module-id-ocr).
* **CPF OCR** — Brazilian-specific OCR variant that extracts the CPF number from a captured ID. Ships as a Preact component plus headless manager; rendered automatically by `<incode-flow>` when `useCPF: true` is set on the flow config. No registered web-component tag — embed the Preact `CpfOcr` component or drive the headless manager directly.
* **Document capture** — generic document capture (utility bills, lease agreements, tax docs) with multi-page support and file-picker fallback. See [Module: Document Capture](doc:web-sdk-2-module-document-capture).
* **Document upload** — file-picker-only upload path for documents that can't be captured live (e.g., third ID). See [Module: Document Upload](doc:web-sdk-2-module-document-upload).
* **Face match** — compares a captured selfie against the face on a previously captured ID and returns a match score. See [Module: Face Match](doc:web-sdk-2-module-face-match).

## Contact verification

| Module    | Web component    | Headless manager     | Core import              | UI import               |
| --------- | ---------------- | -------------------- | ------------------------ | ----------------------- |
| **Phone** | `<incode-phone>` | `createPhoneManager` | `@incodetech/core/phone` | `@incodetech/web/phone` |
| **Email** | `<incode-email>` | `createEmailManager` | `@incodetech/core/email` | `@incodetech/web/email` |

* **Phone** — phone-number capture with optional SMS OTP verification. See [Module: Phone](doc:web-sdk-2-module-phone).
* **Email** — email capture with optional OTP verification. See [Module: Email](doc:web-sdk-2-module-email).

## Compliance & consent

| Module                     | Web component              | Headless manager                    | Core import                               | UI import                         |
| -------------------------- | -------------------------- | ----------------------------------- | ----------------------------------------- | --------------------------------- |
| **Consent**                | `<incode-consent>`         | `createConsentManager`              | `@incodetech/core/consent`                | `@incodetech/web/consent`         |
| **Mandatory consent**      | —                          | `createMandatoryConsentManager`     | `@incodetech/core/mandatory-consent`      | —                                 |
| **Geolocation**            | `<incode-geolocation>`     | `createGeolocationManager`          | `@incodetech/core/geolocation`            | `@incodetech/web/geolocation`     |
| **Antifraud**              | `<incode-antifraud>`       | `createAntifraudManager`            | `@incodetech/core/antifraud`              | `@incodetech/web/antifraud`       |
| **Watchlist**              | —                          | `createWatchlistManager`            | `@incodetech/core/watchlist`              | —                                 |
| **Custom watchlist**       | —                          | `createCustomWatchlistManager`      | `@incodetech/core/custom-watchlist`       | —                                 |
| **Watchlist for business** | —                          | `createWatchlistForBusinessManager` | `@incodetech/core/watchlist-for-business` | —                                 |
| **Government validation**  | —                          | `createGovernmentValidationManager` | `@incodetech/core/government-validation`  | —                                 |
| **CURP validation**        | `<incode-curp-validation>` | `createCurpValidationManager`       | `@incodetech/core/curp-validation`        | `@incodetech/web/curp-validation` |

* **Consent** — capture user consent with optional checkboxes for terms, privacy, marketing. See [Module: Consent](doc:web-sdk-2-module-consent).
* **Mandatory consent** — strict consent flow that gates downstream modules until the user accepts. State and methods documented inline in [Module: ID → Mandatory Consent State Properties](doc:web-sdk-2-module-id-capture#mandatory-consent-state-properties).
* **Geolocation** — captures the user's coordinates with a permission prompt; useful for jurisdictional rules. See [Module: Geolocation](doc:web-sdk-2-module-geolocation).
* **Antifraud** — runs antifraud signal collection in the background. See [Module: Antifraud](doc:web-sdk-2-module-antifraud).
* **Watchlist** / **Custom watchlist** / **Watchlist for business** — sanctions, PEP, and custom-list screening. See [Module: Watchlist](doc:web-sdk-2-module-watchlist), [Module: Custom Watchlist](doc:web-sdk-2-module-custom-watchlist), [Module: Watchlist for Business](doc:web-sdk-2-module-watchlist-for-business).
* **Government validation** — validates submitted ID data against government registries (with optional OTP). See [Module: Government Validation](doc:web-sdk-2-module-gov-validation-1).
* **CURP validation** — validates Mexican CURP identity numbers (enter / confirm / generate). See [Module: CURP Validation](doc:web-sdk-2-module-curp-validation).

## Authentication & identity reuse

| Module             | Web component             | Headless manager              | Core import                       | UI import                        |
| ------------------ | ------------------------- | ----------------------------- | --------------------------------- | -------------------------------- |
| **Authentication** | —                         | `createAuthenticationManager` | `@incodetech/core/authentication` | —                                |
| **Identity reuse** | `<incode-identity-reuse>` | `createIdentityReuseManager`  | `@incodetech/core/identity-reuse` | `@incodetech/web/identity-reuse` |

* **Authentication** — re-authenticate a returning user via fresh selfie capture matched against their stored biometric. Same camera-capture flow as Selfie. See [Module: Authentication](doc:web-sdk-2-module-authentication).
* **Identity reuse** — recognizes a returning user via face match against their existing on-file biometric record and lets them choose to reuse the existing identity. See [Module: Identity Reuse](doc:web-sdk-2-module-identity-reuse).

## Signing

| Module                   | Web component                   | Headless manager                   | Core import                             | UI import                              |
| ------------------------ | ------------------------------- | ---------------------------------- | --------------------------------------- | -------------------------------------- |
| **Signature**            | `<incode-signature>`            | `createSignatureManager`           | `@incodetech/core/signature`            | `@incodetech/web/signature`            |
| **Electronic signature** | `<incode-electronic-signature>` | `createElectronicSignatureManager` | `@incodetech/core/electronic-signature` | `@incodetech/web/electronic-signature` |
| **AE signature**         | `<incode-ae-signature>`         | `createAeSignatureManager`         | `@incodetech/core/ae-signature`         | `@incodetech/web/ae-signature`         |
| **QE signature**         | `<incode-qe-signature>`         | `createQeSignatureManager`         | `@incodetech/core/qe-signature`         | `@incodetech/web/qe-signature`         |

* **Signature** — handwritten signature capture on a touch surface or mouse-driven canvas. See [Module: Signature](doc:web-sdk-2-module-signature).
* **Electronic signature**, **AE signature**, **QE signature** — eIDAS-aligned signing flows. AE and QE are thin wrappers around Electronic Signature (same state machine, different consent keys). All three covered in [Module: Electronic Signature](doc:web-sdk-2-module-electronic-signature).

## Composite & orchestration

| Module                        | Web component                        | Headless manager                                              | Core import                                  | UI import                                   |
| ----------------------------- | ------------------------------------ | ------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------- |
| **Flow (orchestrator)**       | `<incode-flow>`                      | `createOrchestratedFlowManager`, `createFlowManager` (legacy) | `@incodetech/core/flow`                      | `@incodetech/web/flow`                      |
| **Workflow**                  | `<incode-workflow>`                  | `createWorkflowManager`                                       | `@incodetech/core/workflow`                  | `@incodetech/web/workflow`                  |
| **eKYC**                      | `<incode-ekyc>`                      | `createEkycManager`                                           | `@incodetech/core/ekyc`                      | `@incodetech/web/ekyc`                      |
| **eKYB**                      | `<incode-ekyb>`                      | `createEkybManager`                                           | `@incodetech/core/ekyb`                      | `@incodetech/web/ekyb`                      |
| **Cross-document data match** | `<incode-cross-document-data-match>` | `createCrossDocumentDataMatchManager`                         | `@incodetech/core/cross-document-data-match` | `@incodetech/web/cross-document-data-match` |
| **Custom fields**             | —                                    | `createCustomFieldsManager`                                   | `@incodetech/core/custom-fields`             | —                                           |
| **Dynamic forms**             | —                                    | `createDynamicFormsManager`                                   | `@incodetech/core/dynamic-forms`             | —                                           |
| **Trust graph**               | —                                    | `createTrustGraphManager`                                     | `@incodetech/core/trust-graph`               | —                                           |

* **Flow (orchestrator)** — drives a dashboard-configured sequence of modules end-to-end. The default for most integrations. `createOrchestratedFlowManager` is the modern API; `createFlowManager` is legacy and stays for back-compat. See [IncodeFlow Component](doc:web-sdk-2-incodeflow-component) and [Headless Mode → Orchestrated Flow Manager](doc:web-sdk-2-headless-mode#orchestrated-flow-manager).
* **Workflow** — server-driven multi-step workflows where step ordering and configuration come from the backend per session, including custom-module callbacks. See [Module: Workflow](doc:web-sdk-2-module-workflow).
* **eKYC** — Know Your Customer form module: collects identity verification data (name, DOB, address, etc.) with dashboard-driven field schema. See [Module: eKYC](doc:web-sdk-2-module-ekyc).
* **eKYB** — Know Your Business form module: business name, address, tax ID, plus UBOs. Country-aware schema. See [Module: eKYB](doc:web-sdk-2-module-ekyb).
* **Cross-document data match** — cross-references data across multiple captured documents to flag inconsistencies. See [Module: Cross-Document Data Match](doc:web-sdk-2-module-cross-doc-match).
* **Custom fields** — collect arbitrary structured data (text, number, date, boolean) from a dashboard-defined schema. See [Module: Custom Fields](doc:web-sdk-2-module-custom-fields).
* **Dynamic forms** — server-driven multi-screen form module. Screen schema, fields, and validation rules come from the backend per session — useful for jurisdiction-specific questionnaires that change without an SDK release. Typically driven by `<incode-flow>` (no public UI subpath); use the headless manager directly when you're stepping through forms outside the orchestrator.
* **Trust graph** — backend-only risk-graph analysis. The orchestrator renders an empty shell while the server runs the analysis; the module advances to `finished` automatically once the backend reports done. No UI element, no config (`TrustGraphConfig = Record<string, never>`).

## Utility

| Module                 | Web component                 | Headless manager                | Core import                           | UI import                            |
| ---------------------- | ----------------------------- | ------------------------------- | ------------------------------------- | ------------------------------------ |
| **Home**               | —                             | `createHomeManager`             | `@incodetech/core/home`               | —                                    |
| **Redirect to mobile** | `<incode-redirect-to-mobile>` | `createRedirectToMobileManager` | `@incodetech/core/redirect-to-mobile` | `@incodetech/web/redirect-to-mobile` |

* **Home** — the SDK's built-in home screen presented before a flow starts. Wired automatically by `<incode-flow>` when `enableHome: true`. See [Module: Home](doc:web-sdk-2-module-home).
* **Redirect to mobile** — generates a QR code and a one-time URL that hands the user off from a desktop browser to their phone, where camera-bearing modules continue. See [Module: Redirect to Mobile](doc:web-sdk-2-module-redirect-to-mobile).

***

## Helpers used by every integration

These aren't modules per se — they're SDK-wide helpers you'll hit on day one.

| Helper                      | Import                           | What it does                                                                                                                                 |
| --------------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `setup`                     | `@incodetech/core`               | Configures the SDK (apiURL, token, optional WASM/i18n/UI options). Call before any module.                                                   |
| `createSession`             | `@incodetech/core/session`       | Opens a verification session, returns a session token. Production: call from your backend.                                                   |
| `warmupWasm`                | `@incodetech/core/wasm`          | Pre-warms the WASM ML pipelines (selfie, idCapture). Optional but reduces first-frame latency. See [WASM Configuration](doc:web-sdk-2-wasm). |
| `getRequiredWasmPipelines`  | `@incodetech/core/flow`          | Given the orchestrator's resolved flow, returns just the pipelines needed (so you don't warm up models you won't use).                       |
| `subscribeEvent`            | `@incodetech/core/events`        | Subscribes to the SDK's raw analytics event stream. See [Event Callbacks](doc:web-sdk-2-event-callbacks).                                    |
| `createXxxManagerFromActor` | `@incodetech/core/extensibility` | For advanced cases where you supply a pre-built XState actor (e.g., to mock services in tests or override actors in production).             |

## Per-module reference pages

Every module has a dedicated reference page covering its tag, properties, configuration, state machine, and API methods. Pages cross-reference [Module Patterns](doc:web-sdk-2-module-patterns) for the shared lifecycle (load / subscribe / reset / stop and pattern-specific transitions) so they stay focused on what's module-specific.

**Identity capture:** [Selfie](doc:web-sdk-2-module-selfie-1) · [ID Capture](doc:web-sdk-2-module-id-capture) · [ID OCR](doc:web-sdk-2-module-id-ocr) · [Document Capture](doc:web-sdk-2-module-document-capture) · [Document Upload](doc:web-sdk-2-module-document-upload) · [Face Match](doc:web-sdk-2-module-face-match)

**Contact verification:** [Phone](doc:web-sdk-2-module-phone) · [Email](doc:web-sdk-2-module-email)

**Compliance & consent:** [Consent](doc:web-sdk-2-module-consent) · [Geolocation](doc:web-sdk-2-module-geolocation) · [Antifraud](doc:web-sdk-2-module-antifraud) · [Watchlist](doc:web-sdk-2-module-watchlist) · [Custom Watchlist](doc:web-sdk-2-module-custom-watchlist) · [Watchlist for Business](doc:web-sdk-2-module-watchlist-for-business) · [Government Validation](doc:web-sdk-2-module-gov-validation-1) · [CURP Validation](doc:web-sdk-2-module-curp-validation)

**Authentication & identity reuse:** [Authentication](doc:web-sdk-2-module-authentication) · [Identity Reuse](doc:web-sdk-2-module-identity-reuse)

**Signing:** [Signature](doc:web-sdk-2-module-signature) · [Electronic Signature (covers AE / QE variants)](doc:web-sdk-2-module-electronic-signature)

**Composite & orchestration:** [IncodeFlow Component](doc:web-sdk-2-incodeflow-component) · [Workflow](doc:web-sdk-2-module-workflow) · [eKYC](doc:web-sdk-2-module-ekyc) · [eKYB](doc:web-sdk-2-module-ekyb) · [Cross-Document Data Match](doc:web-sdk-2-module-cross-doc-match) · [Custom Fields](doc:web-sdk-2-module-custom-fields)

**Utility:** [Home](doc:web-sdk-2-module-home) · [Redirect to Mobile](doc:web-sdk-2-module-redirect-to-mobile)

For niche fields not covered on a page, the TypeScript declarations shipped with each `@incodetech/core/<name>` subpath are authoritative — your editor's go-to-definition (or hover docs) takes you straight to them. If you need help, contact [support@incode.com](mailto:support@incode.com).
