Connect a team and project
You need a signed-in workspace owner or admin, a verified repository from the read-only GitHub App, 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-onlyVERCEL_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.
- Open Settings > Integrations > Vercel deployments > Connect Vercel.
- Copy the proposed Webhook URL. It uses
https://atollhq.com/api/webhooks/vercel/{connectionId}and stays inactive until you save. - 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, anddeployment.promoted. Copy the once-visible signing secret. - 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.
- Check the saved mapping and health state. Select Reconcile deployments to inspect recent deployments that predate the webhook.
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 showpreview, 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 reportsdiscovered, 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
and webhook responses.
