---
title: "Individual Modules Catalog"
url: "https://developer.incode.com/sdk-reference/web-sdk-2-individual-modules/"
section: "sdk-reference"
group: "Incode Web SDK 2 Reference / Web SDK 2 Individual Modules"
version: "v1.1"
status: "live"
---
# Individual Modules Catalog

:::note
  This guide is specific to Web SDK 2.0. If you are still using 1.x, you can find documentation [here](/sdk-reference/web-sdk-reference/).  Contact your Incode Representative for upgrade information and check if you are a candidate for this upgrade. <br /><br />Full rollout to all clients still TBD.
:::

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](/sdk-reference/web-sdk-2-headless-mode/) for headless API patterns and [Web Components](/sdk-reference/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](/sdk-reference/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](/sdk-reference/web-sdk-2-getting-started/).

## Flow-backed standalone modules

Standalone modules can read their configuration from the active Flow. This lets a host render modules such as ID, Selfie, or Phone without copying their configuration into application code.

> **Use **`setup()`** from **`@incodetech/web`** for standalone modules.** Both entry points support `flow`; standalone modules load the dashboard theme only from web setup. Set up through `@incodetech/core` instead and these modules render unbranded, with no error — see [Which `setup()` do I call?](/sdk-reference/web-sdk-2-reference/#which-setup-do-i-call).

Flow configuration and the session theme are independent:

- `flow` controls where standalone module configuration comes from and whether it is prefetched.
- `theme` controls whether the session theme is fetched and applied.

### ID followed by Selfie

The examples below preload one Flow, disable the session theme, and render the registered ID and Selfie web components directly in JSX. Both modules intentionally omit `config`.

#### React 19

React 19 passes function-valued custom element properties directly:

```jsx
import { setup } from '@incodetech/web';
import '@incodetech/web/id';
import '@incodetech/web/selfie';
import { useEffect, useState } from 'react';

export function Verification() {
  const [step, setStep] = useState('loading');

  useEffect(() => {
    void setup({
      apiURL,
      token,
      flow: {
        preload: true,
      },
      theme: false,
    }).then(() => setStep('id'));
  }, []);

  if (step === 'id') {
    return (
      <incode-id
        onFinish={() => setStep('selfie')}
        onError={(error) => console.error('ID failed', error)}
      />
    );
  }

  if (step === 'selfie') {
    return (
      <incode-selfie
        onFinish={() => setStep('finished')}
        onError={(error) => console.error('Selfie failed', error)}
      />
    );
  }

  return null;
}
```

#### React 18

React 18 renders custom elements directly, but function-valued properties must be assigned through refs:

```jsx
import { setup } from '@incodetech/web';
import '@incodetech/web/id';
import '@incodetech/web/selfie';
import { useEffect, useRef, useState } from 'react';

function ID({ onFinish, onError }) {
  const ref = useRef(null);

  useEffect(() => {
    const element = ref.current;
    if (!element) {
      return;
    }
    element.onFinish = onFinish;
    element.onError = onError;

    return () => {
      element.onFinish = undefined;
      element.onError = undefined;
    };
  }, [onError, onFinish]);

  return <incode-id ref={ref} />;
}

function Selfie({ onFinish, onError }) {
  const ref = useRef(null);

  useEffect(() => {
    const element = ref.current;
    if (!element) {
      return;
    }
    element.onFinish = onFinish;
    element.onError = onError;

    return () => {
      element.onFinish = undefined;
      element.onError = undefined;
    };
  }, [onError, onFinish]);

  return <incode-selfie ref={ref} />;
}

export function Verification() {
  const [step, setStep] = useState('loading');

  useEffect(() => {
    void setup({
      apiURL,
      token,
      flow: {
        preload: true,
      },
      theme: false,
    }).then(() => setStep('id'));
  }, []);

  if (step === 'id') {
    return (
      <ID
        onFinish={() => setStep('selfie')}
        onError={(error) => console.error('ID failed', error)}
      />
    );
  }

  if (step === 'selfie') {
    return (
      <Selfie
        onFinish={() => setStep('finished')}
        onError={(error) => console.error('Selfie failed', error)}
      />
    );
  }

  return null;
}
```

`setup` fetches Flow once and waits for it. ID reads the first `ID` module configuration from the cached Flow. Selfie later reads the first `SELFIE` configuration from the same cache, so mounting Selfie does not issue another Flow request. `theme: false` ensures that Flow configuration is used without changing the host application's colors, logo, subtitle, or footer.

The session token must belong to a Flow containing both `ID` and `SELFIE`. If either module is missing, that module reports an error instead of falling back to library defaults.

### Setup options

| Setup option                                 | Setup request | Supplied module `config`       | Omitted module `config` |
| -------------------------------------------- | ------------- | ------------------------------ | ----------------------- |
| Omit `flow` or use `flow: {}`                | None          | Used verbatim                  | Loaded from Flow        |
| `flow: false`                                | None          | Used verbatim                  | Error                   |
| `flow: { preload: true }`                    | Flow          | Used verbatim                  | Loaded from cached Flow |
| `flow: { mergeConfig: true }`                | None          | Merged over Flow on mount      | Loaded from Flow        |
| `flow: { preload: true, mergeConfig: true }` | Flow          | Merged over prefetched Flow    | Loaded from cached Flow |
| Omit `theme` or use `theme: {}`              | None          | Existing theme remains         | Theme loads on mount    |
| `theme: false`                               | None          | Session theme never applies    | Session theme disabled  |
| `theme: { preload: true }`                   | Theme         | Session theme applies in setup | Session theme applies   |

Flow and theme requests are independent. For example, `flow: { preload: true }, theme: false` preloads module configuration without fetching or applying the session theme.

### Override part of the Flow configuration

Enable merging when the Flow should provide defaults but the host needs to override selected fields. In React 19:

```jsx
await setup({
  apiURL,
  token,
  flow: {
    preload: true,
    mergeConfig: true,
  },
  theme: false,
});

<incode-selfie config={{ showTutorial: false }} />;
```

Objects merge recursively, arrays are replaced, and defined local values including `null` win. Without `mergeConfig: true`, any supplied `config` is used verbatim and Flow is not consulted for that module.

### Disable Flow configuration

Use a complete local config or a supported external manager when Flow-backed configuration is disabled. In React 19:

```jsx
await setup({
  apiURL,
  token,
  flow: false,
  theme: false,
});

<incode-id config={localIdConfig} />;
```

Rendering `<incode-id />` in this mode reports `Flow-backed module configuration is disabled; provide config or manager`.

Standalone Flow resolution requires an active Flow session. A Workflow-only token cannot supply standalone Flow configuration. Modules rendered inside Flow or Workflow orchestration already receive authoritative configuration from their orchestrator and do not use this standalone fallback.

Direct Core setup supports the same `flow` option and semantics. The `theme` option belongs to Web setup because Core does not render or apply UI themes.

***

## Identity capture

| Module               | Web component               | Headless manager                    | Core import                         | UI import                          |
| -------------------- | --------------------------- | ----------------------------------- | ----------------------------------- | ---------------------------------- |
| **Selfie**           | `<incode-selfie>`           | `createSelfieManager`               | `@incodetech/core/selfie`           | `@incodetech/web/selfie`           |
| **Video selfie**     | `<incode-video-selfie>`     | `createVideoSelfieRecordingManager` | `@incodetech/core/video-selfie`     | `@incodetech/web/video-selfie`     |
| **Personhood**       | Unavailable in 2.3.0        | —                                  | —                                  | —                                  |
| **ID document**      | `<incode-id>`               | `createIdCaptureManager`            | `@incodetech/core/id`               | `@incodetech/web/id`               |
| **ID OCR**           | —                           | `createIdOcrManager`                | `@incodetech/core/id-ocr`           | —                                  |
| **Document capture** | `<incode-document-capture>` | `createDocumentCaptureManager`      | `@incodetech/core/document-capture` | `@incodetech/web/document-capture` |
| **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](/sdk-reference/web-sdk-2-module-selfie-1/).
- **Video selfie**: selfie, ID, and optional voice-consent capture in one continuous camera session, recorded on-device and uploaded alongside the captures. See [Module: Video Selfie](/sdk-reference/web-sdk-2-module-video-selfie/).
- **Personhood:** unavailable in Web SDK 2.3.0. Before upgrading, remove Personhood imports and `incode-personhood-widget` usage from your integration.
- **ID document**: government ID, passport, and driver's-license capture with quality checks (blur, glare, perspective). See [Module: ID](/sdk-reference/web-sdk-2-module-id-capture/).
- **ID OCR**: extracts structured data from a captured ID image (name, DOB, address, ID number, etc.). With `cpfOnly: true`, or when `<incode-flow>` receives `useCPF: true`, it shows and validates only the CPF document number field. See [Module: ID OCR](/sdk-reference/web-sdk-2-module-id-ocr/).
- **Document capture**: generic document capture (utility bills, lease agreements, tax docs) with multi-page support and file-picker fallback. See [Module: Document Capture](/sdk-reference/web-sdk-2-module-document-capture/).
- **Face match**: compares a captured selfie against the face on a previously captured ID and returns a match score. See [Module: Face Match](/sdk-reference/web-sdk-2-module-face-match/).

