---
title: Migrate from Bulldozer to Mergify
description: Move from Bulldozer automerge to Mergify's Merge Queue for safer, faster merges.
---

[Bulldozer](https://github.com/palantir/bulldozer) focuses on automerging pull
requests based on labels, reviews, and status checks. Mergify's [Merge
Queue](/merge-queue) covers that and more, with automatic PR updates,
prioritization, batching, and parallel checks.

This page shows a practical path to move from Bulldozer to Mergify's Merge
Queue.

:::tip[Need help?]

We've migrated many teams from Bulldozer. [Reach
out](mailto:support@mergify.com) and we'll review your Bulldozer configuration
and propose an equivalent Mergify setup.

:::

## Typical Migration Plan

1. Keep your labels and branch protections as-is
2. Set up a Mergify merge queue with conditions matching your Bulldozer config
3. Start with a low-impact setup and expand gradually

## Common Bulldozer config → Mergify Merge Queue

Example Bulldozer snippet:

```yaml
merge:
  trigger:
    label: ["merge when ready"]
    branch_patterns: ["feature/.*"]
  method: squash
  required_statuses:
    - "ci/circleci: ete-tests"
```

Equivalent Mergify configuration:

```yaml title=.mergify.yml
merge_protections_settings:
  auto_merge: true

merge_protections:
  - name: bulldozer-equivalent
    if:
      - base = main
      - head ~= ^feature/
    success_conditions:
      - label = merge when ready
      - "check-success = ci/circleci: ete-tests"

queue_rules:
  - name: default
    merge_method: squash
```

Notes:
- [`auto_merge`](/merge-protections/auto-merge) automatically queues PRs when
  all [merge protection](/merge-protections) `success_conditions` pass

- Checks map to `check-success = <name>` (or `check-skipped`, `check-neutral`)

- Required labels map to `label = <name>` conditions

- Approvals map to review count or specific reviewers

- The merge queue keeps PRs updated automatically — no manual rebases needed

## Going Further with Merge Queue

Once you have basic automerge working, you can take advantage of features
Bulldozer doesn't offer:

- [Priorities](/merge-queue/priority) — urgent PRs jump ahead in the queue

- [Batches](/merge-queue/batches) — merge multiple PRs at once to reduce CI
  load

- [Parallel checks](/merge-queue/parallel-checks) — test multiple queue
  entries simultaneously

## Feature parity quick table

- Merge methods: squash/merge/rebase → supported via `merge_method`

- Delete branch after merge → use GitHub's "Automatically delete head branches"
  repository setting

- Rebase/update before merge → automatic in merge queue

- Require labels → `label =` in `success_conditions`

- Restrict by authors/paths → `author =`, `files ~=`, etc. in
  `success_conditions` or `if`
