# Project Settings

Click **Settings** in the side menu to configure your project. The page has ten tabs on the left. When a tab can be edited, click **SAVE** at the bottom to keep your changes, or **CANCEL** to undo them. Before saving, Testifly shows a short notice about test environments, allowlisting and parallel logins. Tick the box to confirm and continue.

## Organization & Name

| Field | Use |
| --- | --- |
| **Project ID** | The unique ID of the project. You need it for the API and for support requests. It cannot be changed. |
| **Project Name** | The name shown in the menu and in emails. |
| **Company name**, **Company address**, **Tax ID** | Your company details for invoices. |
| **Timezone** | Used for schedules and for times in emails. |

## Authentication

Tell Testifly whether your app needs a login:

- **No authentication**
- **Some pages require authentication**
- **All pages require authentication**

If a login is needed, choose the **Authentication Method**:

- **The site uses a username and a password to authenticate**
- **Social Login (Google/Facebook/etc.)**
- **The site sends a link or token to the user’s email to authenticate**
- **Custom Login**

The login page and test users are set per environment, on the next tab.

## Environments

An environment is one copy of your app, such as staging or QA. The first one, **Main Environment**, is the **DEFAULT**. Click **ADD** to add another.

Each environment has:

- **Environment Name** and **Base URL**.
- **The project is behind a VPN** – tick this if the app is not reachable from the internet. Tests for this environment then run on your [Remote Runners](/content/documentation/remote-runners/index.html).
- **Authentication details** – the **Login Page URL** and the test users. Click **ADD USER** to add one. Passwords are never shown again after saving. See [Password Security](/content/documentation/password-security/index.html).
- **Hooks**:

- **Web Page Load Script** – JavaScript that runs when a page loads. Use it to prepare test data, mock APIs or set the app’s state. You are responsible for making sure the script is safe.
  - **Extra HTTP Headers** – key and value pairs that are sent with every request. Click **ADD HEADER** to add one. Use them when your app or firewall expects a special header from test traffic.

### Email magic links and codes

If your app signs users in with a link or code sent by email, Testifly captures those emails for you:

1. Click **ADD USER** and enter any name. Testifly gives the user a unique address that ends in `@testifly.ai`.
2. Register that address as a user in your app.
3. When your app sends a login email to that address, Testifly shows the latest **Code** or **Link URL** on this page, with the time it arrived. Click **Refresh** to check for new emails.
4. When the users are ready, go to **Actions** and click **Start feature discovery from the beginning**.

### What happens when I change login settings?

When you save a change to the login page, the sign-in method or the test users, Testifly rebuilds the internal login test and automates it again. This runs as a **Create Project** job. It does not happen for projects with no login or with email magic links.

## Integrations

Connect other tools to your project:

- **Jira** – **CONNECT JIRA** (API token) or **CONNECT VIA OAUTH**. See [Jira Integration](/content/documentation/jira-integration/index.html).
- **Linear** – **CONNECT WITH API KEY** or **CONNECT AS AGENT**. See [Linear Integration](/content/documentation/linear-integration/index.html).
- **Notion** – **CONNECT NOTION**. See [Notion Integration](/content/documentation/notion-integration/index.html).
- **Slack** – **CONNECT SLACK**. See [Slack Integration](/content/documentation/slack-integration/index.html).

## Exclusions

List the parts of your app that Testifly must never open, for example a payment page, an admin area or a _Delete account_ link.

1. Click **ADD EXCLUSION PATH**.
2. Enter a path. To use a pattern, tick the regular expression option and enter a regular expression.
3. Click **SAVE**.

What exclusions do:

- Feature discovery skips matching URLs.
- A test that reaches an excluded URL during automation is marked **Excluded Path**.
- A test that reaches an excluded URL during a run is **Skipped**.

## API Keys

API keys let other systems use Testifly, for example your CI/CD pipeline, an MCP client or a Remote Runner.

1. Click **ADD KEY** and give the key a name.
2. Copy the key right away. It is shown only once.

Each key shows when it was created and when it expires. Click the bin icon to delete a key. Read more in [Test Execution API](/content/documentation/test-execution-api/index.html) and [MCP Integration](/content/documentation/mcp-integration/index.html).

## Runners

Manage your on-premise runners. A red dot on this tab means your environment is behind a VPN but no runner is connected yet. See [Remote Runners](/content/documentation/remote-runners/index.html) for how to install one.

## Misc.

- **Do not check for ARIA errors** – when ticked, the test code never checks or uses ARIA (accessibility) attributes. Use this if your app does not set ARIA attributes and tests fail because of it. It applies to tests automated after you save.
- **Run cleanup after each run** – runs the cleanup test at the end of every run.
- **View cleanup test** – opens the cleanup test so you can write its steps.
- **View login test** – opens the login test that every logged-in test uses.

## Billing

Shows your current plan status and lets you choose a plan.

## Actions

Actions that start background work for the whole project:

| Action | What it does |
| --- | --- |
| **Start feature discovery from the beginning** | Maps your whole app again from the base URL and scans pages it has not seen before. If the login test has no code yet, Testifly builds the login first. |
| **Continue with feature discovery** | Scans pages that were found earlier but not scanned yet, for example after an error or after your feature limit was raised. |
| **Automate Tests** | Restarts automation for tests that are waiting to be automated. |
| **Delete all features and tests** | Deletes every feature and test in the project. This cannot be undone. |

If your project is behind a VPN, Testifly asks which runner should do the work.

## Account notifications

Email preferences are set per user, not per project. Open them from the three dots next to your name, then **My account**. See [Notifications and Emails](/content/documentation/notifications-and-emails/index.html).
