Overview
When you connect a GitHub repo to a Canvas app, every pull request gets its own preview deployment at a unique URL. Reviewers can test changes live before merging — no manual deploy needed.How it works
- Open a PR targeting your app’s connected branch
- GitHub sends a
pull_requestwebhook to Canvas - Canvas clones the PR’s head branch, builds it, and deploys to a preview environment
- The preview is live at
https://pr-{N}-{slug}.mxp.co - Push more commits to the PR — the preview auto-updates
- Close or merge the PR — the preview environment is cleaned up
Preview URLs
Preview deploys follow a predictable URL pattern:
Preview environments are fully functional — they use the same API proxy, auth configuration, and environment variables as your production app.
Setup
Preview deploys work automatically once your repo is connected. No additional configuration is needed.1
Connect your repo
2
Open a pull request
Open a PR targeting the connected branch (e.g.,
main). Canvas automatically detects the PR and starts building.3
Review the preview
Visit
https://pr-{N}-{slug}.mxp.co to see the live preview. The URL is also posted as a GitHub deployment status on the PR.Supported webhook events
Preview vs staging vs production
Each preview environment is independent — multiple PRs can have active previews simultaneously.
Cleanup
When a PR is closed (merged or not), Canvas automatically:- Removes the preview environment from the app’s configuration
- Deletes preview assets from S3

