Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.
This is optional. It adds a Continue with Google button next to email and password. People still need an account in an organization to use the product. It is a per-instance setting in your environment, and it is separate from the Google Workspace service account that sends and reads Gmail.
What you need
A Google account that can use the Google Cloud console.
Your public app address (BETTER_AUTH_URL), exactly as users open it.
Access to your environment variables and a way to restart ReachCrew.
When both GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are set, the button appears and the sign-in goes through Google. If either is empty, the button is hidden. Signing in with Google as an address that already has a password account links the two instead of creating a second user.
1
Configure the OAuth consent screen
In the Google Cloud console open Google Auth platform (previously APIs & Services → OAuth consent screen). If it asks you to get started, click Get started and fill in the app name, a user support email, the Audience and a contact email.
Choose Internal if everyone who signs in belongs to your Google Workspace organization.
Choose External if anyone with a Google account should be able to sign in. External apps start in testing; until you publish and Google verifies the app, only listed test users can sign in.
The default sign-in only needs basic profile and email information. Google’s guide: Configure OAuth.
2
Create the OAuth client
Open Google Auth platform → Clients and click Create client. Set Application type to Web application and give it a name.Under Authorized redirect URIs click Add URI and enter:
https://<your-domain>/api/auth/callback/google
That is your BETTER_AUTH_URL plus /api/auth/callback/google. It must match exactly: same scheme, host and port, no trailing slash. For a local trial use http://localhost:3000/api/auth/callback/google. Add one URI per address you use. Click Create.
The redirect URI must match your public URL exactly, including https.
3
Copy the Client ID and secret
The dialog shows a Client ID and a Client secret. Copy both. You can open the client again later to see the secret.
Open /sign-in in a private window. A Continue with Google button should appear. Click it, pick an account, and you land back in ReachCrew signed in. Google always shows the account chooser.
One of GOOGLE_CLIENT_ID or GOOGLE_CLIENT_SECRET is empty, or ReachCrew was not restarted.
Error 400: redirect_uri_mismatch
The redirect URI in the OAuth client is not identical to <BETTER_AUTH_URL>/api/auth/callback/google. Check the scheme (https), host, port and that BETTER_AUTH_URL is the address in your browser bar.
Access blocked: app has not completed verification / not a test user
An External app in testing only admits the test users listed on the Audience page. Add the person, or publish the app.
Access blocked for an Internal app
The person’s account is outside your Workspace organization. Use External, or sign in with email and password.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ReachCrew","description":"The open-source AI SDR: find leads, reach them on email, LinkedIn and WhatsApp, and let AI work every reply, from one workspace you run yourself.","colors":{"primary":"#335cff","light":"#5b7bff","dark":"#1f3bad"},"logo":{"light":"https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/logo-light.svg?fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=5f8cfd64a1c15e42c96a309144aac39a","dark":"https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/logo-dark.svg?fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=c8de838080aa865de4a2aecef52e8077","href":"https://reachcrew.ai"},"favicon":"https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/logo.svg?fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=850db680a389217504579943797affd4","navbar":{"links":[{"href":"/help","label":"Get help"},{"href":"https://reachcrew.ai","label":"Website"}],"primary":{"type":"github","href":"https://github.com/rishav887/reachcrew"}},"footer":{"socials":{"github":"https://github.com/rishav887/reachcrew","website":"https://reachcrew.ai"},"links":[{"header":"Community","items":[{"label":"Ask a question","href":"https://github.com/rishav887/reachcrew/discussions"},{"label":"Report a bug","href":"https://github.com/rishav887/reachcrew/issues/new?template=bug_report.yml"},{"label":"Request a feature","href":"https://github.com/rishav887/reachcrew/issues/new?template=feature_request.yml"},{"label":"Report a security issue","href":"https://github.com/rishav887/reachcrew/security/advisories/new"}]},{"header":"Project","items":[{"label":"GitHub","href":"https://github.com/rishav887/reachcrew"},{"label":"Changelog","href":"https://github.com/rishav887/reachcrew/blob/main/CHANGELOG.md"},{"label":"Contributing","href":"https://github.com/rishav887/reachcrew/blob/main/CONTRIBUTING.md"},{"label":"License (MIT)","href":"https://github.com/rishav887/reachcrew/blob/main/LICENSE"}]}]},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"recahcrew","hasAudioNarration":false,"actualSubdomain":"recahcrew","customDomains":[],"gitSource":{"type":"github","owner":"rishav887","repo":"linkedin-outreach-platform","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":"","_id":"6af6f68f902237199e0ed1f3"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af6f6ac902237199e0ed38d","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"default","tag":"Guides","count":29},{"language":"default","tag":"Self-hosting","count":29},{"language":"default","tag":"Integrations","count":9},{"language":"default","tag":"AI CRM","count":5},{"language":"default","tag":"Developers","count":4},{"language":"default","tag":"Get started","count":4},{"language":"default","tag":"Email","count":3},{"language":"default","tag":"Leads","count":3},{"language":"default","tag":"LinkedIn","count":3},{"language":"default","tag":"Tables","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"integrations/google-sign-in","slug":"/integrations/google-sign-in","pageMetadata":{"title":"Google sign-in","description":"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.","icon":"log-in","href":"/integrations/google-sign-in"},"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: \"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.\"\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`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,Info,OptimizedImage,Step,Steps}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This is optional. It adds a `,_jsx(_components.strong,{children:`Continue with Google`}),` button next to email and password. People still need an account in an organization to use the product. It is a per-instance setting in your environment, and it is `,_jsxs(_components.strong,{children:[`separate from the `,_jsx(_components.a,{href:`/integrations/google-workspace`,children:`Google Workspace`}),` service account`]}),` that sends and reads Gmail.`]}),`\n`,_jsxs(Info,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`What you need`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A Google account that can use the Google Cloud console.`}),`\n`,_jsxs(_components.li,{children:[`Your public app address (`,_jsx(_components.code,{children:`BETTER_AUTH_URL`}),`), exactly as users open it.`]}),`\n`,_jsx(_components.li,{children:`Access to your environment variables and a way to restart ReachCrew.`}),`\n`,_jsx(_components.li,{children:`About 10 minutes.`}),`\n`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`When both `,_jsx(_components.code,{children:`GOOGLE_CLIENT_ID`}),` and `,_jsx(_components.code,{children:`GOOGLE_CLIENT_SECRET`}),` are set, the button appears and the sign-in goes through Google. If either is empty, the button is hidden. Signing in with Google as an address that already has a password account links the two instead of creating a second user.`]}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Configure the OAuth consent screen`,children:[_jsxs(_components.p,{children:[`In the `,_jsx(_components.a,{href:`https://console.cloud.google.com`,children:`Google Cloud console`}),` open `,_jsx(_components.strong,{children:`Google Auth platform`}),` (previously `,_jsx(_components.strong,{children:`APIs \u0026 Services → OAuth consent screen`}),`). If it asks you to get started, click `,_jsx(_components.strong,{children:`Get started`}),` and fill in the app name, a user support email, the `,_jsx(_components.strong,{children:`Audience`}),` and a contact email.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Choose `,_jsx(_components.strong,{children:`Internal`}),` if everyone who signs in belongs to your Google Workspace organization.`]}),`\n`,_jsxs(_components.li,{children:[`Choose `,_jsx(_components.strong,{children:`External`}),` if anyone with a Google account should be able to sign in. External apps start in testing; until you publish and Google verifies the app, only listed test users can sign in.`]}),`\n`]}),_jsxs(_components.p,{children:[`The default sign-in only needs basic profile and email information. Google’s guide: `,_jsx(_components.a,{href:`https://support.google.com/cloud/answer/15544987`,children:`Configure OAuth`}),`.`]})]}),_jsxs(Step,{title:`Create the OAuth client`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Google Auth platform → Clients`}),` and click `,_jsx(_components.strong,{children:`Create client`}),`. Set `,_jsx(_components.strong,{children:`Application type`}),` to `,_jsx(_components.strong,{children:`Web application`}),` and give it a name.`]}),_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Authorized redirect URIs`}),` click `,_jsx(_components.strong,{children:`Add URI`}),` and enter:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://\u003cyour-domain>/api/auth/callback/google`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[`That is your `,_jsx(_components.code,{children:`BETTER_AUTH_URL`}),` plus `,_jsx(_components.code,{children:`/api/auth/callback/google`}),`. It must match exactly: same scheme, host and port, no trailing slash. For a local trial use `,_jsx(_components.code,{children:`http://localhost:3000/api/auth/callback/google`}),`. Add one URI per address you use. Click `,_jsx(_components.strong,{children:`Create`}),`.`]}),_jsx(Frame,{caption:`The redirect URI must match your public URL exactly, including https.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/google/oauth-client-redirect.jpg?fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=3d3669c9b5df4b7b3f59f7fc960f1bb6`,alt:`Create OAuth client ID form with an authorised redirect URI filled in`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`802`,height:`802`,\"data-path\":`assets/screenshots/google/oauth-client-redirect.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/google/oauth-client-redirect.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=8f2bd84ac118c1559c05f3ade58035bf 280w, https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/google/oauth-client-redirect.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=698ed59b3845880c4bfdae3275cb1721 560w, https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/google/oauth-client-redirect.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=046e0cf09cb96c5b661ab7660b2ea980 840w, https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/google/oauth-client-redirect.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=34bce99941fa9954e6c7d7c9b8ee3758 1100w, https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/google/oauth-client-redirect.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=6de9e019510c39077d883d25686d3430 1650w, https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/screenshots/google/oauth-client-redirect.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=ab076cd02c571c813b5a2f1f76c35b13 2500w`})})]}),_jsx(Step,{title:`Copy the Client ID and secret`,children:_jsxs(_components.p,{children:[`The dialog shows a `,_jsx(_components.strong,{children:`Client ID`}),` and a `,_jsx(_components.strong,{children:`Client secret`}),`. Copy both. You can open the client again later to see the secret.`]})}),_jsxs(Step,{title:`Set the environment variables and restart`,children:[_jsxs(_components.p,{children:[`Add to your environment (`,_jsx(_components.a,{href:`/configuration`,children:`Configuration`}),`):`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`GOOGLE_CLIENT_ID`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`1234567890-abc.apps.googleusercontent.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`GOOGLE_CLIENT_SECRET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`GOCSPX-xxxxxxxx`})]}),`\n`]})})}),_jsx(_components.p,{children:`Restart ReachCrew. The values are read at startup.`})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`check-that-it-works`,children:`Check that it works`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.code,{children:`/sign-in`}),` in a private window. A `,_jsx(_components.strong,{children:`Continue with Google`}),` button should appear. Click it, pick an account, and you land back in ReachCrew signed in. Google always shows the account chooser.`]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`The button does not appear`,id:`the-button-does-not-appear`,children:_jsxs(_components.p,{children:[`One of `,_jsx(_components.code,{children:`GOOGLE_CLIENT_ID`}),` or `,_jsx(_components.code,{children:`GOOGLE_CLIENT_SECRET`}),` is empty, or ReachCrew was not restarted.`]})}),_jsx(Accordion,{title:`Error 400: redirect_uri_mismatch`,id:`error-400-redirect-uri-mismatch`,children:_jsxs(_components.p,{children:[`The redirect URI in the OAuth client is not identical to `,_jsx(_components.code,{children:`\u003cBETTER_AUTH_URL>/api/auth/callback/google`}),`. Check the scheme (`,_jsx(_components.code,{children:`https`}),`), host, port and that `,_jsx(_components.code,{children:`BETTER_AUTH_URL`}),` is the address in your browser bar.`]})}),_jsx(Accordion,{title:`Access blocked: app has not completed verification / not a test user`,id:`access-blocked-app-has-not-completed-verification-not-a-test-user`,children:_jsxs(_components.p,{children:[`An External app in testing only admits the test users listed on the `,_jsx(_components.strong,{children:`Audience`}),` page. Add the person, or publish the app.`]})}),_jsx(Accordion,{title:`Access blocked for an Internal app`,id:`access-blocked-for-an-internal-app`,children:_jsxs(_components.p,{children:[`The person’s account is outside your Workspace organization. Use `,_jsx(_components.strong,{children:`External`}),`, or sign in with email and password.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`next`,children:`Next`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Configuration`,icon:`settings`,href:`/configuration`,children:_jsx(_components.p,{children:`All environment variables.`})}),_jsx(Card,{title:`Resend`,icon:`send`,href:`/integrations/resend`,children:_jsx(_components.p,{children:`Verification and invitation email.`})}),_jsx(Card,{title:`Organizations`,icon:`users`,href:`/workspace/organizations`,children:_jsx(_components.p,{children:`Members and invitations.`})}),_jsx(Card,{title:`Google Workspace`,icon:`mail`,href:`/integrations/google-workspace`,children:_jsx(_components.p,{children:`The separate Gmail service account.`})})]})]})}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":"Google sign-in","description":"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.","icon":"log-in","href":"/integrations/google-sign-in"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Check that it works","slug":"check-that-it-works","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Next","slug":"next","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"recahcrew","siteName":"ReachCrew","title":"Google sign-in - ReachCrew","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-13T11:38:39.015Z","originalFileLocation":"integrations/google-sign-in.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=\"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ReachCrew\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/recahcrew/PDKJgs23Hy0bUg-G/_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/recahcrew/PDKJgs23Hy0bUg-G/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/recahcrew/PDKJgs23Hy0bUg-G/_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/recahcrew/PDKJgs23Hy0bUg-G/_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/recahcrew/PDKJgs23Hy0bUg-G/_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/recahcrew/PDKJgs23Hy0bUg-G/_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/recahcrew/PDKJgs23Hy0bUg-G/_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/recahcrew/PDKJgs23Hy0bUg-G/_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/recahcrew/PDKJgs23Hy0bUg-G/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Google sign-in - ReachCrew\">\u003cmeta data-mint-head property=\"og:description\" content=\"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ReachCrew\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://recahcrew.mintlify.app/integrations/google-sign-in\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://recahcrew.mintlify.site/_mintlify/api/og/v2?division=Integrations\u0026amp;title=Google+sign-in\u0026amp;description=Optionally+show+a+Continue+with+Google+button+on+the+sign-in+and+sign-up+pages%2C+using+a+Google+OAuth+client.\u0026amp;theme=2714b6d21ebe045728904557\u0026amp;signature=f668308552dabd019c1c46a20692363091911bf235f927426af4b8f56b18a1d5\">\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=\"Google sign-in - ReachCrew\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://recahcrew.mintlify.site/_mintlify/api/og/v2?division=Integrations\u0026amp;title=Google+sign-in\u0026amp;description=Optionally+show+a+Continue+with+Google+button+on+the+sign-in+and+sign-up+pages%2C+using+a+Google+OAuth+client.\u0026amp;theme=2714b6d21ebe045728904557\u0026amp;signature=f668308552dabd019c1c46a20692363091911bf235f927426af4b8f56b18a1d5\">\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/recahcrew/PDKJgs23Hy0bUg-G/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ReachCrew\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#335cff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://recahcrew.mintlify.app/integrations/google-sign-in\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/google-sign-in.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://recahcrew.mintlify.app/#organization\",\"name\":\"ReachCrew\",\"url\":\"https://recahcrew.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/recahcrew/b3LOEBKCy3btecGb/assets/logo-light.svg?fit=max\u0026auto=format\u0026n=b3LOEBKCy3btecGb\u0026q=85\u0026s=5f8cfd64a1c15e42c96a309144aac39a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://recahcrew.mintlify.app#website\",\"name\":\"ReachCrew\",\"url\":\"https://recahcrew.mintlify.app\",\"publisher\":{\"@id\":\"https://recahcrew.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://recahcrew.mintlify.app/integrations/google-sign-in#webpage\",\"url\":\"https://recahcrew.mintlify.app/integrations/google-sign-in\",\"name\":\"Google sign-in\",\"description\":\"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.\",\"dateModified\":\"2026-11-13T11:38:39.015Z\",\"isPartOf\":{\"@id\":\"https://recahcrew.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://recahcrew.mintlify.app/integrations/google-sign-in#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://recahcrew.mintlify.app/integrations/google-sign-in#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Integrations\",\"item\":\"https://recahcrew.mintlify.app/integrations\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google sign-in\",\"item\":\"https://recahcrew.mintlify.app/integrations/google-sign-in\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://recahcrew.mintlify.app/integrations/google-sign-in#article\",\"headline\":\"Google sign-in\",\"name\":\"Google sign-in\",\"description\":\"Optionally show a Continue with Google button on the sign-in and sign-up pages, using a Google OAuth client.\",\"url\":\"https://recahcrew.mintlify.app/integrations/google-sign-in\",\"mainEntityOfPage\":{\"@id\":\"https://recahcrew.mintlify.app/integrations/google-sign-in#webpage\"},\"dateModified\":\"2026-11-13T11:38:39.015Z\",\"publisher\":{\"@id\":\"https://recahcrew.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://recahcrew.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ReachCrew\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"ReachCrew\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/integrations/google-sign-in.md","siteName":"ReachCrew","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"Self-hosting","groups":[{"group":"Self-hosting","pages":[{"title":"Self-hosting","icon":"server","href":"/self-hosting"},{"title":"Docker Compose","icon":"container","href":"/self-hosting/docker-compose"},{"title":"From source","icon":"terminal","href":"/self-hosting/from-source"},{"title":"Dokploy on a VPS","icon":"server-cog","href":"/self-hosting/dokploy"},{"title":"Your own domain","icon":"globe","href":"/self-hosting/custom-domain"},{"title":"Logs and dashboards (Grafana)","icon":"chart-line","href":"/self-hosting/observability"},{"title":"Going to production","icon":"rocket","href":"/self-hosting/production"},{"title":"Public demo","icon":"presentation","href":"/self-hosting/demo"},{"title":"Troubleshooting","icon":"life-buoy","href":"/self-hosting/troubleshooting"}]},{"group":"Configuration","pages":[{"title":"Configuration reference","icon":"sliders-horizontal","href":"/configuration"}]},{"group":"Integrations","pages":[{"title":"Integrations","icon":"plug","href":"/integrations"},{"title":"Google Workspace","icon":"mail","href":"/integrations/google-workspace"},{"title":"Gmail reply sync","icon":"inbox","href":"/integrations/gmail-reply-sync"},{"title":"Unipile","icon":"link","href":"/integrations/unipile"},{"title":"Cloudflare R2","icon":"cloud","href":"/integrations/cloudflare-r2"},{"title":"OpenRouter","icon":"sparkles","href":"/integrations/openrouter"},{"title":"Enrichment providers","icon":"zap","href":"/integrations/enrichment-providers"},{"title":"Resend","description":"Send ReachCrew's own account emails (verification, password reset, invitations) through Resend on a domain you verify.","icon":"send","href":"/integrations/resend"},{"title":"Google sign-in","icon":"log-in","href":"/integrations/google-sign-in"}]},{"group":"Policies","pages":[{"title":"Responsible use","description":"Platform terms, email and privacy law, call recording consent, and your data responsibilities.","icon":"scale","href":"/responsible-use"}]}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/development"}]}]},"basePath":"","title":"Google sign-in - ReachCrew","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-Dmj010Ph.js","DynamicMarkdown-GHvayGOn.js","zoom-image-lightbox-8gCTkA22.js","lightbox-handle-r17bVUz3.js"]}