Problem
You push a commit or merge a pull request to your VCS (GitHub, GitLab, or Bitbucket), but no pipeline appears in the CircleCI dashboard. The commit is visible in your VCS, but CircleCI shows no activity for the branch or commit SHA.
Common symptoms:
- No new pipeline row appears on the Pipelines page after pushing.
- The branch does not appear in the branch selector dropdown.
- GitHub/Bitbucket/GitLab webhook shows a
200response, but CircleCI does not start a build. - Pipelines work for some branches or repos but not others.
- A PR/MR merge to the default branch does not trigger a build, even though previous merges did.
Cause
Pipeline triggering depends on a chain of events: VCS webhook > CircleCI ingestion > config parsing > pipeline creation. A break at any point in this chain prevents the pipeline from starting. The most common causes are:
-
Webhook not configured or broken - The VCS webhook pointing to CircleCI was deleted, recreated manually (with the wrong URL or secret), or is returning non-
200responses. - "Build once" deduplication - CircleCI will not trigger a new pipeline for a commit SHA + branch combination that has already been built. If a force-push resets a branch to an already-built commit, no new pipeline is created.
- Project not followed or trigger missing - For GitHub OAuth/Bitbucket, the project was unfollowed. For GitLab, the trigger was deleted or misconfigured.
-
Config error prevents pipeline creation - A syntax error in
.circleci/config.ymlcan cause silent pipeline creation failure. Unlike runtime errors, config-parse failures may not produce a visible "failed" pipeline. -
Branch or tag filtering - Workflow-level
filters(branchonly/ignore, tagonly/ignore) exclude the pushed ref, so the pipeline is created but has zero workflows and appears empty or missing. -
CircleCI platform incident - Intermittent ingestion delays or outages can cause webhooks to be accepted (
200) but not processed. Check status.circleci.com. - GitHub App "build once" with merge queues - When using GitHub merge queues with the GitHub App integration, the final merge to the target branch may not trigger if the commit SHA was already built during the merge queue check.
- Prevent unregistered user spend - If the "Prevent unregistered user spend" setting is enabled in Plan > Usage Controls, commits from users who are not registered CircleCI users will be silently dropped.
Solution
Work through the following checks in order. Stop at the first one that identifies the problem.
1. Check your VCS webhook
GitHub (OAuth or GitHub App):
- Go to Repository Settings > Webhooks.
- Find the webhook with a CircleCI URL (e.g.,
https://circleci.com/hooks/githubor a GitHub App variant). - Click Recent Deliveries and locate the delivery for your commit SHA.
- Verify the response code is
200. If it is4xxor5xx, the webhook configuration is broken.
Bitbucket:
- Go to Repository Settings > Webhooks.
- Enable Request logs on the CircleCI webhook.
- Push a test commit and verify you see a
200response.
GitLab:
- Go to your GitLab project Settings > Webhooks.
- Locate the CircleCI webhook - its URL will contain
circleci.com/trigger-events. - Click Edit, then scroll to Recent events at the bottom of the page.
- Click View details on a recent delivery to see the response. A
200response means delivery was successful. - The X-Gitlab-Event-UUID header value correlates to your commit and is useful for CircleCI Support investigations.
For more details, see How to View Your GitLab Webhook Deliveries.
If no webhook exists, or the URL is wrong, proceed to step 2.
2. Re-establish the project connection
The process differs by VCS integration type.
GitHub OAuth / Bitbucket Cloud (follow/unfollow):
This regenerates the webhook:
- In CircleCI, go to Projects > your project > Project Settings.
- Click Stop Building (or Unfollow Project).
- In your VCS, delete the stale CircleCI webhook if one exists.
- Back in CircleCI, click Set Up Project (or Follow Project) to re-follow.
- Push a new commit to confirm the pipeline triggers.
You can also use the v1.1 API:
# Unfollow (GitHub OAuth)
curl -X POST "https://circleci.com/api/v1.1/project/github/{org}/{repo}/unfollow" \
-H "Circle-Token: $CIRCLECI_TOKEN"
# Follow (GitHub OAuth)
curl -X POST "https://circleci.com/api/v1.1/project/github/{org}/{repo}/follow" \
-H "Circle-Token: $CIRCLECI_TOKEN"
# For Bitbucket, replace "github" with "bitbucket":
# curl -X POST "https://circleci.com/api/v1.1/project/bitbucket/{org}/{repo}/follow" ...GitLab:
GitLab projects do not use the follow/unfollow mechanism. Instead, delete and re-add the trigger:
- In CircleCI, go to Project Settings > Triggers.
- Delete the existing trigger for your GitLab repository.
- Click Add Trigger and reconnect to your GitLab repository.
- CircleCI will automatically create a new webhook in your GitLab project.
- Push a new commit to confirm the pipeline triggers.
Note: The v1.1 follow/unfollow API does not support GitLab projects. GitLab uses opaque project slugs in the format circleci/{org-id}/{project-id}, which are found in Project Settings.
GitHub App:
GitHub App projects also use the trigger-based setup (same as GitLab). Follow the same steps: delete and re-add the trigger in Project Settings > Triggers.
3. Check for "build once" deduplication
CircleCI will not trigger a new pipeline for a commit SHA + branch combination that has already been built. This applies to all VCS types.
If you force-pushed a branch back to a commit that was already built on that branch, no new pipeline is created.
To confirm:
- Check
git logfor the commit SHA on the branch. - Search the CircleCI Pipelines page for that SHA - if a pipeline already exists for that SHA + branch, deduplication is the cause.
Fix: Push a new commit (even an empty one) to generate a unique SHA:
git commit --allow-empty -m "Trigger CI" git push
4. Validate your config
Run the CircleCI CLI to check for syntax errors:
circleci config validate .circleci/config.yml
If you use dynamic configuration (setup: true), also validate your continuation config:
circleci config validate .circleci/continue_config.yml
Common silent failures:
- Indentation errors in YAML.
- Using
version: 2instead ofversion: 2.1with orbs. - A
filtersblock that excludes every branch (e.g.,branches: { ignore: /.*/ }without a correspondingtagsfilter).
5. Check workflow filters
If the pipeline is created but shows zero workflows, your filters are likely excluding the ref:
workflows:
build:
jobs:
- test:
filters:
branches:
only:
- main
- developIn this example, pushing to feature/foo will create a pipeline but run zero workflows. Verify that your branch or tag matches the filter patterns.
GitLab-specific: GitLab triggers have their own filter options (Build Push and Merge Requests, Only Merge Requests, or Custom Filters) configured in Project Settings > Triggers. If your trigger is set to Only Merge Requests, pushes to branches without an open MR will not trigger a pipeline.
6. Check "Prevent unregistered user spend"
- Go to Plan > Usage Controls in the CircleCI app.
- If Prevent unregistered user spend is enabled, commits from users without CircleCI accounts will not trigger pipelines.
- Either disable this setting or ensure all committers have CircleCI accounts.
This is especially relevant for GitHub merge queue workflows, where the merge commit may be authored by a bot account.
7. Check the CircleCI status page
Visit status.circleci.com to see if there is an active incident affecting pipeline triggering or webhook ingestion. If an incident was recently resolved, push a new commit after the resolution time.
8. Test with a minimal config
If none of the above resolves the issue, temporarily replace your config with a minimal one to isolate whether the problem is config-related or platform-related:
version: 2.1
jobs:
test-trigger:
docker:
- image: cimg/base:current
steps:
- run: echo "Pipeline triggered successfully"
workflows:
test:
jobs:
- test-triggerPush this config on a new branch. If it triggers, the issue is in your original config. If it does not trigger, the issue is with the webhook or project setup.
Verification
After applying the relevant fix:
- Push a new commit to the affected branch.
- Confirm a new pipeline appears on the CircleCI Pipelines page within 30 seconds.
- Verify the pipeline has at least one running workflow.
- If using webhooks, check that the VCS webhook delivery shows a
200response.
Additional Resources
- How To View Your GitHub Webhook Deliveries
- How To View Your Bitbucket Webhook Deliveries
- How To View Your GitLab Webhook Deliveries
- GitHub Updates Results in 400 Response for Webhook
- GitHub Merge Queue Compatibility with CircleCI
- GitLab Trigger Options
- CircleCI Status Page
- Configuration Reference - Workflow Filters
Comments
Article is closed for comments.