When several people edit a Shopify theme, you can run into situations such as "we don't know when a change was made" or "we want to check what the agency changed."
In Shopify, you can use the "Shopify GitHub App" to connect a theme to a GitHub repository. It is a feature that lets you apply a theme changed on GitHub to Shopify, and record changes made in the Shopify admin on GitHub.
This article explains how Shopify GitHub integration works, its benefits, how to set it up, and points to watch when you use it.
What is Shopify GitHub integration
With Shopify GitHub integration, you can connect a Shopify theme to a GitHub repository. What it manages is theme code and theme settings. It is not a feature for managing products, orders, customers, payment settings, in-app data, and similar information on GitHub.
[Key terms used with the GitHub integration]
| Term | Meaning |
|---|---|
| Repository | The place where a theme's full set of files and its change history are stored |
| Branch | A split within the same repository so that work can proceed separately. You can manage production and development in parallel, for example |
| Commit | Recording one set of file changes as a single entry in the history |
| push | Sending commits recorded on your computer to GitHub |
| Pull request | A way to request a review of the changes on one branch before they are merged into another branch |
A feature that connects a Shopify theme to a GitHub repository
Shopify provides the "Shopify GitHub App." When you connect a GitHub account to Shopify, you can add a branch in a GitHub repository as a Shopify theme.
For a connected theme, the Shopify admin shows the repository name, the branch name, the time of the last commit, and similar details.

Image source: GitHub
You can sync theme changes between Shopify and GitHub
When you update the connected branch on GitHub, the changes are applied to the theme on the Shopify side. Conversely, when you change a theme in the Shopify admin and save it, the changes are automatically committed to the connected GitHub branch.
Changes applied from Shopify to GitHub include customizations in the theme editor, edits in the code editor, and changes made by theme apps installed on the online store.
However, Shopify and GitHub do not automatically merge changes from both sides. If the same file is edited from multiple environments, conflicts or overwrites can occur. See "Points to watch when connecting Shopify and GitHub" in this article for details.
Differences between Shopify CLI and GitHub integration
"Shopify CLI" is also commonly used for Shopify theme development.
Shopify CLI is a command-line tool for developing Shopify themes locally on your computer. You can use it to preview a theme, retrieve a theme from Shopify, and apply code you have written, among other things.
| Item | Shopify GitHub integration | Shopify CLI |
|---|---|---|
| Main use | Managing changes and history for GitHub and the Shopify theme | Theme development in a local environment |
| Change history | Managed with GitHub commits and branches | Managed separately, using Git or a similar tool |
| Preview | Checked on a theme added in Shopify | Checked using a development theme |
| Main users | Teams that want to manage themes on GitHub | Developers who build themes by editing code |
You can also use Shopify GitHub integration and Shopify CLI together. One possible workflow is to develop the theme in a local environment with Shopify CLI and manage the code and change history on GitHub.
For more on Shopify CLI, see the official documentation.
Benefits of managing a Shopify theme on GitHub
On GitHub, you can organize changes using commits, branches, pull requests, and similar tools. You can also have another person review the changes before they are merged into the branch used for publishing.
You can keep theme change history as commits
On GitHub, you can record changes to theme code as commits. Because you can compare the code before and after a change, you can see which files were rewritten and how.
When a problem occurs, you can also follow past commits to investigate the cause. To undo the change that caused it, create a commit on GitHub that reverses that change (a revert) and apply it to the connected branch. The undone changes are then synced to the theme on the Shopify side as well. Changes that span multiple files can also be undone together, on a per-commit basis.
Changes made in the Shopify admin can also be recorded on GitHub
With Shopify GitHub integration, you can record not only changes developers make from GitHub, but also theme changes made on the Shopify side.
For example, even if an agency edits code from GitHub and an e-commerce manager changes images or sections in the Shopify theme editor, content saved on the Shopify side is committed to the connected branch.
A distinctive point is that edits made in the Shopify admin by staff members other than developers can also be included in the change history.
You can see who last edited the theme from a GitHub commit
On August 26, 2026, Shopify updated the commit information for themes connected to GitHub. When you edit a connected theme from the Shopify admin, the changes are recorded on GitHub as a commit by Shopify's bot.
After the update, the body of the commit message shows the store name and the username of the person who last saved the theme. However, changes saved one after another within about 10 seconds are combined into a single commit, and only the username of the person who saved last is shown. If an agency and a store staff member edit at nearly the same time, the name of the person who saved first is not kept. The commit author is still Shopify's bot, so the author shown by standard Git features such as git blame does not change.
For changes saved on the Shopify side, you cannot fully identify the editor of each file. If you want to manage changes in more detail, also consider a workflow in which you create commits and pull requests on GitHub.
Reference: GitHub commits now name the last theme editor (as of August 26, 2026)
You can separate production and development themes with branches
On GitHub, you can create "branches" and manage theme changes separately.
For example, besides the main branch that manages the published theme, you can prepare a branch for a redesign or a campaign.
If you connect a branch that is still in development as an unpublished theme in Shopify, you can review it without affecting the live store. You can also publish a branch for a sale or campaign only for the period you need it, then switch back to the original theme after it ends.
However, each connected branch is added as its own theme in the theme library, and you can add up to 20 themes to the theme library (as of September 2026). Clean up themes for branches you have finished using.
Differences between Shopify's built-in change history, theme duplication, and GitHub integration
Besides integration for implementing code, Shopify also has a change history in the code editor and a feature for duplicating a theme.
| Item | Code editor change history | Theme duplication | GitHub integration |
|---|---|---|---|
| Main use | Reviewing and restoring file changes | Backing up a theme | Ongoing version control |
| Reviewing change diffs | Available per file | Generally not available | Available per commit |
| Branch management | Not available | Not available | Available |
| Management by multiple people | Limited | Limited | Well suited to team workflows |
| Restoring an earlier state | Per file | Use a duplicated theme | Can be undone per commit |
Shopify's code editor has a "Timeline," where you can view and restore earlier versions of existing files. It is not a feature for rolling the entire theme back at once, and deleted files cannot be restored either. Images, CSS, and JavaScript in the assets folder have no history, and history is kept only for a limited time.

