Trigger Vercel Deploy (Fix Vercel CI/CD Collaboration Issue for Free Tier Users)

Vercel has cut off collaboration CI/CD for free tier users. Here is a new and simple way to trigger deployment using GitHub Actions.

User Avatar

Faisal Husain

Published

Remember my last blog where I talked about setting up GitHub Actions to build and deploy to Vercel? Well, as many of you found out (including me!), that trick stopped working. 😫

Vercel keeps tightening the screws on the free tier, but as "professional engineers," we always find a way! πŸ˜‚

The Problem

Vercel disables auto-deployments when a collaborator (someone other than the owner) pushes to the repo. This is super annoying when you are working on a side project with a friend and don't want to shell out $20/month just for CI/CD.

The New Trick: The "Poke" Method πŸ‘ˆ

Instead of trying to build the whole app in GitHub Actions (which is slow and hard to configure), we can just "poke" the repository.

The idea is simple:

  1. A collaborator pushes code to main.
  2. A GitHub Action runs on the push.
  3. This action commits a small dummy file (like .deploy-trigger) using a Personal Access Token (PAT) from the repository owner.
  4. Because the push came from the owner, Vercel happily triggers the deployment! πŸš€

Implementing the Solution

First, you need a Personal Access Token (PAT) from the owner's GitHub account with repo permissions. Add this to your repo secrets as VERCEL_GITHUB_TOKEN.

Now, create .github/workflows/trigger-deploy.yml:

.github/workflows/trigger-deploy.yml
name: Trigger Vercel Deploy
 
on:
  push:
    branches: [ main ]
 
jobs:
  trigger-deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
 
      - name: Trigger Vercel Deploy
        run: |
          git config user.name "GitPost Bot"
          git config user.email "[EMAIL_ADDRESS]"
          echo "$(date)" > .deploy-trigger
          git add .deploy-trigger
          git commit -m "chore: trigger deploy [skip ci]"
          git push
        env:
          GITHUB_TOKEN: ${{ secrets.VERCEL_GITHUB_TOKEN }}

Why this works?

  • GitPost Bot: We use a bot name to keep the commit history clean.
  • .deploy-trigger: A small file that stores the date of the last trigger.
  • [skip ci]: We add this to the commit message so GitHub Actions doesn't go into an infinite loop (ironically, Vercel will still see the push and deploy it).

Step to get VERCEL_GITHUB_TOKEN:

  1. Go to your GitHub Settings > Developer settings > Personal access tokens > Tokens (classic).
  2. Generate a new token with repo scope.
  3. Copy it and go to your repository > Settings > Secrets and variables > Actions.
  4. Add a new repository secret named VERCEL_GITHUB_TOKEN.

And there you have it! πŸŽ‰ Now every time your collaborator pushes, this action will "poke" the repo as you, and Vercel will start the deployment. It's fast, free, and works like a charm. πŸ˜ŽπŸš€

Thank you bye bye πŸ™‹β€β™‚οΈ

Let's work together

Have a product problem worth solving?

I help teams build fast, dependable products with thoughtful interfaces and strong engineering foundations.