Start a QA.tech test plan from an Envoyer deployment hook after each deploy
Pull request testing
Not supported. Envoyer cannot review a pull request.
Regression testing
Envoyer starts a test plan after deploy.
Envoyer deploys PHP and Laravel applications. A deployment hook can start a QA.tech test plan after each deploy.How to add the hook — including the script from Settings → Integrations — is on Envoyer regression testing. Envoyer cannot review a pull request; see Envoyer pull request testing.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"QA.tech Docs","colors":{"primary":"#4F46E5","light":"#F672AB","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/logo/logo.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=2f0e3745a8079e74e66e0a904232888f","dark":"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/logo/dark.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=8c39f071bcebaa8ec3c9b73c4e34faac","href":"https://docs.qa.tech"},"favicon":"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/favicon.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=b34d80ecef9cd5e082545308e406134f","navbar":{"links":[{"href":"https://qa.tech/contact","label":"Support"}],"primary":{"type":"button","label":"Get Started","href":"https://qa.tech/demo"}},"footer":{"socials":{"x":"https://x.com/getqatech","github":"https://github.com/qAdottech","linkedin":"https://www.linkedin.com/company/qa-tech-ai"}},"seo":{"metatags":{"canonical":"https://docs.qa.tech"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://qa.tech/blog/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"qatech","hasAudioNarration":false,"actualSubdomain":"qatech","customDomains":["docs.qa.tech"],"gitSource":{"type":"github","owner":"qadottech","repo":"qatech","deployBranch":"live","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae2fa8ddc5e3419e43d1ece","collectionId":"46206dad-34dc-4bd6-a279-747cbe04d90c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae2fa8ddc5e3419e43d1ece"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae335a3befa89197b166cc0","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"API and CLI","count":71},{"language":"default","tag":"Endpoints","count":55},{"language":"default","tag":"Build Tests","count":30},{"language":"default","tag":"Get Started","count":26},{"language":"default","tag":"Regression Testing","count":26},{"language":"default","tag":"Agents","count":15},{"language":"default","tag":"Integrations","count":15},{"language":"default","tag":"PR Testing","count":13},{"language":"default","tag":"Runs","count":12},{"language":"default","tag":"Choose your CI","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"a[href='/integrations/mcp']>svg{-webkit-mask-image:url(/images/mcp-logo.svg)!important;mask-image:url(/images/mcp-logo.svg)!important}"}],"page":{"pagePath":"configuration/envoyer","slug":"/configuration/envoyer","pageMetadata":{"title":"Envoyer","description":"Start a QA.tech test plan from an Envoyer deployment hook after each deploy","icon":"php","href":"/configuration/envoyer"},"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: \"Start a QA.tech test plan from an Envoyer deployment hook after each deploy\"\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={a:`a`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Card,CardGroup}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);return _jsxs(_Fragment,{children:[_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Pull request testing`,icon:`code-pull-request`,href:`/pr-testing/envoyer`,children:_jsx(_components.p,{children:`Not supported. Envoyer cannot review a pull request.`})}),_jsx(Card,{title:`Regression testing`,icon:`clipboard-list`,href:`/regression-testing/envoyer`,children:_jsx(_components.p,{children:`Envoyer starts a test plan after deploy.`})})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://envoyer.io`,children:`Envoyer`}),` deploys PHP and Laravel applications. A deployment hook can start a QA.tech test plan after each deploy.`]}),`\n`,_jsxs(_components.p,{children:[`How to add the hook — including the script from `,_jsx(_components.strong,{children:`Settings → Integrations`}),` — is on `,_jsx(_components.a,{href:`/regression-testing/envoyer#set-it-up`,children:`Envoyer regression testing`}),`. Envoyer cannot review a pull request; see `,_jsx(_components.a,{href:`/pr-testing/envoyer`,children:`Envoyer pull request testing`}),`.`]})]})}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":"Envoyer","description":"Start a QA.tech test plan from an Envoyer deployment hook after each deploy","icon":"php","href":"/configuration/envoyer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"qatech","siteName":"QA.tech Docs","title":"Envoyer - QA.tech Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-29T09:04:50.676Z","originalFileLocation":"configuration/envoyer.mdx"},"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=\"Start a QA.tech test plan from an Envoyer deployment hook after each deploy\">\u003cmeta data-mint-head name=\"application-name\" content=\"QA.tech Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Envoyer - QA.tech Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Start a QA.tech test plan from an Envoyer deployment hook after each deploy\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"QA.tech Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.qa.tech/configuration/envoyer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://qatech.mintlify.app/_mintlify/api/og/v2?division=CI\u0026amp;title=Envoyer\u0026amp;description=Start+a+QA.tech+test+plan+from+an+Envoyer+deployment+hook+after+each+deploy\u0026amp;theme=1ae391f617cb8a464ae673d4\u0026amp;signature=bcfbfd78ca61d8c20cf6c52f88b7306cc8664e65b106313f9e6515da41daf0b4\">\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=\"Envoyer - QA.tech Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Start a QA.tech test plan from an Envoyer deployment hook after each deploy\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://qatech.mintlify.app/_mintlify/api/og/v2?division=CI\u0026amp;title=Envoyer\u0026amp;description=Start+a+QA.tech+test+plan+from+an+Envoyer+deployment+hook+after+each+deploy\u0026amp;theme=1ae391f617cb8a464ae673d4\u0026amp;signature=bcfbfd78ca61d8c20cf6c52f88b7306cc8664e65b106313f9e6515da41daf0b4\">\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/qatech/iMlZaRlMvi7xyIQO/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"QA.tech Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4F46E5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.qa.tech/configuration/envoyer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/configuration/envoyer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.qa.tech/#organization\",\"name\":\"QA.tech Docs\",\"url\":\"https://docs.qa.tech\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/logo/logo.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=2f0e3745a8079e74e66e0a904232888f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.qa.tech#website\",\"name\":\"QA.tech Docs\",\"url\":\"https://docs.qa.tech\",\"publisher\":{\"@id\":\"https://docs.qa.tech/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.qa.tech/configuration/envoyer#webpage\",\"url\":\"https://docs.qa.tech/configuration/envoyer\",\"name\":\"Envoyer\",\"description\":\"Start a QA.tech test plan from an Envoyer deployment hook after each deploy\",\"dateModified\":\"2026-09-29T09:04:50.676Z\",\"isPartOf\":{\"@id\":\"https://docs.qa.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.qa.tech/configuration/envoyer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.qa.tech/configuration/envoyer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CI\",\"item\":\"https://docs.qa.tech/configuration/github-app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Envoyer\",\"item\":\"https://docs.qa.tech/configuration/envoyer\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.qa.tech/configuration/envoyer#article\",\"headline\":\"Envoyer\",\"name\":\"Envoyer\",\"description\":\"Start a QA.tech test plan from an Envoyer deployment hook after each deploy\",\"url\":\"https://docs.qa.tech/configuration/envoyer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.qa.tech/configuration/envoyer#webpage\"},\"dateModified\":\"2026-09-29T09:04:50.676Z\",\"publisher\":{\"@id\":\"https://docs.qa.tech/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.qa.tech#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"QA.tech Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"QA.tech Docs","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://qa.tech/blog/"}]},"tabs":[{"tab":"Get Started","icon":"book-open","pages":[{"title":"Get Started","href":"/core-concepts/ai-agent-testing"}]},{"tab":"AI Assistant","icon":"message-bot","pages":[{"title":"AI Assistant","href":"/core-concepts/ai-chat-assistant"}]},{"tab":"Build Tests","icon":"list-check","pages":[{"title":"Build Tests","href":"/best-practices/creating-tests"}]},{"tab":"PR Testing","icon":"code-pull-request","pages":[{"title":"PR Testing","href":"/pr-testing/overview"}]},{"tab":"Regression Testing","icon":"clipboard-list","pages":[{"title":"Regression Testing","href":"/regression-testing/overview"}]},{"tab":"Integrations","icon":"plug","groups":[{"group":"CI","pages":[{"title":"GitHub","sidebarTitle":"GitHub","icon":"github","href":"/configuration/github-app"},{"title":"GitLab Merge Request Reviews and CI/CD","sidebarTitle":"GitLab","icon":"gitlab","href":"/configuration/gitlab"},{"title":"Bitrise","description":"Trigger QA.tech test runs from Bitrise CI/CD: upload your Android or iOS build and run mobile test plans automatically","icon":"mobile","href":"/configuration/bitrise"},{"title":"Envoyer","icon":"php","href":"/configuration/envoyer"},{"title":"API setup for any CI","sidebarTitle":"Other CI (API)","description":"Create an API key, store it in your CI, and find the short IDs a pipeline needs to call QA.tech.","icon":"rotate","href":"/configuration/ci-cd-integration"}]},{"group":"AI assistants","pages":[{"title":"MCP Server","icon":"plug","href":"/integrations/mcp"},{"title":"Custom MCP Integrations","icon":"puzzle-piece","href":"/integrations/custom-mcp"}]},{"group":"Notifications","pages":[{"title":"Slack","icon":"slack","href":"/integrations/slack"},{"title":"Microsoft Teams","icon":"microsoft","href":"/integrations/microsoft-teams"},{"title":"Status Badges","icon":"check","href":"/integrations/status-badges"}]},{"group":"Issue trackers","pages":[{"title":"Jira","icon":"jira","href":"/integrations/jira"},{"title":"Linear","icon":"bug","href":"/integrations/linear"},{"title":"Trello","icon":"trello","href":"/integrations/trello"}]},{"group":"Test management","pages":[{"title":"TestRail","icon":"clipboard-check","href":"/integrations/testrail"},{"title":"Xray","icon":"x-ray","href":"/integrations/xray"}]}]},{"tab":"API and CLI","icon":"square-terminal","pages":[{"title":"API and CLI","href":"/api-reference/introduction"}]}]},"title":"Envoyer - QA.tech Docs","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}