Secure setup
Start with least privilege. Keep one private destination repo, limit app installation scope, and ensure that operational ownership is explicit for the team running backups.
- Private destination repo by default.
- Scoped GitHub App installation.
- OAuth auth instead of session-cookie access.
Permissions
Repository and Notion access should fail closed. If required access is missing, the run should surface a clear warning instead of silently skipping content.
Output + monitoring
A secure destination is only useful if backup runs are observable. Pair deterministic output with alerts for run failures and missing access events.
alerts: - run failed - access lost - partial export output: - markdown + json - stable paths - manifest summary
FAQ
Is a private GitHub repo a good place to store Notion backups?
Yes for many people: you control access, Git provides history and diffs, and Markdown remains readable. The key is keeping permissions tight and using scoped, revocable auth.
Will my Notion content be stored anywhere else?
The safest approach is repo-native backups: content is written to your GitHub repo. The service should only keep minimal metadata and encrypted tokens needed to run.
What are the biggest security mistakes people make?
Over-broad GitHub permissions, storing secrets in plaintext, using brittle cookie/session auth, and backing up sensitive workspaces without clear access controls.
Can I restrict the GitHub app to one repo?
Yes — install the GitHub app only on the repo you want as the destination and keep the repo private.
What about team workspaces and shared pages?
Notion content must be shared with the integration. If a page/database isn’t shared, it can’t be backed up — and you should get an alert so you don’t miss it.