{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-agen-for-work/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["Notification","LightboxImage"]},"type":"markdown"},"seo":{"title":"Heroku integration","siteUrl":"https://developers.frontegg.com/","llmstxt":{"title":"Frontegg Developer Documentation","description":"Authentication, authorization, and user management for Customer Identity, plus Agen for SaaS and Agen for Work. Guides, SDKs, and API references.","sections":[{"title":"Customer Identity (CIAM)","description":"Auth, SSO, SCIM, entitlements, and user management — guides, SDKs, and APIs.","includeFiles":["ciam/**/*.md"],"excludeFiles":[]},{"title":"Agen for SaaS","description":"Agentic access and authorization for SaaS products.","includeFiles":["agen-for-saas/**/*.md"],"excludeFiles":[]},{"title":"Agen for Work","description":"Agentic access and authorization for internal and workforce use.","includeFiles":["agen-for-work/**/*.md"],"excludeFiles":[]},{"title":"Platform","description":"Shared platform overview.","includeFiles":["platform/**/*.md"],"excludeFiles":[]}],"excludeFiles":["internal-docs/**","ciam/guides/env-settings/inject-client-ip.md","CLAUDE.md",".claude/**","**/images/**"],"hide":false}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"heroku-integration","__idx":0},"children":["Heroku integration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Heroku is a cloud platform for building, running, and operating applications. Integrating Heroku with Frontegg lets your application manage apps, dynos, config, add-ons, and other platform resources on behalf of your users — all through Frontegg's integration layer. Heroku authenticates with OAuth 2.0 (Authorization Code flow), so you register an API client in your Heroku account to obtain a Client ID and Client Secret."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Notification","attributes":{"title":"Prerequisites","type":"attention"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.heroku.com/"},"children":["Heroku"]}," account"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Access to your account's ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://dashboard.heroku.com/account/applications"},"children":["Applications settings"]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"connect-to-heroku","__idx":1},"children":["Connect to Heroku"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You register an OAuth API client in the Heroku Dashboard. The client provides the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client ID"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client Secret"]}," and defines the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["OAuth callback URL"]}," that Heroku returns users to after they authorize access."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"step-1-open-api-clients","__idx":2},"children":["Step 1: Open API Clients"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sign in to Heroku and go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Account settings → Applications"]},". Scroll to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Clients"]}," section and click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Register new API client"]},"."]},{"$$mdtype":"Tag","name":"LightboxImage","attributes":{"isLightbox":true},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/heroku-1.10adc97a6580d99f53a2347b3f7abbd17c1c154648652ef089a20671c0f018b0.1ce25488.png","alt":"Heroku API Clients section with the Register new API client button"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"step-2-register-the-client","__idx":3},"children":["Step 2: Register the client"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Register new API client"]}," panel:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Name"]}," — A memorable name, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Frontegg Integration"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["OAuth callback URL"]}," — Your Frontegg Redirect URL: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://YOUR_MCP_GATEWAY_URL/integration-callback"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Register"]},"."]},{"$$mdtype":"Tag","name":"LightboxImage","attributes":{"isLightbox":true},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/heroku-2.59d75ecd9f9c31ccb05ca712bcf17cf9e9d31f01644836f00fa7d1b00b75cc92.1ce25488.png","alt":"Heroku Register new API client panel with the OAuth callback URL highlighted"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"step-3-copy-the-client-id-and-client-secret","__idx":4},"children":["Step 3: Copy the Client ID and Client Secret"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open the API client. Heroku displays the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client ID"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client Secret"]},". Copy both values."]},{"$$mdtype":"Tag","name":"Notification","attributes":{"title":"Keep your Client Secret safe","type":"attention"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Client Secret grants access to your account through the API. Treat it like a password and never expose it in client-side code or commit it to version control. If it is exposed, use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Reset API client secret"]}," to rotate it."]}]},{"$$mdtype":"Tag","name":"LightboxImage","attributes":{"isLightbox":true},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/heroku-3.2dc0b72118e1d03b1c2a6171b2270bca8c183c38f5c183ca684df463435be5de.1ce25488.png","alt":"Heroku API client details showing the Client ID and Client Secret"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"configure-the-frontegg-portal","__idx":5},"children":["Configure the Frontegg portal"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you have your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client ID"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client Secret"]},", configure the integration in the Frontegg portal:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Frontegg portal"]}," and navigate to [ENVIRONMENT] → Integrations → Heroku."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enter the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client ID"]}," and the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client Secret"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Frontegg requests the following scopes during authorization:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Scope"},"children":["Scope"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["read"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read access to non-protected resources"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["write"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Write access to non-protected resources"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["read-protected"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read access, including protected resources"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["write-protected"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Write access, including protected resources"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identity"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read the user's account and identity information"]}]}]}]}]},{"$$mdtype":"Tag","name":"Notification","attributes":{"title":"Keep your credentials secure","type":"attention"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Never share or commit your Client Secret to version control."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"additional-resources","__idx":6},"children":["Additional resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://devcenter.heroku.com/articles/oauth"},"children":["Heroku OAuth documentation"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://devcenter.heroku.com/articles/platform-api-reference"},"children":["Heroku Platform API reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/agen-for-work/connectors/redirect-url"},"children":["How to get your Redirect URL"]}]}]}]}]},"headings":[{"value":"Heroku integration","id":"heroku-integration","depth":2},{"value":"Connect to Heroku","id":"connect-to-heroku","depth":3},{"value":"Step 1: Open API Clients","id":"step-1-open-api-clients","depth":4},{"value":"Step 2: Register the client","id":"step-2-register-the-client","depth":4},{"value":"Step 3: Copy the Client ID and Client Secret","id":"step-3-copy-the-client-id-and-client-secret","depth":4},{"value":"Configure the Frontegg portal","id":"configure-the-frontegg-portal","depth":3},{"value":"Additional resources","id":"additional-resources","depth":3}],"frontmatter":{"category":"DevOps","seo":{"title":"Heroku integration"}},"lastModified":"2026-07-27T12:04:30.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/agen-for-work/connectors/marketplace/heroku","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}