When your team uses pull requests to manage template changes, SendOps automatically detects PRs that touch template files and lets you review them without leaving the dashboard. You can approve, request changes, and comment — all posted back to GitHub. A separate Compare tool lets you diff templates between any two branches.

## Pull request detection

Any pull request in your connected repository that modifies files in the configured template path automatically appears on the **Pull Requests** page in SendOps. You don't need to configure anything — if a PR touches a template file, SendOps picks it up.



## PR list

The Pull Requests page shows all open PRs that affect templates. Each entry displays:

- **PR title and number** — links to the PR on GitHub
- **Branches** — source and target branch (e.g. `feature/new-welcome → main`)
- **Templates changed** — count of added, modified, and removed templates
- **Validation status** — whether the changed templates pass validation on the source branch
- **Review status** — current review state (pending, approved, changes requested)

## Reviewing a pull request

Click a PR to open the detail page, where you can review all template changes and submit a review.



### Changed templates

The detail page lists every template affected by the PR, categorized as:

- **Modified** — templates that exist on both branches but have different content. Shows a side-by-side diff with additions highlighted in green and removals in red.
- **Added** — new template files introduced in the PR. Shows the full template source.
- **Removed** — template files deleted in the PR.

Each changed template also shows its validation status on the source branch, so you can catch errors before merging.

### Asset changes

When a PR adds, removes, or swaps an [image](/edge/asset-library), an **Asset changes** section summarises the image diff between the two branches:

- **Added** / **Removed** — an image present only on the PR branch, or only on the target branch, shown with a thumbnail.
- **Swapped** — the same repository path now points at different image bytes; the before and after are shown side by side.

Because swapping an image can leave a template's text completely unchanged, any template whose *only* change is a referenced image is flagged with an **Image changed** badge in the list above — so a visually-identical text diff isn't mistaken for "nothing changed".


  Asset changes appear only when your [Edge stack](/edge/edge-stack) is active, since that's where repository images are promoted. PRs in repositories without an Edge stack show template changes only.


### Submitting a review

Use the review card at the top of the PR detail page to submit your review:


  <Step title="Write a comment (optional)">
    Add a comment explaining your review. This is posted as a review comment on the GitHub PR.
  </Step>

  <Step title="Choose a review action">
    Select one of three actions:

    - **Approve** — approve the PR. This posts an approval review to GitHub.
    - **Request changes** — request changes before the PR can be merged. A comment is required when requesting changes.
    - **Comment** — post a comment without approving or requesting changes.
  </Step>

  <Step title="Submit">
    Click **Submit Review**. Your review is posted to GitHub immediately and reflected on the PR detail page.
  </Step>



  Reviews submitted in SendOps are posted to GitHub via the GitHub API. They appear on the PR in GitHub just like any other review. Team members can review in either SendOps or GitHub — both are reflected on the PR.


## Compare tool

The Compare page lets you diff templates between any two branches, independent of pull requests. This is useful for:

- Checking what's changed on a feature branch before opening a PR
- Comparing two long-lived branches (e.g. `staging` vs `main`)
- Reviewing accumulated changes across multiple commits



### Using Compare


  <Step title="Open Compare">
    Navigate to **Templates → Compare** (or click the **Compare** button on the Templates page).
  </Step>

  <Step title="Select branches">
    Choose a **base branch** and a **compare branch** from the dropdowns. The base is typically your default branch.
  </Step>

  <Step title="Review differences">
    SendOps shows all templates that differ between the two branches, categorized as added, modified, or removed. Modified templates show a side-by-side diff.
  </Step>


## Branch-based development

You can view templates on any branch using the branch selector on the Templates page. This lets you preview how templates look on a feature branch before merging.


  Templates on non-default branches are synced and validated in SendOps, but they are **not deployed to SES**. Only merging (or pushing directly) to the default branch triggers deployment. This means you can safely iterate on template changes in a feature branch without affecting production.


When viewing templates on a non-default branch, SendOps shows a warning banner indicating that you're looking at a branch that is not deployed.

## What's next?

- [Template Management](/templates/template-management) — connecting GitHub, sync, validation, and template structure.
- [Previews & Test Data](/templates/template-versioning) — preview templates, manage test data profiles, and send test emails.