- The provider type, for example GitHub, Slack or HubSpot.
- An identifier you choose, such as
github. You use it in code to say which integration a user is connecting. - Your OAuth app credentials: the client ID and client secret from the app you registered with the provider.
- Scopes: the permissions BundleUp requests when a user connects.
- Any provider-specific settings the provider needs (for example, a subdomain).
You bring your own OAuth app
BundleUp doesn’t provide shared OAuth apps. For every provider, you register an OAuth app (sometimes called a client, application or GitHub App) in the provider’s developer settings, and paste its credentials into BundleUp. This means:- Users see your product name and logo on the provider’s consent screen.
- The provider’s rate limits, app reviews and approvals apply to your app, not one shared with other companies.
- You decide exactly which scopes to request.
Identifier vs ID
Every integration has two names:
The identifier is unique within a workspace. Using the same identifiers in every environment’s workspace (dev, staging, production) means your code doesn’t change between them.
You can have more than one integration for the same provider, for example
github for read-only access and github-admin with broader scopes, each with its own identifier.
Changing an integration
You can update an integration’s credentials and scopes at any time from the dashboard.- New connections use the updated settings.
- Existing connections keep the scopes the user originally granted. Providers don’t extend an existing grant. To give an existing connection new scopes, the user has to go through the authorization flow again.
Deleting an integration
Deleting an integration also deletes every connection created through it. Requests using those connection IDs fail withconnection_invalid afterwards. You receive an integration.deleted webhook.

