Quetzal publishes changes to your codebase via source control.The timing and structure of the changes can be set up to best fit your team’s workflow.
Changes are committed to your codebase via Github commits.By default, changes are published to a single branch by a single localization focused pull request.You can change this to instead publish by direct commits
By default, Quetzal only monitors a single branch and publishes changes to it.You can add new branches to track by setting a filter for which new branches to process, or by invoking Quetzal in the comments of a pull request.Branches can also be added manually via the dashboard.Active branches are processed and updated by Quetzal in real time, ensuring localization is up to date.
You have the option to split translation updates from other code updates.This would allow translation changes to be automatically merged into main, while leaving other code changes to be published via a different pattern.
If you would prefer to update your codebase manually, you can instead pull changes via our API.Changes can be queried and worked into your workflow on your own for maximum control.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Quetzal","colors":{"primary":"#1dd839","light":"#3bf6a2","dark":"#1e8a2e"},"logo":{"light":"https://mintcdn.com/quetzal/_z_ngjGGtb32EFdl/logo/qt-small-logo.png?fit=max\u0026auto=format\u0026n=_z_ngjGGtb32EFdl\u0026q=85\u0026s=78d4ee434fe1a5fcfa1cfd4cb268549f","dark":"https://mintcdn.com/quetzal/_z_ngjGGtb32EFdl/logo/qt-small-logo.png?fit=max\u0026auto=format\u0026n=_z_ngjGGtb32EFdl\u0026q=85\u0026s=78d4ee434fe1a5fcfa1cfd4cb268549f"},"favicon":"https://mintcdn.com/quetzal/_z_ngjGGtb32EFdl/logo/qt-small-logo.png?fit=max\u0026auto=format\u0026n=_z_ngjGGtb32EFdl\u0026q=85\u0026s=78d4ee434fe1a5fcfa1cfd4cb268549f","navbar":{"links":[{"href":"mailto:brendan@getquetzal.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://qtzl.ai/dashboard"}},"footer":{"socials":{"github":"https://github.com/quetzallabs","linkedin":"https://linkedin.com/company/quetzal"}},"icons":{"library":"lucide"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","banner":{"content":"🚀 Under Construction","dismissible":true},"href":"en-US/start/getting-started"},{"language":"es","banner":{"content":"🚀 En construcción...","dismissible":true},"href":"es-419/start/getting-started"},{"language":"it","banner":{"content":"🚀 In costruzione...","dismissible":true},"href":"it-IT/start/getting-started"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"quetzal","hasAudioNarration":false,"actualSubdomain":"quetzal","customDomains":[],"gitSource":{"type":"github","owner":"quetzallabs","repo":"quetzal-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae9216c5bfa35cf90444c9e:success","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"en","tag":"Installation","count":4},{"language":"es","tag":"Installation","count":4},{"language":"it","tag":"Installation","count":4},{"language":"en","tag":"Get Started","count":3},{"language":"es","tag":"Get Started","count":3},{"language":"it","tag":"Get Started","count":3},{"language":"en","tag":"Dashboard","count":1},{"language":"es","tag":"Dashboard","count":1},{"language":"it","tag":"Dashboard","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en-US/install/committing-changes","slug":"/en-US/install/committing-changes","pageMetadata":{"title":"Committing Changes","description":"How Quetzal commits changes to your codebase","href":"/en-US/install/committing-changes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How Quetzal commits changes to your codebase\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Quetzal publishes changes to your codebase via source control.`}),`\n`,_jsx(_components.p,{children:`The timing and structure of the changes can be set up to best fit your team’s workflow.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-gets-published`,children:`What Gets Published?`}),`\n`,_jsx(_components.p,{children:`New translations, translations`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`New translations`}),`\n`,_jsx(_components.li,{children:`Translation revisions`}),`\n`,_jsx(_components.li,{children:`Code updates for localization coverage`}),`\n`]}),`\n`,_jsx(_components.p,{children:`These features can be turned on and off in your integration’s settings.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-changes-are-published`,children:`How Changes Are Published`}),`\n`,_jsx(_components.p,{children:`Changes are committed to your codebase via Github commits.`}),`\n`,_jsx(_components.p,{children:`By default, changes are published to a single branch by a single localization focused pull request.`}),`\n`,_jsx(_components.p,{children:`You can change this to instead publish by direct commits`}),`\n`,_jsx(Heading,{level:`2`,id:`active-branches`,children:`Active branches`}),`\n`,_jsx(_components.p,{children:`By default, Quetzal only monitors a single branch and publishes changes to it.`}),`\n`,_jsx(_components.p,{children:`You can add new branches to track by setting a filter for which new branches to process, or by invoking Quetzal in the comments of a pull request.`}),`\n`,_jsx(_components.p,{children:`Branches can also be added manually via the dashboard.`}),`\n`,_jsx(_components.p,{children:`Active branches are processed and updated by Quetzal in real time, ensuring localization is up to date.`}),`\n`,_jsx(Heading,{level:`2`,id:`translation-only-branch`,children:`Translation Only Branch`}),`\n`,_jsx(_components.p,{children:`You have the option to split translation updates from other code updates.`}),`\n`,_jsx(_components.p,{children:`This would allow translation changes to be automatically merged into main, while leaving other code changes to be published via a different pattern.`}),`\n`,_jsx(Heading,{level:`2`,id:`manual-updates`,children:`Manual Updates`}),`\n`,_jsx(_components.p,{children:`If you would prefer to update your codebase manually, you can instead pull changes via our API.`}),`\n`,_jsx(_components.p,{children:`Changes can be queried and worked into your workflow on your own for maximum control.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Committing Changes","description":"How Quetzal commits changes to your codebase","href":"/en-US/install/committing-changes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What Gets Published?","slug":"what-gets-published","depth":2,"children":[]},{"title":"How Changes Are Published","slug":"how-changes-are-published","depth":2,"children":[]},{"title":"Active branches","slug":"active-branches","depth":2,"children":[]},{"title":"Translation Only Branch","slug":"translation-only-branch","depth":2,"children":[]},{"title":"Manual Updates","slug":"manual-updates","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/quetzal/d06934efd3259f91/lul/lul.js","/_mintlify/custom/quetzal/9407b533d090eeae/lul/post.js"],"subdomain":"quetzal","siteName":"Quetzal","title":"Committing Changes - Quetzal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/en-US/install/committing-changes","matchLevel":0},"es":{"href":"/es-419/start/getting-started","matchLevel":3},"it":{"href":"/it-IT/start/getting-started","matchLevel":3}}},"lastModified":"2026-07-19T04:00:17.841Z","originalFileLocation":"en-US/install/committing-changes.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How Quetzal commits changes to your codebase\">\u003cmeta data-mint-head name=\"application-name\" content=\"Quetzal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Committing Changes - Quetzal\">\u003cmeta data-mint-head property=\"og:description\" content=\"How Quetzal commits changes to your codebase\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Quetzal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://quetzal.mintlify.app/en-US/install/committing-changes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://quetzal.mintlify.site/_mintlify/api/og/v2?division=Installation\u0026amp;title=Committing+Changes\u0026amp;description=How+Quetzal+commits+changes+to+your+codebase\u0026amp;theme=3f2d31e43142d53898dddfb7\u0026amp;signature=bb308761e067b199829f7d51b0f249dcbf2ab7899aae39f4d7cc4887857a6d63\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Committing Changes - Quetzal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How Quetzal commits changes to your codebase\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://quetzal.mintlify.site/_mintlify/api/og/v2?division=Installation\u0026amp;title=Committing+Changes\u0026amp;description=How+Quetzal+commits+changes+to+your+codebase\u0026amp;theme=3f2d31e43142d53898dddfb7\u0026amp;signature=bb308761e067b199829f7d51b0f249dcbf2ab7899aae39f4d7cc4887857a6d63\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/quetzal/YrpEfScSV1fz5R4N/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Quetzal\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1dd839\">\u003clink data-mint-head rel=\"canonical\" href=\"https://quetzal.mintlify.app/en-US/install/committing-changes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en-US/install/committing-changes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://quetzal.mintlify.app/#organization\",\"name\":\"Quetzal\",\"url\":\"https://quetzal.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/quetzal/_z_ngjGGtb32EFdl/logo/qt-small-logo.png?fit=max\u0026auto=format\u0026n=_z_ngjGGtb32EFdl\u0026q=85\u0026s=78d4ee434fe1a5fcfa1cfd4cb268549f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://quetzal.mintlify.app#website\",\"name\":\"Quetzal\",\"url\":\"https://quetzal.mintlify.app\",\"publisher\":{\"@id\":\"https://quetzal.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://quetzal.mintlify.app/en-US/install/committing-changes#webpage\",\"url\":\"https://quetzal.mintlify.app/en-US/install/committing-changes\",\"name\":\"Committing Changes\",\"description\":\"How Quetzal commits changes to your codebase\",\"dateModified\":\"2026-07-19T04:00:17.841Z\",\"isPartOf\":{\"@id\":\"https://quetzal.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://quetzal.mintlify.app/en-US/install/committing-changes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://quetzal.mintlify.app/en-US/install/committing-changes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Installation\",\"item\":\"https://quetzal.mintlify.app/en-US/install/linking-a-repository\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Committing Changes\",\"item\":\"https://quetzal.mintlify.app/en-US/install/committing-changes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://quetzal.mintlify.app/en-US/install/committing-changes#article\",\"headline\":\"Committing Changes\",\"name\":\"Committing Changes\",\"description\":\"How Quetzal commits changes to your codebase\",\"url\":\"https://quetzal.mintlify.app/en-US/install/committing-changes\",\"mainEntityOfPage\":{\"@id\":\"https://quetzal.mintlify.app/en-US/install/committing-changes#webpage\"},\"dateModified\":\"2026-07-19T04:00:17.841Z\",\"publisher\":{\"@id\":\"https://quetzal.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://quetzal.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Quetzal\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Quetzal\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/en-US/install/committing-changes.md","siteName":"Quetzal","nav":{"global":null,"languages":[{"language":"en","banner":{"content":"🚀 Under Construction","dismissible":true},"groups":[{"group":"Get Started","pages":[{"title":"Getting Started","href":"/en-US/start/getting-started"},{"title":"First Time Localization","href":"/en-US/start/first-time-localization"},{"title":"Setting Up Quetzal","href":"/en-US/start/existing-localization"}]},{"group":"Installation","pages":[{"title":"Linking a Repository","description":"Installing Quetzal into your codebase","href":"/en-US/install/linking-a-repository"},{"title":"Committing Changes","href":"/en-US/install/committing-changes"},{"title":"Is My Stack Supported?","description":"Check to see whether Quetzal is compatible with your exact stack.","href":"/en-US/install/is-my-stack-supported"},{"title":"Choosing a Framework","href":"/en-US/install/choosing-a-framework"}]},{"group":"Dashboard","pages":[{"title":"Integration Dashboard","href":"/en-US/dashboard/integration-dashboard"}]}]},{"language":"es","banner":{"content":"🚀 En construcción...","dismissible":true},"pages":[{"title":"es","href":"/es-419/start/getting-started"}]},{"language":"it","banner":{"content":"🚀 In costruzione...","dismissible":true},"pages":[{"title":"it","href":"/it-IT/start/getting-started"}]}]},"basePath":"","title":"Committing Changes - Quetzal","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":[],"chunks":[]}