Image source: Shopify
Duplicating a theme can be used as a backup before you start a major customization. Shopify also recommends duplicating a theme before you customize it.
GitHub integration is a good fit when you want to keep a change history on an ongoing basis, or when you want to manage several streams of work with branches. Each option has a different role, so even if you use GitHub, it is a good idea to duplicate the theme before a large piece of work.
Stores that are a good fit for Shopify GitHub integration
If a store mainly makes minor changes in the theme editor and rarely edits theme code, duplicating the theme or Shopify's built-in change history may be enough.
On the other hand, GitHub integration is a good fit for stores like the following.
- An agency or several people edit the theme
- Theme code is customized on an ongoing basis
- You want to separate production and development themes
- You want to compare the code before and after changes
- You want to review changes in a pull request before publishing
If you introduce GitHub integration, also decide who owns the repository, which branch is used for publishing, how editing will be done, and how changes will be reviewed.
What you need to connect Shopify and GitHub
To connect a Shopify theme and GitHub, you mainly need to prepare the following three things.
- A GitHub account
- A GitHub repository to store the Shopify theme
- Shopify GitHub App
If you use a personal GitHub account, only one Shopify account can be connected to that personal GitHub account at the same time. Shopify recommends using a GitHub Organization rather than a personal account. An Organization makes it easier for several people to access the repository, and you can also use it when handing management over from an agency to the store operator. For an Organization repository, an account invited as an outside collaborator cannot connect a branch, so add the agency's staff as members of the Organization as well.
Also, connecting a GitHub branch from the Shopify admin requires permissions on both the Shopify side and the GitHub side.
On Shopify, in addition to the store owner, staff and collaborators who have the "Themes" permission for Online Store can connect. On GitHub, you need write access to the repository you are connecting.
With the Shopify GitHub App, the recommended approach is to grant access only to the repositories used for theme management, rather than to all repositories.
How to connect a Shopify theme to GitHub
When you are working with an existing published theme, duplicate the theme before you connect it. That way, you can keep the original state if a problem occurs.
Create a repository for the theme on GitHub
First, create a GitHub repository to store the Shopify theme.
The branch you connect with Shopify GitHub integration must match the standard folder structure of a Shopify theme. The main folders are as follows.
- assets
- blocks
- config
- layout
- locales
- sections
- snippets
- templates
If your development environment transforms theme files with a build tool before applying them, you cannot connect a branch that contains a src folder for the pre-transformation files or a dist folder for the transformed files. Prepare a separate branch that places the transformed files in the standard folder structure, and connect that branch. Folders that are not part of the standard structure are not synced.
Install the Shopify GitHub App
Install the Shopify GitHub App on GitHub so that Shopify can access the repository.
If you use a GitHub Organization, add the Shopify GitHub App to the Organization. You can choose which repositories to grant access to, so specify only the repositories needed for theme management.
If the repository you want does not appear in the Shopify admin, check the access settings for the Shopify GitHub App on the GitHub side.
Connect to GitHub from the Shopify admin
From the Shopify admin, go to Online Store > Themes. In the theme library, select "Add theme," then go to "Connect from GitHub." After that, choose the GitHub account or Organization to connect.
If the Shopify GitHub App is not yet installed or authorized, GitHub's authorization screen appears partway through.