### Video selfie step order

Standalone Video Selfie integrations can set `config.steps`. The array controls
the tutorial, camera order, WASM pipelines, progress UI, and recording manager.

```ts
import '@incodetech/web/video-selfie';
import type { VideoSelfie } from '@incodetech/web/video-selfie';
import type { ComponentProps } from 'preact';
import type {
  VideoSelfieConfig,
  VideoSelfieStep,
} from '@incodetech/core/video-selfie';

const steps: VideoSelfieStep[] = ['selfie', 'frontId', 'backId'];

export function mountVideoSelfie(config: VideoSelfieConfig) {
  const element = document.createElement('incode-video-selfie') as HTMLElement & ComponentProps<typeof VideoSelfie>;
  element.config = { ...config, steps };
  document.body.append(element);
}
```

The valid values are `selfie`, `frontId`, `backId`, `poa`, `questions`, and
`speech`. The SDK preserves the supplied order. The list can omit optional
steps, such as `backId`, `poa`, `questions`, or `speech`.

If `steps` is absent or empty, the SDK derives the default order from the
Video Selfie configuration. Flow and Workflow `VIDEO_ONBOARDING` modules keep
this default behavior.

The headless manager also accepts a top-level `steps` value. If both lists are
nonempty, the manager-level value takes precedence over `config.steps`.

