Orbit

Transferring an Orbit Project

A project can be moved to a different Kapsule account without redeploying it or rebuilding its configuration. The move is email-verified, reversible only by transferring it back, and takes everything with it: environments, deployments, environment variables, webhooks and settings.

When You Would Transfer a Project

  • An agency handing a finished site to the client who will own it from now on.
  • A project moving from a personal account to a company account.
  • A team splitting, and a project going with the people who maintain it.

Transferring is not the same as adding a collaborator. If you want someone to work on the project while you keep it, add them to the project's team instead: see Orbit Project Settings.

Starting a Transfer

Open Orbit, click the project, choose Settings, and find Transfer project in the Danger zone. The card describes what happens: the project moves to another Kapsule account, the recipient receives an email to accept, and all data transfers with the project.

  1. Enter the email address of the receiving account owner.
  2. Click Initiate transfer.

The card confirms with Transfer email sent and then shows Transfer pending, naming who it is waiting for and when it expires.

Transfer project card in Orbit settings

Only account owners can transfer a project. If your role is admin, developer or viewer, the card tells you so and the field is unavailable. Ask an owner to do it.

One Pending Transfer At a Time

Starting a new transfer replaces any transfer already pending for that project. The previous link stops working immediately, which is also the quickest way to correct a typo in the address: initiate again with the right one.

What the Recipient Sees

The recipient receives an email with an accept link. Opening it shows a confirmation page headed Accept project transfer, naming the sending account, the project and its slug, and the email address the transfer was sent to.

Underneath, the page states the scope plainly: all environments, deployments, environment variables, webhooks and settings will be transferred, and when the link expires.

Clicking Accept transfer completes the move. The page then reads Transfer complete and redirects them into the project, which is now in their account.

The Recipient Must Be Logged In As That Address

Acceptance checks the logged-in user's email against the address the transfer was sent to. If they do not match, the request is refused with a message naming the address it was sent to and asking them to log in with that account.

That is the security property that makes the whole thing safe: knowing the link is not enough. You have to be the person it was addressed to.

If the recipient does not have a Kapsule account yet, they need to create one with that exact address first, then open the link again.

The 48-Hour Window

A transfer link expires 48 hours after it is created. After that the accept page shows that the transfer is no longer valid and gives the reason: expired.

The same page handles the other terminal states, so a recipient who clicks an old link is told whether it was already accepted, cancelled, or simply expired, rather than seeing a generic error.

If a transfer expires, start a new one. There is no way to extend an existing link.

Cancelling a Pending Transfer

While a transfer is pending, the card offers Cancel. Cancelling invalidates the link immediately, so the accept page will refuse it even if the recipient has the email open in front of them.

Cancel as soon as you realise a transfer went to the wrong address. Do not rely on the 48-hour expiry to do it for you.

What Moves and What Does Not

Everything attached to the project moves with it:

  • Every environment, including staging and previews.
  • The full deployment history.
  • Environment variables, including secrets.
  • Webhooks, cron jobs, edge functions and settings.
  • Custom domains attached to the project.

Environment variables move with the project, secrets included. Anyone who owns the project after the transfer can read and change them. Before transferring a project to a party you do not fully trust, rotate every credential in it: API keys, database passwords, third-party tokens. See Environment Variables in Orbit.

Two things worth thinking about separately:

  • The domain registration. If the project serves a custom domain registered in your Kapsule account, the domain does not move with the project. Transfer or repoint the domain as a separate step: see Transferring a Domain Out.
  • The repository connection. The project keeps pointing at the same repository. The receiving account needs its own access to that repository for future deploys to work, so plan the repository handover at the same time.

After the Transfer

From the sender's side the project simply disappears from the Orbit list. There is no archived copy, and undoing it means asking the new owner to transfer it back.

From the recipient's side the project appears in their Orbit list, still deployed and still serving traffic. Nothing needs to be redeployed.

The first thing the new owner should do is check the project's usage against their own plan. Build minutes and bandwidth allowances are account-wide, so a busy project changes the numbers on both sides: see Orbit Plan Limits.

Transferring Via the API

Transfers can also be driven programmatically: initiate, cancel, and check status are all available as endpoints, documented in the in-panel API reference. See Orbit API Tokens and the REST API. The same rules apply, including owner-only initiation and the email-verified acceptance.

Troubleshooting

The transfer field is unavailable. You are not an account owner.

The recipient says the link does not work. Check three things: whether it has expired, whether it was cancelled or replaced by a newer transfer, and whether they are logged in with the exact address it was sent to.

The recipient has no Kapsule account. They need to sign up with the address the transfer was sent to, then reopen the link.

The project deploys stopped after the transfer. The new account does not have access to the repository. Reconnect it: see Connecting a GitHub Repository.

A custom domain stopped resolving. The domain is still in the old account. Repoint or transfer it.

Where To Go Next

Still need help?

Email us at support@kapsulehost.com or open a chat in KPanel.

Open KPanel