Developing for multiple clients - how do accounts work?

I have just pulled in a new client and a new project! Retool is making possible for some of my small business friends to develop custom solutions that they could never afford previously. I hope to get more. How does this work with multiple clients with multiple apps?

Can I develop apps in my own account and then share them out to the client accounts? Do the clients need to make an extra account just for me as their developer? Do they create their first account and give my account permissions to edit their apps?

What's the best practice here?

Hello dearest Brad! So there are two pieces to your question here: (1) sharing apps, and (2) account management. I'm going to answer them in reverse.

Account management

Currently, Retool doesn't have functionality for shared or master accounts. So you'll need to have a separate "account" for every Retool instance that you want to work on.

Logistically, since we only allow one account per email address (including if you're using SSO), the way to get around this is to add a + to your address. For example, we have a separate Retool instance for building templates called samples, and our logins are justin+samples@retool, alex+samples@retool, etc. So in short, yes, you'll need to maintain separate credentials for each instance (i.e. slightly different emails and passwords).

In my experience with the developer network so far, best practice is to have the client create a Retool instance (e.e. client.retool.com) and then add you as an editor or an admin, again with the email formatting from above. That way when the engagement is over, they can disable you as a user / manage their organization themselves.

Sharing apps

This is actually pretty easy in Retool – if you're developing apps in your personal account, you can export them as JSON and then import them into any other Retool instance.

![Screen Shot 2021-04-19 at 7.06.34 AM|350x500, 50%]
(upload://rUlmRNRV1JYH4K8QWrC1CUnOciU.png)

The only tricky thing here is data sources - you'll need to connect your Postgres/MongoDB/whatever to your client's Retool instance, and try and name it the same thing as in your personal one. Otherwise, you'll need to go through each app's queries and choose the appropriate resource from the dropdown.

Hope this helps!