> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prowler.com/llms.txt
> Use this file to discover all available pages before exploring further.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.prowler.com/feedback

```json
{
  "path": "/user-guide/providers/vercel/getting-started-vercel",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Getting Started With Vercel on Prowler

export const VersionBadge = ({version}) => {
  return <a href={`https://github.com/prowler-cloud/prowler/releases/tag/${version}`} target="_blank" rel="noopener noreferrer" className="version-badge-link">
            <span className="version-badge-container">
                <span className="version-badge">
                    <span className="version-badge-label">Added in:</span> 
                    <span className="version-badge-version">{version}</span>
                </span>
            </span>
        </a>;
};

Prowler for Vercel scans teams and projects for security misconfigurations, including deployment protection, environment variable exposure, WAF rules, domain configuration, team access controls, and more.

## Prerequisites

Set up authentication for Vercel with the [Vercel Authentication](/user-guide/providers/vercel/authentication) guide before starting:

* Create a Vercel API Token with access to the target team
* Identify the Team ID (optional, required to scope the scan to a single team)

<CardGroup cols={2}>
  <Card title="Prowler Cloud" icon="cloud" href="#prowler-cloud">
    Onboard Vercel using Prowler Cloud
  </Card>

  <Card title="Prowler CLI" icon="terminal" href="#prowler-cli">
    Onboard Vercel using Prowler CLI
  </Card>
</CardGroup>

## Prowler Cloud

<VersionBadge version="5.23.0" />

### Step 1: Add the Provider

