# Getting started with Zoom Contact Center apps
The Zoom App framework lets developers embed custom web applications directly into the Zoom Contact Center desktop interface. By integrating tools within the agent’s call UI, you eliminate constant switching between applications—creating a true single-pane-of-glass experience that improves efficiency and productivity.
In this guide, you’ll learn how to build a [Zoom Contact Center App](/docs/contact-center/apps/create-zcc-apps/) that allows support agents to interact with external users and enhances their workflow inside the Zoom Contact Center desktop client.
## Prerequisites
- Zoom account with developer role permissions
- Zoom Contact Center license
- Zoom Global Phone
- Node.js and npm
---
**Get SDK credentials**
You can quickly configure your Zoom Marketplace app using the **Update an app by manifest** API endpoint and the manifest JSON object. For more details, refer to the [Zoom Manifest](/docs/build-flow/manifests/) documentation.
This sample app includes a `manifest` folder containing the app configuration for a Zoom Contact Center app. Use the pre-defined configuration to create and configure a general app.
- [Zoom Contact Center manifest quickstart](https://github.com/zoom/zcc-javascript-quickstart/tree/main)
### Scaffold
The sample app consists of three pages:
- A default browser landing page
- The Zoom App in-client home page
- The Zoom Contact Center app page for agents
To begin:
```jsx
$ git clone https://github.com/zoom/zcc-javascript-quickstart.git --branch scaffold
$ cd zcc-quickstart
$ npm install
```
This is a simple vanilla JavaScript, Node.js, and Express app. It includes:
| File Path | Description | Purpose |
| ------------------------ | ------------------------------------------------------------------ | --------------------------------------------- |
| lib/zoom-api.js | OAuth helper functions | Provides Zoom OAuth utilities |
| public/browser.html | Browser landing page | Redirects user from browser to Zoom client |
| public/zoomapp-home.html | Zoom App in-client home page | Renders third-party app UI in the Zoom client |
| public/zcc-apps.html | Zoom Contact Center page | Captures and logs agent engagement notes |
| server.js | Express server with [OWASP headers](/docs/zoom-apps/architecture/) | Implements backend functionality |
This guide focuses on enabling support agents to deep link into a Zoom App from a browser and capture notes during engagements in the desktop interface.
- Completed demo on the [main](https://github.com/zoom/zcc-javascript-quickstart/tree/main) branch.
To learn more about building Zoom App experiences and the deep linking API, see the resources below.
- [Zoom Apps](/docs/zoom-apps/)
- [**Deep link generation**](/docs/zoom-apps/architecture/#deep-link-generation)
- [Marketplace API: **Generate an app deeplink**](/docs/api/marketplace/#tag/apps/post/zoomapp/deeplink)
- [Marketplace API: **Generate Zoom App Deeplink**](/docs/api/marketplace)
## Account configuration
After creating and configuring your Marketplace app, complete the following setup in the Zoom web portal:
- Create and select a queue
- Add a phone number
- Create an agent profile
- Create a voice flow
For a detailed walkthrough, refer to the [Zoom Contact Center code-lab.](https://just-zoomit.github.io/zccapps-js-sample-codelab/#7)
### Zoom App home page
The Zoom App SDK lets you to bring third-party apps into the Zoom collaboration experience. The app can access contextual data to determine its execution environment.
On line 17 of `zoomapp-home.html`, insert a script to display supported Zoom JS APIs and app context data. This script initializes `zoomSdk`, calls key APIs, and renders the results.
```
```
You now have a Zoom App page that leverages the Zoom App SDK to access contextual data. Note that certain APIs return values only when the app is running in specific contexts, such as during a meeting.
### Zoom Contact Center page
By default, the Zoom Contact Center app only appears during an active engagement. This script demonstrates how to use the Zoom App Contact Center API and local storage to track engagement notes.
Add the provided script to `zcc-apps.html`. It captures engagement data, listens for SDK events, and auto-saves user input. You can replace local storage with your own provider to persist data externally.
```
```
## Run the app
Run the app by executing the following command:
```
$ node server.js
```
Once the app is running, you can access it from the Zoom desktop client by navigating to the Contact Center interface. Make sure:
- Your agent status is set to available
- All relevant queues and routes are active
After that, initiate a test call to your Zoom global number. When the agent answers the call, the Zoom Contact Center app will automatically appear in the right-side panel of the interface.
## What's next?
You’ve now built a Zoom Contact Center integration. Explore the [Zoom Contact Center API](/docs/api/contact-center/) endpoints and events to integrate Contact Center features directly into your application. For CRM integration and more, visit the [Zoom Contact Center support page](https://support.zoom.com/hc/en/category?id=kb_category&kb_category=1e16b2d68720391089a37408dabb3553).