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

# Vercel deployment context

> Connect a Vercel team and read exact deployment revision, environment, state, and freshness in project and task Context.

Atoll records Vercel deployments as External References in project and task
**Context**. The integration reads provider data. It does not deploy, promote,
roll back, move tasks, or mark work accepted.

## Connect a team and project

You need a signed-in workspace owner or admin, a verified repository from the
[read-only GitHub App](/integrations/github#read-only-repository-context), a
Vercel team API token, and permission to create a Vercel account webhook.
Vercel account webhooks require its Pro or Enterprise plan. The Atoll operator
must configure a server-only `VERCEL_DEPLOYMENT_SECRET_KEY` of at least 32
characters before credentials can be saved. Keep this key stable: changing it
makes existing credentials unreadable until the connections are configured
again.

1. Open **Settings > Integrations > Vercel deployments > Connect Vercel**.
2. Copy the proposed **Webhook URL**. It uses
   `https://atollhq.com/api/webhooks/vercel/{connectionId}` and stays inactive
   until you save.
3. In Vercel, create an account webhook for the selected team and project with
   that URL. Select `deployment.created`, `deployment.ready`,
   `deployment.succeeded`, `deployment.error`, `deployment.canceled`, and
   `deployment.promoted`. Copy the once-visible signing secret.
4. Enter the Vercel team and project IDs. Select the Atoll project and its
   verified GitHub repository. Enter the API token and webhook secret, then
   select **Validate and save**.
5. Check the saved mapping and health state. Select **Reconcile deployments**
   to inspect recent deployments that predate the webhook.

Atoll verifies the Vercel project's immutable numeric GitHub repository ID
against the selected verified repository. Names, branches, webhook metadata,
and URLs do not establish lineage. Tokens and webhook secrets are encrypted
with organization, connection, and purpose binding. Settings never returns
them. Atoll makes only authenticated GET requests to Vercel; scope the token
to the required team and use the least provider access available.

An organization supports at most 50 team connections, including disabled
connections. At that limit, reconnect an existing connection; adding another
team returns `connection_limit`. A team connection supports at most 20 project mappings. Use **Add mapping**
or **Edit mapping** and enter both credentials again. In Vercel, add every
mapped project to the existing webhook’s project scope (or use its all-projects
scope). Keep the same callback URL and signing secret for this team connection.
Atoll does not update webhook scope in Vercel. Editing the Atoll project or
repository does not change that scope. Mapping removal is not available in this
slice; to stop all ingestion, disable the connection and then its Vercel webhook. Once a mapping has
observations, its Atoll project and repository cannot change. A concurrent
credential or mapping edit returns `configuration_changed`; reload the
settings before another attempt.

## Read deployment evidence

Each deployment has one current card and immutable observation history.
Cards show `preview`, `staging`, or `production`, the effective state, an exact
revision when proven, provider time, and when Atoll observed the evidence.
The inspector link comes from Vercel and opens its dashboard.

Atoll always links a deployment to its mapped project. It links a task only
when exactly one unarchived task in that project has a PR link with the same
numeric repository ID and exact 40-character SHA. An older deployed SHA stays
project evidence unless it matches such a task. Missing identity shows
**Revision unavailable**; conflicting repository identity stays project-only.

A later complete identity can resolve missing identity without changing deployment
state. Missing fields do not erase known proof. A contradictory known repository
or SHA rejects the observation without changing history or current state.
Partial observations never combine into a complete identity proof.

Preview and staging supersession use ready deployments within the same
mapping and environment. Production supersession uses the latest successfully
observed authenticated Vercel project production target. A rollback can make
an older build current again. A staged production deployment is not proof of
current traffic, and a deployment that once had production traffic is not
necessarily current now. Unknown production targets do not clear the last
known pointer. Rolling releases and unsupported custom environments are not
projected by this integration.

Provider time is the signed webhook event time or a documented state-specific
Vercel timestamp. Atoll's snapshot time is used only to reject late responses;
it is not a provider revision or promotion time. A delayed preview event
cannot rewrite the current environment as preview after a newer authenticated
production snapshot.

Deployment ready, PR merged, application deployed, Production Testing, and
human acceptance are separate facts. This integration changes none of the
other stages.

## Recover, disable, and unlink

**Reconcile deployments** reads one page of at most 50 deployments per mapping
and environment. If a rollback target is older than that page, recovery also
reads that one current production target. The maximum is 151 deployments per
mapping. This extra read does not clear history truncation. It checks each
discovered deployment through the same
canonical identity and projection path as webhooks. The result reports
`discovered`, `ingested`, `skipped`, `failed`, `truncated`, and safe codes.
`skipped` includes an unchanged replay or work deferred by the request time
budget. It does not follow pagination and does not claim complete history.
Any failed, truncated, unsupported, or unresolved result sets `complete=false`.
A project without a known production target also reports incomplete.

**Disable** clears stored credentials and marks the connection's evidence
unavailable. It preserves history. **Reconnect** requires fresh credentials
and successful validation. Disable the webhook in Vercel separately if you
also want its deliveries to stop.

Unlink removes only the selected task or project association. It does not
delete the canonical deployment or suppress future updates. A later verified
update can restore the association.

Agents can use the existing `external-reference list|get` CLI commands and
`atoll_list_external_references` / `atoll_get_external_reference` MCP tools.
Manual `link` remains GitHub-pull-request-only. Vercel connection setup,
disable, and recovery are owner/admin Settings actions; typed CLI/MCP parity
for safe management operations is deferred while the public tool surface is
frozen (follow-up AH-3061).

See [API fields](/api-reference/fields#vercel-connection-and-recovery-fields)
and [webhook responses](/api-reference/webhooks#vercel-deployment-callback).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.