1. Go to [Prowler Cloud](https://cloud.prowler.com/) or launch [Prowler App](/user-guide/tutorials/prowler-app).

2. Navigate to "Configuration" > "Providers".

   <img src="https://mintcdn.com/prowler/zldeL4sp-3y3KD3R/images/prowler-app/cloud-providers-page.png?fit=max&auto=format&n=zldeL4sp-3y3KD3R&q=85&s=022812ec187876acb2feac32781217f3" alt="Providers Page" width="300" height="448" data-path="images/prowler-app/cloud-providers-page.png" />

3. Click "Add Provider".

   <img src="https://mintcdn.com/prowler/zldeL4sp-3y3KD3R/images/prowler-app/add-cloud-provider.png?fit=max&auto=format&n=zldeL4sp-3y3KD3R&q=85&s=ba8cc5f0f469433547b724f97672bb52" alt="Add a Provider" width="601" height="125" data-path="images/prowler-app/add-cloud-provider.png" />

4. Select "Vercel".

   <img src="https://mintcdn.com/prowler/ZTsBz3SneYAbRkf6/images/providers/select-vercel-prowler-cloud.png?fit=max&auto=format&n=ZTsBz3SneYAbRkf6&q=85&s=e6951ee20240ecfa074f796b526f7933" alt="Select Vercel" width="1512" height="899" data-path="images/providers/select-vercel-prowler-cloud.png" />

5. Enter the **Team ID** and an optional alias, then click "Next".

   <img src="https://mintcdn.com/prowler/ZTsBz3SneYAbRkf6/images/providers/vercel-team-id-form.png?fit=max&auto=format&n=ZTsBz3SneYAbRkf6&q=85&s=7a1c0a66a42715d02e34ecbdfe2810ad" alt="Add Vercel Team ID" width="1156" height="545" data-path="images/providers/vercel-team-id-form.png" />

<Note>
  The Team ID can be found in the Vercel Dashboard under "Settings" > "General". It follows the format `team_xxxxxxxxxxxxxxxxxxxx`. For detailed instructions, see the [Authentication guide](/user-guide/providers/vercel/authentication).
</Note>

### Step 2: Provide Credentials

1. Enter the **API Token** created in the Vercel Dashboard.

   <img src="https://mintcdn.com/prowler/ZTsBz3SneYAbRkf6/images/providers/vercel-token-form.png?fit=max&auto=format&n=ZTsBz3SneYAbRkf6&q=85&s=c9d76ffb6343a41d7744b6e511dc87cf" alt="API Token Form" width="1160" height="548" data-path="images/providers/vercel-token-form.png" />

For the complete token creation workflow, follow the [Authentication guide](/user-guide/providers/vercel/authentication#api-token).

### Step 3: Launch the Scan

1. Review the connection summary.
2. Choose the scan schedule: run a single scan or set up daily scans (every 24 hours).
3. Click **Launch Scan** to start auditing Vercel.

   <img src="https://mintcdn.com/prowler/ZTsBz3SneYAbRkf6/images/providers/vercel-launch-scan.png?fit=max&auto=format&n=ZTsBz3SneYAbRkf6&q=85&s=5d1c50b91b6e7b54438d179d4eb8495c" alt="Launch Scan" width="912" height="549" data-path="images/providers/vercel-launch-scan.png" />

***

## Prowler CLI

<VersionBadge version="5.23.0" />

### Step 1: Set Up Authentication

Follow the [Vercel Authentication](/user-guide/providers/vercel/authentication) guide to create an API Token, then export it:

```console theme={null}
export VERCEL_TOKEN="your-api-token-here"
```

Optionally, scope the scan to a specific team:

```console theme={null}
export VERCEL_TEAM="team_yourteamid"
```

### Step 2: Run the First Scan

Run a baseline scan after credentials are configured:

```console theme={null}
prowler vercel
```

Prowler automatically discovers all teams accessible with the provided token and runs security checks against them.

### Step 3: Filter the Scan Scope (Optional)

#### Filter by Team

To scan a specific team, set the `VERCEL_TEAM` environment variable with the Team ID or slug:

```console theme={null}
export VERCEL_TEAM="team_yourteamid"
prowler vercel
```

<Note>
  When no team is specified, Prowler auto-discovers all teams the authenticated user belongs to and scans each one.
</Note>

#### Filter by Project

To scan only specific projects, use the `--project` argument:

```console theme={null}
prowler vercel --project my-project-name
```

Multiple projects can be specified:

```console theme={null}
prowler vercel --project my-project-name another-project
```

Project IDs are also supported:

```console theme={null}
prowler vercel --project prj_abc123def456
```

### Step 4: Use a Custom Configuration (Optional)

Prowler uses a configuration file to customize provider behavior. The Vercel configuration includes:

```yaml theme={null}
vercel:
  # Maximum number of retries for API requests (default is 3)
  max_retries: 3
```

To use a custom configuration:

```console theme={null}
prowler vercel --config-file /path/to/config.yaml
```

***

## Supported Services

Prowler for Vercel includes security checks across the following services:

| Service            | Description                                                                                |
| ------------------ | ------------------------------------------------------------------------------------------ |
| **Authentication** | Token expiration and staleness checks                                                      |
| **Deployment**     | Preview deployment access and production stability                                         |
| **Domain**         | DNS configuration, SSL certificates, and wildcard exposure                                 |
| **Project**        | Deployment protection, environment variable security, fork protection, and skew protection |
| **Security**       | Web Application Firewall (WAF), rate limiting, IP blocking, and managed rulesets           |
| **Team**           | SSO enforcement, directory sync, member access, and invitation hygiene                     |

## Checks With Explicit Plan-Based Behavior

Prowler currently includes 26 Vercel checks. The 11 checks below have explicit billing-plan handling in the provider metadata or check logic. When the scanned scope reports a billing plan, Prowler adds plan-aware context to findings for these checks. If the API does not expose the required configuration, Prowler may return `MANUAL` and require verification in the Vercel dashboard.

| Check ID                                           | Hobby                                       | Pro                                                         | Enterprise                                         | Notes                                                                            |
| -------------------------------------------------- | ------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------------------------------------- |
| `project_password_protection_enabled`              | Not available                               | Available as a paid add-on                                  | Available                                          | Checks password protection for deployments                                       |
| `project_production_deployment_protection_enabled` | Not available                               | Available with supported paid deployment protection options | Available                                          | Checks protection for production deployments                                     |
| `project_skew_protection_enabled`                  | Not available                               | Available                                                   | Available                                          | Checks skew protection during rollouts                                           |
| `security_custom_rules_configured`                 | Not available                               | Available                                                   | Available                                          | Returns `MANUAL` when the firewall configuration cannot be assessed from the API |
| `security_ip_blocking_rules_configured`            | Not available                               | Available                                                   | Available                                          | Returns `MANUAL` when the firewall configuration cannot be assessed from the API |
| `team_saml_sso_enabled`                            | Not available                               | Available                                                   | Available                                          | Checks team SAML SSO configuration                                               |
| `team_saml_sso_enforced`                           | Not available                               | Available                                                   | Available                                          | Checks SAML SSO enforcement for all team members                                 |
| `team_directory_sync_enabled`                      | Not available                               | Not available                                               | Available                                          | Checks SCIM directory sync                                                       |
| `security_managed_rulesets_enabled`                | Bot Protection and AI Bots managed rulesets | Bot Protection and AI Bots managed rulesets                 | All managed rulesets, including OWASP Core Ruleset | Returns `MANUAL` when the firewall configuration cannot be assessed from the API |
| `security_rate_limiting_configured`                | Not available                               | Available                                                   | Available                                          | Returns `MANUAL` when the firewall configuration cannot be assessed from the API |
| `security_waf_enabled`                             | Not available                               | Available                                                   | Available                                          | Returns `MANUAL` when the firewall configuration cannot be assessed from the API |

<Note>
  The five firewall-related checks (`security_waf_enabled`, `security_custom_rules_configured`, `security_ip_blocking_rules_configured`, `security_rate_limiting_configured`, and `security_managed_rulesets_enabled`) return `MANUAL` when the firewall configuration endpoint is not accessible from the API. The other 15 current Vercel checks do not currently include plan-specific handling in provider logic, but every Vercel check includes exactly one billing-plan metadata category (`vercel-hobby-plan`, `vercel-pro-plan`, or `vercel-enterprise-plan`) alongside its functional security category.
</Note>