## 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](/sdk-reference/web-sdk-2-module-phone/).
- **Email**: email capture with optional OTP verification. See [Module: Email](/sdk-reference/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** | `<incode-government-validation>` | `createGovernmentValidationManager` | `@incodetech/core/government-validation` | `@incodetech/web/government-validation` |
| **CURP validation**        | `<incode-curp-validation>` | `createCurpValidationManager`       | `@incodetech/core/curp-validation`        | `@incodetech/web/curp-validation` |
| **Fiscal QR**              | `<incode-fiscal-qr>`       | `createFiscalQrManager`             | `@incodetech/core/fiscal-qr`              | `@incodetech/web/fiscal-qr`       |

- **Consent**: capture user consent with optional checkboxes for terms, privacy, marketing. See [Module: Consent](/sdk-reference/web-sdk-2-module-consent/).
- **Mandatory consent**: strict consent flow that gates downstream modules until the user accepts. See [Standalone mandatory consent](#standalone-mandatory-consent). The embedded ID consent state has a separate API.
- **Geolocation**: captures the user's coordinates with a permission prompt; useful for jurisdictional rules. See [Module: Geolocation](/sdk-reference/web-sdk-2-module-geolocation/).
- **Antifraud**: runs antifraud signal collection in the background. See [Module: Antifraud](/sdk-reference/web-sdk-2-module-antifraud/).
- **Watchlist** / **Custom watchlist** / **Watchlist for business**: sanctions, PEP, and custom-list screening. See [Module: Watchlist](/sdk-reference/web-sdk-2-module-watchlist/), [Module: Custom Watchlist](/sdk-reference/web-sdk-2-module-custom-watchlist/), [Module: Watchlist for Business](/sdk-reference/web-sdk-2-module-watchlist-for-business/).
- **Government validation**: submits ID data for backend government validation and displays a loader before advancing; it has no OTP UI. See [Module: Government Validation](/sdk-reference/web-sdk-2-module-gov-validation-1/).
- **CURP validation**: validates Mexican CURP identity numbers (enter / confirm / generate). See [Module: CURP Validation](/sdk-reference/web-sdk-2-module-curp-validation/).
- **Fiscal QR**: scans a Mexican SAT fiscal QR code, resolves its URL, and submits the fiscal data for verification. No dedicated reference page yet. It takes **no configuration** — `FiscalQrConfig` is empty, because the backend sends no settings for this step. Its states are `idle`, `scanning`, `capturing`, `success`, `processing`, `verified`, `permissionDenied`, `error`, and `finished`; drive it with `load()`, `continue()`, and `skip()`. A scan can be rejected with a `2xx` response, so treat a failure result as a failure rather than checking only the HTTP status. In `permissionDenied`, show instructions to correct browser camera permissions and reload the page. `continue()`, `skip()`, and `reset()` do not retry that state.

### Standalone mandatory consent

Import `createMandatoryConsentManager`, `MandatoryConsentConfig`, and `MandatoryConsentState` from `@incodetech/core/mandatory-consent`.

| Config field | Type | Required | Description |
| --- | --- | --- | --- |
| `consentType` | `RegulationTypes` | Yes | Regulation supplied by the active session, such as `US`, `Worldwide`, `Other`, or the supported US regional variants. |
| `language` | `string` | No | Language for consent content; defaults to the active SDK language. |
| `type` | `'MANDATORY' \| 'ML'` | No | Regulatory consent category. Default `MANDATORY`; use `ML` for the configured ML consent step. |

`idle` waits for `load()`, then `loading` fetches the consent. In `display`, render `title: string`, `text: string`, `isSigned: boolean`, `canSubmit: boolean`, and optional `error: string`. In `submitting`, the same title/text/selection remain available, but `canSubmit` is `false` and `error` is absent. `finished` and `closed` are final; `error` exposes an error string.

| Method | Callable when | Purpose |
| --- | --- | --- |
| `load()` | `idle` | Load the required consent. |
| `toggle()` | `display` | Update the user's explicit acceptance selection. |
| `submit()` | `display`, with `canSubmit` true | Submit acceptance to the backend. |
| `cancel()` | `display`, `error` | Decline or leave; reaches `closed`. |
| `retry()` | `display`, `error` | Reload consent after a failure. |
| `reset()` | `error` | Return to `idle`. |

Do not auto-select consent or treat cancellation as acceptance. The server enforces consent requirements. Stop and recreate the manager after a final state. ID's embedded consent uses `acceptMandatoryConsent()` / `cancelMandatoryConsent()` instead of this standalone contract.

## 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](/sdk-reference/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](/sdk-reference/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](/sdk-reference/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](/sdk-reference/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` |
| **Certificate issuance**      | `<incode-certificate-issuance>`      | `createCertificateIssuanceManager`                            | `@incodetech/core/certificate-issuance`      | `@incodetech/web/certificate-issuance`      |
| **Field comparison**          | `<incode-field-comparison>`          | `createFieldComparisonManager`                                | `@incodetech/core/field-comparison`          | `@incodetech/web/field-comparison`          |
| **Custom fields**             | —                                    | `createCustomFieldsManager`                                   | `@incodetech/core/custom-fields`             | —                                           |
| **Dynamic forms**             | `<incode-dynamic-forms>`             | `createDynamicFormsManager`                                   | `@incodetech/core/dynamic-forms`             | `@incodetech/web/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](/sdk-reference/web-sdk-2-incodeflow-component/) and [Headless Mode → Orchestrated Flow Manager](/sdk-reference/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](/sdk-reference/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](/sdk-reference/web-sdk-2-module-ekyc/).
- **eKYB**: Know Your Business form module: business name, address, tax ID, plus UBOs. Country-aware schema. See [Module: eKYB](/sdk-reference/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](/sdk-reference/web-sdk-2-module-cross-doc-match/).
- **Certificate issuance**: issues a digital certificate at the end of a verification flow: the user sets a protecting password, the backend issues the certificate, and the SDK offers it for download. See [Module: Certificate Issuance](/sdk-reference/web-sdk-2-module-certificate-issuance/).
- **Field comparison**: collects the user's first and last name and submits them for backend verification against the data already on file for the session. See [Module: Field Comparison](/sdk-reference/web-sdk-2-module-field-comparison/).
- **Custom fields**: collect arbitrary structured data (text, number, date, boolean) from a dashboard-defined schema. See [Module: Custom Fields](/sdk-reference/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. Use `<incode-dynamic-forms>` standalone, let `<incode-flow>` mount it automatically, or drive the headless manager with your own UI. See [Module: Dynamic Forms](/sdk-reference/web-sdk-2-module-dynamic-forms/).
- **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](/sdk-reference/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](/sdk-reference/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](/sdk-reference/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](/sdk-reference/web-sdk-2-event-callbacks/).                                                                                                                                                                                                              |
| `createFaceAvatar`          | `@incodetech/core/avatar`        | Renders a cosmetic avatar over a camera stream, for hosts building their own capture screen. Display-only — it never feeds detection, quality, liveness, or upload. The bundled modules use it via `selfieConcealmentOption`; see [Module: Selfie → Face concealment](/sdk-reference/web-sdk-2-module-selfie-1/#face-concealment). |
| `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](/sdk-reference/web-sdk-2-module-patterns/) for the shared lifecycle (subscribe / getState / stop and module-specific start and recovery transitions) so they stay focused on what's module-specific.

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

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

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

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

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

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

**Utility:** [Home](/sdk-reference/web-sdk-2-module-home/) · [Redirect to Mobile](/sdk-reference/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).