---
id: cloud/account-management/projects
title: How to manage projects | Cypress Cloud
description: >-
  Learn how to set up a project to record test runs, manage project settings,
  transfer ownership of a project, and how to integrate with third party
  integrations.
section: cloud
source_path: docs/cloud/account-management/projects.mdx
version: 3cf5b86b3403f604bdf7f3e35025c3bc3865e02c
updated_at: '2026-05-07T17:44:31.931Z'
---
# Projects

##### What you'll learn

*   How to set up a project to record test runs
*   How to manage project settings
*   How to transfer ownership of a project
*   Best practices for multi-repo implementation
*   How to integrate with source control providers, issue management, and team communication tools

## Identification

Cypress uses your [projectId](#Project-ID) and [Record Key](#Record-key) together to uniquely identify projects.

### Project ID

Once you set up your project to record, we generate a unique `projectId` for your project and automatically insert it into your Cypress configuration file.

#### The `projectId` is a 6 character string in your Cypress configuration

*   cypress.config.js
*   cypress.config.ts

```
const { defineConfig } = require('cypress')module.exports = defineConfig({  projectId: 'a7bq2k',})
```

```
import { defineConfig } from 'cypress'export default defineConfig({  projectId: 'a7bq2k',})
```

This helps us uniquely identify your project. If you manually alter this, **Cypress will no longer be able to identify your project or find the recorded builds for it**.

If you're using source control, we recommend that you check your Cypress configuration file, including the `projectId`, into source control. If you don't want your `projectId` visible in your source code you can set it as an environment variable using the name `CYPRESS_PROJECT_ID`. The exact mechanism for doing so depends on your system but could be something like:

```
export CYPRESS_PROJECT_ID={projectId}
```

### Record key

The record key is used to authenticate that your project is _allowed_ to record tests to Cypress Cloud. As long as your record key stays _private_, no one will be able to record test runs for your project - even if they have your `projectId`.

Think of your record key as the key that enables you to _write and create_ runs. However, it has nothing to do with being able to _read or see_ runs once they are recorded.

**Exposing a record key**

Anyone that has access to both the `projectId` and the record key of a project can record runs to that organization's project in Cypress Cloud.

**You would not want people outside of your team running tests because:**

1.  **This could drive up the number of tests you've run.** Since Cypress bills based on the number of recorded tests - this means they can use up all allotted tests and there would be consequences to that.
2.  **They can write any data they want to your Cypress Cloud.** They could edit the test suite so that recorded tests record different things than the project's original intent. This could including visiting different websites and generating videos of visiting those websites, for example.

If a record key is exposed you should [delete it](#Delete-record-key) and [create a new record key](#Create-new-record-key). Deleted keys will be invalid; If a project is run with a deleted key it will not be able to record.

You can set your record key as an environment variable to help protect it. Learn more [here](/llm/markdown/app/continuous-integration/overview.md#Environment-variables).

Once you're set up to record test runs, we automatically generate a _Record Key_ for the project.

#### A record key is a GUID that looks like this

```
f4466038-70c2-4688-9ed9-106bf013cd73
```

You can create multiple Record Keys for a project, or delete existing ones from [Cypress Cloud](https://on.cypress.io/cloud).

You can also find your Record Key inside of the _Settings_ tab in the Cypress App.

#### Create new record key

1.  Go to your organization's projects page.
2.  Select the project you want to change access to.
3.  Go to the project's **Settings** page.
4.  Here you will see a **Record Keys** section
5.  Click **Create New Key**. A new key will be automatically generated for your project.

#### Delete record key

1.  Go to your organization's projects page.
2.  Select the project you want to change access to.
3.  Go to the project's **Settings** page.
4.  Here you will see a **Record Keys** section
5.  Click **Delete** beside the record key you want to delete.

## Project settings

### Access to Runs

Visit your project settings to see who has access to your project's runs.

#### Public vs Private

*   **Public** means that anyone can see the recorded test runs for the project. It is similar to how public projects on GitHub, Travis CI, or CircleCI are handled. Anyone who knows your `projectId` will be able to see the recorded runs for public projects.
    
*   **Private** means that only [users](/llm/markdown/cloud/account-management/users.md) you invite to your [organization](/llm/markdown/cloud/account-management/organizations.md) can see its recorded runs. Even if someone knows your `projectId`, they will not have access to your runs unless you have invited them.
    

#### Change project access

1.  Go to your organization's projects page.
2.  Select the project you want to change access to.
3.  Go to the project's **Settings** page.
4.  Here you will see a section displaying **Access**. Choose the appropriate access you'd like to assign.
    

### Smart Orchestration

#### Spec Prioritization & Auto Cancellation

Toggle Spec Prioritization to reduce feedback time by running previously failed test specs first. Enabling Auto Cancellation to reduce run duration by canceling the run when tests fail. Adjust the number of test failures before auto canceling.

These settings can significantly improve developer resolution time, reduce your monthly CI bill and free up CI resources. See our [Spec Prioritization](/llm/markdown/cloud/features/smart-orchestration/spec-prioritization.md) and [Auto Cancellation](/llm/markdown/cloud/features/smart-orchestration/run-cancellation.md) guides to learn more.

### Parallelization

#### Run completion delay

Control how long the Cypress Cloud should wait for new groups to join a run before transitioning a run to a _completed_ status with the **Run completion delay** . This gives your test groups a grace period to join an existing run before the run is considered complete.

Use run completion delay when you have a distributed test setup where test groups might not all start simultaneously. For example:

*   CI jobs that might start at slightly different times
*   [Parallelization](/llm/markdown/cloud/features/smart-orchestration/parallelization.md) across multiple machines
*   Flaky network conditions that might delay some test groups from connecting

The default is **60 seconds**. Increasing this value gives your test groups more time to join the run; decreasing it will make runs complete faster when no new groups are joining.

See our [Parallelization guide](/llm/markdown/cloud/features/smart-orchestration/parallelization.md#Run-completion-delay) to learn more.

### Run Timeout

**Run timeout** is the number of minutes that Cypress Cloud will wait to receive a signal from a run before marking the spec and run as **Timed Out**. This is the maximum time Cypress Cloud will wait for activity from your tests before considering them hung or failed.

Use run timeout when you have long-running tests that might exceed the default. For example:

*   Very long-running end-to-end tests
*   Tests that include operations that take significant time (such as large file uploads)
*   Operations with unpredictable completion times

The default is **90 minutes**. You can shorten this for faster feedback when a run has stopped sending data.

#### Run completion delay vs. Run timeout

These settings work together to balance giving your tests enough time to complete while not waiting indefinitely for runs that have failed or hung:

*   **Run completion delay** (seconds): How long to wait for new test groups to join after all currently known groups complete. Applies only during that waiting period.
*   **Run timeout** (minutes): How long to wait for any activity from a run before marking it timed out. Applies throughout the entire run.

### Transfer ownership

#### Transfer project to other user or organization

You can transfer projects that you own to another [organization](/llm/markdown/cloud/account-management/organizations.md) you are a part of or to another user in the organization. Projects can only be transferred from [Cypress Cloud](https://on.cypress.io/cloud).

1.  Select your organization in the organization switcher.
2.  Select the project you wish to transfer.
3.  Go to the project's **Settings** page.
4.  Scroll down to the **Transfer Ownership** section and click **Transfer Ownership**.
    
5.  Select the user or organization, then click **Transfer**.
    

You are not allowed to transfer a project to an organization that is currently enrolled in a [free trial](/llm/markdown/cloud/get-started/free-trial.md).

#### Cancel project transfer

Upon transferring, you can cancel the transfer at any time by visiting the organization's projects and clicking **Cancel Transfer**.

#### Accept or reject transferred project

When a project is transferred to you, you will receive an email notifying you. You will be able to accept or reject the transferred project by clicking the notification in the sidebar and clicking 'Accept' or 'Reject'.

### Delete Project

You can delete projects you own. This will also delete all of their recorded test runs. Deleting projects can only be done from [Cypress Cloud](https://on.cypress.io/cloud).

1.  Select your organization in the organization switcher.
2.  Select the project you want to remove.
3.  Go to the project's **Settings** page.
4.  At the very bottom of the Settings page click the **Remove Project** button.
    
5.  Confirm that you want to delete the project by clicking **Yes, Remove Project**.

### README Badges

README badges allow you to increase visibility of your project's test status and test count to other developers viewing your project's README file.

#### Create a README badge

1.  In your Cypress Cloud account, select the project for which you'd like to add a badge.
2.  On the Project Settings page, scroll down to the README Badges section and click “Configure Badge”.

**Note**: README badges are currently only available for public projects.

1.  A configuration modal will appear. The Project ID will be pre-filled with the ID associated with the project you selected. You can choose to designate a specific branch, or leave this field blank to always use the latest build in the project.
    
2.  Next, style your badge. Flat is the default styling and is most commonly used, but 5 style options are available.
    
3.  Select the badge type to change the amount and type of information that's displayed. Simple status will show only whether tests are passing or failing. Detailed status will show the number of tests that were passed, failed, or skipped. Test count will show how many tests are included in your project.
    
4.  Once you've selected all your settings, check out the preview and make sure everything looks just the way you like it.
    
5.  🎉 Your badge is ready to be embedded. Copy the markdown at the bottom of the Configure Badge modal, and embed it in your project's README file for everyone to see!
    

See also [Highlight your project's test status with Cypress README badges](https://www.cypress.io/blog/2020/09/02/highlight-your-projects-test-status-with-cypress-readme-badges/) announcement.

## Best Practices

### Multi-repo Implementation

When Cypress tests reside in a repository separate from the application code, it creates a suboptimal Cloud experience - especially when considering the commit and branch interpretation for each git directory.

For any given Cypress project, all commits or branches associated to recorded runs should belong or relate to a single `.git` repository.

If this is not possible, there are some measures to help organize your data:

1.  Create two separate projects in Cypress Cloud, for example, **App Project** and **Test Project**
    
2.  For the **App Project**:
    
    *   Link the GitHub integration to the Application code repo
    *   Override the `COMMIT_INFO_*` environment variables used by the test recording to reflect the state of the checked out Application code repo
    *   Record any runs related to the Application code repo to **App Project**
    *   Capture any Cypress config/tests repo related identifiers (short sha/release number) as tags decorated on the run
3.  For the **Test Project**:
    
    *   Link the GitHub integration to the Cypress config/tests repo
    *   Ensure any runs recorded to **Test Project** are related to test code changes in the Cypress config/tests repo
        *   The Application code repo state that the tests are executed against could likewise be captured as tags here, if necessary.

## Third party integrations

You can integrate your project with many third party tools and edit those settings from within the project settings page.

See our integration guides to learn more:

### Source Control Providers

*   [GitHub integration guide](/llm/markdown/cloud/integrations/github.md)
*   [GitLab integration guide](/llm/markdown/cloud/integrations/gitlab.md)
*   [Bitbucket integration guide](/llm/markdown/cloud/integrations/bitbucket.md)

### Issue Management

*   [Jira integration guide](/llm/markdown/cloud/integrations/jira.md)

### Team Communication

*   [Cypress integration for Slack guide](/llm/markdown/cloud/integrations/slack.md)
*   [Cypress integration for Microsoft Teams guide](/llm/markdown/cloud/integrations/teams.md)
