> You are reading the Docusign Developer Documentation. For clean Markdown of any page, append .md to the page URL.
>
> Documentation indexes by section:
> - APIs and SDKs: https://docusign.docs.buildwithfern.com/docs/llms.txt
> - Platform 101: https://docusign.docs.buildwithfern.com/platform/llms.txt
> - Extension Apps: https://docusign.docs.buildwithfern.com/extension-apps/llms.txt
> - Docusign CLI: https://docusign.docs.buildwithfern.com/docusign-cli/llms.txt
>
> Authentication (OAuth, JWT Grant, M2M): https://docusign.docs.buildwithfern.com/platform/auth
> Webhooks and Connect: https://docusign.docs.buildwithfern.com/platform/webhooks
>
> OpenAPI specifications: https://docusign.docs.buildwithfern.com/openapi.json
> MCP server: https://docusign.docs.buildwithfern.com/_mcp/server

# What's inside an extension app registration

> Learn the basics about the different pieces of an extension app registration

There are two ways to register an extension app in the [Docusign Developer Console](/extension-apps/developer-console-overview): by using the form-based experience in the UI, or by uploading a JSON [app manifest](/extension-apps/extension-apps-101/concepts/extension-app-manifest) file that describes the extension app, its connections, its actions, and its optional capabilities. The Developer Console enables you to manage the entire lifecycle of  your extension apps, including registering, testing, publishing, monitoring, and updating.

> **Note**
>
> See [Use a form to register an extension app](/extension-apps/build-an-extension-app/register/use-form) and [Use a manifest file to register an extension app](/extension-apps/build-an-extension-app/register/use-manifest) for details on each way to register an extension app. See an [Example JSON manifest file](/extension-apps/build-an-extension-app/example-use-case) or view the [App manifest reference](/extension-apps/extension-app-reference/app-manifest-reference) for a full list of supported elements.

The following diagram sequence illustrates how you might create each piece of an extension app, step by step.

1\. Register an **extension app** through the Developer Console and choose the extensions your app will implement. In the form-based experience, you choose the type in the UI. In the app manifest, you define this in the **template** property.

![An image showing the first step of creating an extension app registration](/_fern-files/_img/ae697b13fdc629d85e7a0ee209faeee7436b263f49c2789d797e36ad8686cfcc.webp)

2\. Each extension has a contract that defines its required supported types. You can add these actions and capabilities in the form-based experience UI or in the **actionReferences** object of your app manifest.

**Note:** If you register your app using an app manifest, make sure that the action names in the **actionReferences** object match the names in the **actions** objects.

![An image showing the structure of an extension app registration with an extension and three actions.](/_fern-files/_img/9f4dd795441d941085092d1b01a6c93dd1e715c0477b78c73211572257e48d4e.webp)

3\. Each **action** and **capability** defines an API call to an **external service**.  This **Connection** tells your app how to connect to and obtain authorization from the external service. You can configure this using the UI in the form-based experience, or add a **Connection** object in the app manifest.

![An image showing the structure of an extension app registration, highlighting the connection and external service](/_fern-files/_img/6ae954f969c4cffda841cc94f19dc179a4c1c3cb348657237b92bcb17a9bb77b.webp)

4\. Your app also needs to include some **metadata**, like your app's name and publisher information.

Here’s an example of the components of an extension app registration with one extension and one action to verify a phone number.

![An image showing an example app registration structure](/_fern-files/_img/9b431729ebbcd47f014ce0faf16783d9db24bf1d7c8f40c5c6532158764b7b29.webp)

An extension app will connect to a single external platform. The extension app’s registration defines:

* **A**  [connection](/extension-apps/extension-apps-101/concepts/connections), which defines the authorization data Docusign needs to communicate with the external platform.
* **Any number of**  [extensions](/extension-apps/extension-apps-101/concepts/extensions-and-extension-points).  Each extension supports a type of external functionality, such as data verification or connected fields. Extensions must adhere to the contracts of required actions based on their type (the value of the extension’s `template` property).
* **Any number of** [actions](/extension-apps/extension-apps-101/concepts/actions) and [capabilities](/extension-apps/extension-apps-101/concepts/capabilities), which are triggered to do units of work for your extensions. When triggered, each action and capability will call an external platform API endpoint to perform a function. Actions and capabilities must also adhere to input and output contracts based on their type (the value of their `template` property). Actions are required for an extension; capabilities are optional.
* **A set of metadata** that describes the extension app and publisher. This metadata is referenced when the extension app is published in the [App Center](/extension-apps/extension-apps-101/app-center).

See [Extension app manifest](/extension-apps/extension-apps-101/concepts/extension-app-manifest) for details.

## Next steps

* See [Use a form to register an extension app](/extension-apps/build-an-extension-app/register/use-form) and [Use a manifest file to register an extension app](/extension-apps/build-an-extension-app/register/use-manifest) for details on how to register an extension app through the UI or via uploading a JSON manifest file.
* Learn more about [supported extensions](/extension-apps/extension-apps-101/supported-extensions).
* See  [extension app manifest](/extension-apps/extension-apps-101/concepts/extension-app-manifest) details and an example.
* Get specifications in the [App manifest reference](/extension-apps/extension-app-reference/app-manifest-reference).