Image source: Shopify
Select a repository and a branch
After you select a GitHub account, specify the repository and branch to use as the Shopify theme.
When the connection is complete, a theme connected to GitHub is added to the theme library. From the theme card, you can check the repository name, the connected branch, the time of the last commit, and similar details.

Image source: Shopify
Check that Shopify and GitHub are in sync
After connecting, check that syncing works. First, change text such as the announcement bar in the Shopify theme editor and save it, then check that a new commit has been created on GitHub. Next, commit a small change from the GitHub side as well, push it to the branch, and check that it is applied to the Shopify theme.
Testing from both sides before you start the actual customization lets you catch connection or permission problems early.
Publish a theme connected to GitHub

Image source: Shopify
A theme connected to GitHub can also be published from the Shopify theme library in the same way as a regular theme.
Publishing an unpublished theme does not remove its connection to the GitHub branch.
Points to watch when connecting Shopify and GitHub
Shopify GitHub integration is useful for managing change history, but if several people use it, you need to decide in advance how editing will be done and the steps up to publishing.
A push to a branch connected to the published theme is applied to the store immediately
Pushing to GitHub does not automatically publish a new theme. Changes are applied to the Shopify theme connected to that branch. If the connected theme is the published theme, however, the live store's display also changes as soon as you push.
Do not push directly to the production branch. Stick to a flow in which you review changes on a development branch and an unpublished theme before merging. If you use Shopify CLI, you can also preview with a development theme.
Be careful when merging theme editor changes with the development branch
Customizations made in the theme editor are saved in settings files that are part of the theme code. Settings for the theme as a whole are written to "config/settings_data.json," and section and block settings for each page are written to JSON templates and section group files.
When an e-commerce manager edits the published theme in the theme editor, changes to these files are automatically committed to the production branch, but they are not included in the development branch. If the same files are also changed on the development branch, merging can cause conflicts, and depending on how you merge, banners and text the e-commerce manager changed can revert to the content from the time of development.
Decide the steps in advance, such as bringing in the latest content from the production branch before you merge the development branch, and reviewing the diffs of JSON files in the pull request.
Do not edit the same file in Shopify and on GitHub at the same time
Editing the same theme file from both the Shopify admin and GitHub can cause conflicts or unintended overwrites. When a file open in the theme editor is changed from GitHub or the code editor, a warning is displayed when you save.
In Shopify's code editor, however, no warning is displayed even if the same file has been changed in another environment. If you save as-is, you may overwrite the changes on the GitHub side. Also, if you edit at the same time, the commit on the Shopify side may be judged to be older content, and syncing it to GitHub may be rejected.
You cannot stop Shopify-side changes from syncing to GitHub automatically
When you edit a theme that is connected to GitHub from the Shopify admin, the changed files are automatically synced to GitHub. You cannot disable this automatic update. If you have in mind a workflow such as "only code approved by developers is reflected in GitHub," you need to set rules in advance with the people who edit the theme from the Shopify side.
If you want to separate the code synced to Shopify from other code, also consider splitting repositories or branches.
If changes do not sync, check the logs
If changes made on GitHub are not reflected in Shopify, you can check the recent sync status from "View logs" on the theme card.
If the latest commit on GitHub is not reflected in the Shopify theme, select "Reset to latest commit" from the "..." (actions) menu on the theme card to apply the latest content on the connected branch to the Shopify side.

Image source: Shopify
However, the theme on the Shopify side is updated to the state of the latest commit on GitHub, so before you do this, check that there are no changes you want to keep.
A disconnected branch cannot be reconnected to the same theme
After you disconnect a branch from a theme, you cannot reconnect the branch to the same theme. If you connect it again, it is added to the theme library as a separate theme.
When you disconnect, check that the target theme and branch are correct before you proceed.
Summary
With the Shopify GitHub integration, you can connect a Shopify theme to a GitHub repository and manage the history of changes to theme code and settings. Changes saved from the Shopify admin are also recorded in GitHub, so you can review, in one place, the history of changes made by an agency and by multiple people in charge.
Because changing a branch connected to the published theme is also reflected in the store, consider a workflow in which you verify changes on a development branch or an unpublished theme before applying them to production.