Overview

This guide outlines the process of using your agency email to register, build, and subsequently transfer ownership of all platforms, provider accounts, and other services to the client.

This guide assumes you are building applications for clients using the Titan boilerplate, as detailed in the Building with Titan documentation.

Steps for Each Platform

1. Supabase

Register & Build: Use your agency email (e.g., youragency@domain.com) to create a Supabase account (if you don’t already have one) and the project for your client.

Transfer:

  1. The client needs to create their own Supabase account and an organization within it.
  2. From your Supabase Dashboard, navigate to Project Settings > General.
  3. Initiate the project transfer to the client’s organization.

    You do not need to be a member or an admin of the client’s Supabase organization to transfer the project to them.

  4. Once transferred, the project will reside in the client’s account and be removed from yours.

Reference: Supabase Project Transfer Guide

Transferring projects with add-ons might require assistance from Supabase support (support@supabase.io). You must be the owner of your Supabase organization to initiate a project transfer.

2. Stripe

Register & Build: The client should already have a Stripe account, but we can use our agency Stripe account for all testing.

Use your agency email to set up a Stripe account. Crucially, use test-mode API keys during the entire development phase to avoid any live transactions.

Transfer:

  1. The client must create their own Stripe account at stripe.com.
  2. Update the vercel deployment to use the client’s Stripe API keys. For production, these will be their live keys.
  3. All future transactions will now be processed through the client’s Stripe account. Your agency’s Stripe account will no longer be associated with the project’s payments.

Reference: Stripe API Keys

Since development should exclusively use test-mode keys, there’s typically no live production data or customer information in your agency’s Stripe account to transfer. Simply switching to the client’s API keys is sufficient. If, for some reason, production data existed in your account, a full account ownership transfer would be necessary. See Stripe Change Account Owner for that scenario.

3. Clerk

Register & Build: Use your agency email to create a Clerk account and then a new application for the client (e.g., “ClientApp”).

Transfer:

  1. The client needs to create their own Clerk account and an organization at clerk.com.
  2. The client must invite your agency email as an Admin to their Clerk organization. They can do this from their Dashboard > Settings > Members > Invite Member.

    You must be an admin in the client’s Clerk organization to transfer the application to them.

  3. Accept the invitation.
  4. In your Clerk Dashboard, navigate to the application you built for the client.
  5. Select “Transfer ownership,” choose the client’s organization from the dropdown, type the application name (e.g., “ClientApp”) to confirm, and click Transfer.
  6. The application is now in the client’s account and removed from yours.
  7. (Optional) You can now leave the client’s organization: In the client’s Dashboard (while logged in as the client or if they do it themselves) > Members, select your agency member and choose “Leave Organization.”

Reference: Clerk Transfer Ownership Guide

If the application is on a paid Clerk plan, ensure the client’s organization has valid billing information set up before or immediately after the transfer.

4. Plunk

Register & Build: Use your agency email to set up a Plunk account and configure email services for the client project.

Transfer:

  1. The client needs to create their own Plunk account.
  2. Contact Plunk support at support@useplunk.com to request an ownership transfer of the project/settings to the client’s account. The exact self-serve process for this is not clearly documented by Plunk.

    You likely do not need to be an admin in their Plunk account for support to facilitate this, but confirm requirements with Plunk support.

  3. If you were self-hosting any part of the email infrastructure (unlikely with Plunk as a service), you would need to migrate that infrastructure to the client.
  4. Once Plunk support confirms the transfer, the account and its configurations will belong to the client and be removed from your agency’s access.

5. Vercel

Register & Build: Use your agency email to create a Vercel account (or use your existing one) and a Vercel Team if you prefer. Deploy the client’s project under your account/team.

Transfer:

  1. The client needs to create their own Vercel account and, optionally, a Vercel Team.
  2. In your Vercel Dashboard, select the project you wish to transfer.
  3. Go to the project’s Settings > General, and find the “Transfer Project” option.
  4. Transfer the project to the client’s Vercel account or team.

    You do not need to be a member or an admin of the client’s Vercel team to transfer a project to them.

  5. The project is now in the client’s Vercel account/team and removed from yours.

Reference: Vercel Transferring Projects

Vercel project transfers are designed to have zero downtime.

6. DataFast

Register & Build: Use your agency email to set up a DataFast account and configure analytics for the client’s project.

Transfer:

  1. The client needs to create their own DataFast account.
  2. Obtain the new tracking script/ID from the client’s DataFast account.
  3. Update the DataFast script tag in your project’s codebase (typically in the main layout or index.html head section) to use the client’s DataFast tracking ID.
  4. Redeploy the application.
  5. All new analytics data will now flow to the client’s DataFast account. Your agency account will no longer collect data for this project.

You do not need an admin role in the client’s DataFast account for this. This is a configuration change within your codebase.

7. GitHub (NextJS Repository)

Register & Build: Use your agency’s GitHub account (or create one if necessary) to host the NextJS project repository.

Transfer:

  1. The client needs to create a GitHub account. If they want the repository under an organization, they must also set up a GitHub organization.
  2. In your GitHub repository, go to Settings > General (scroll to the bottom for the “Danger Zone”).
  3. Click on “Transfer ownership.”
  4. Enter the client’s GitHub username or their GitHub organization name as the new owner.

    You do not need to be a member or an admin of the client’s GitHub account or organization to transfer a repository to them.

  5. Confirm the transfer by typing the repository name.
  6. The repository is now under the client’s GitHub account/organization and removed from yours.

Reference: GitHub Transferring a Repository

You must be the owner of the GitHub repository (or have admin rights with transfer permissions) to initiate the transfer. Ensure any services linked to the repository (e.g., Vercel deployments, CI/CD pipelines) are updated to point to the new repository location after the transfer.

Why Use Your Agency Email?

Using your agency’s official email address for all initial registrations and development offers several advantages:

  • Centralised Management: Simplifies managing multiple client projects under a single agency umbrella before transfer.
  • Collaboration & Handoff: Streamlines team collaboration within your agency and makes the eventual transfer process to the client more straightforward.