How installation normally works
What a forward deployed engineer does by hand today.
A public app installed into the customer's portal through an OAuth install link, or a private app for a single portal.
HubSpot is comparatively simple, which makes it a good early test of whether the destination model generalises without special cases.
Available today
The adapter is real and something is incomplete, either a part of the destination or real-provider proof for part of the lifecycle. The gap is stated on the page rather than discovered during an evaluation.
What a forward deployed engineer does by hand today.
A public app installed into the customer's portal through an OAuth install link, or a private app for a single portal.
The person whose calendar decides your go-live date.
A HubSpot super admin, or a user with app installation permission.
Whose identity the product acts as, and where that grant lives.
OAuth 2.0 per portal, with refresh tokens and portal-scoped access.
The repeatable half, turned into software.
The public app OAuth flow, resolving the portal id by introspecting the token because it is not in the token response, reading the scopes the install actually holds rather than the ones we asked for, and per-portal credential storage.
The half that is theirs and should stay theirs.
The portal, and which objects the app may touch.
How capabilities map onto what the platform will let you do.
Granular scopes per object type. Adding a scope to a published app requires existing customers to reinstall, which is a per-customer deployment event rather than a release.
What has to execute before anyone is told it works.
Reading a real object in the portal after install.
Rotation, expiry, revocation, and who notices first.
Refresh tokens per portal, rotated before expiry.
What happens to this customer when you ship version four.
App versions are global; installed scopes are per portal. Those diverge the moment you add a scope.
What actually goes wrong, named rather than generalised.
Scope changes requiring reinstall across the whole customer base. Portal-level API limits shared with everything else the customer runs.
How you learn it broke without the customer telling you.
Health compares the scopes this installation holds against what the current package needs. HubSpot does not extend existing installs when an app adds a scope, so an older customer shows as needing a reinstall instead of the capability silently failing for them.
The adapter is real and something is incomplete, either a part of the destination or real-provider proof for part of the lifecycle. The gap is stated on the page rather than discovered during an evaluation.
The adapter is complete and every path is covered by tests against a provider simulator, which proves our logic and not the provider's. Not yet exercised with real provider credentials: authorization, installation, execution, refresh and reconnect, validation, failure handling.
Lifecycle coverage
This label is generated from a proof registry in the deployment code, not written on this page. A destination cannot read Available until every lifecycle path above has actually run against the real provider, and a test refuses the claim without dated evidence.
Connect a source, publish, and send one link. Your next enterprise customer installs itself.
2 customer environments free, forever. No card required.