Connecting an Instagram account is the easy part. Knowing it is still working three months later — before a customer tells you it is not — is the product.
Every channel, its real state, and how long it has left — on one screen you do not have to go looking for.
A preview of the working surface. The product is in development.
Google tells us who you are. Instagram authorisation is a second, explicit step, taken when you need it and never bundled into signing in.
You are handed to Instagram, you approve there, and you come back to a connection that is recorded against your workspace and nobody else's.
Connection state is driven by webhooks from the provider, not by a hopeful flag we set at connect time. When an account drops at Instagram's end, the screen changes without you refreshing it.
Every connection shows how long it has left. A token running out is a scheduled event you can see coming, not an outage you discover from a customer.
Reconnecting is one action from the same screen. Disconnecting removes the stored credentials, and you can revoke us from Instagram's side independently at any time.
Everything above a single ChannelProvider interface is written against that interface, never against the vendor. Today it is served by a third party; moving to Meta's own API is a new implementation of that interface and no change above it.
account.connected and account.disconnected drive the state machine. Nothing infers health from the last time an action happened to succeed.
Third-party tokens are encrypted before they are written and decrypted only to perform something you asked for. A copy of the database is not a copy of your accounts.
Every row carries the workspace that owns it, and PostgreSQL row level security refuses the rest. The runtime role is created without the privilege to bypass it, so a bug in a query cannot leak another customer's channels.
The interface is served from the same origin as its API, so the session cookie and both OAuth redirects land in one place. There is no cross-site token relay to get wrong.
This product owns its schema outright and shares no tables with the others. It can leave for its own repository and database without touching anything else.
The connection lifecycle works end to endSign-in, onboarding, the Instagram login connect flow, both webhooks, the channel list, the connection detail view, reconnect and disconnect are all implemented and running.
Some of it is not built yetThe Facebook login route, headless mode, ads activation and the periodic health reconciliation worker are not there. Health today is driven by webhooks rather than by a background sweep.
It will not post on your behalf uninvitedConnecting an account authorises actions you direct. You can disconnect from here, and revoke access from Instagram directly, at any time.