Multi-Tenant Flows

White label workflow marketplace - Building flows in a multi-tenant fashion

This feature is for you, if you are a SaaS company and want to build one flow that can be used by multiple of your clients, with each of them using their own custom authentication credentials. Meaning, the flow does exactly the same thing, for all your clients, but with different authentication credentials.

Multi-Tenant Flows is a sub-feature of the White Label Embed Portal (WLEP), which is a separate product to be enabled by Locoia support. All flows in the WLEP are also created in a multi-tenant fashion - meaning, an instance of a flow is created per each of your customers with their respective credentials and input variables.

Background

You may use our API to build your own white label integration and automation marketplace. Instead of building one flow for each of your clients, you have the option to build one multi-tenant flow that can be used for all your clients, making maintenance and extending it to new clients super easy.

Step 1: Have your clients authenticate (login)

  • Provide your clients with the possibility to select an automation flow and then based on the Connectors used in that flow the possibility to authenticate (Oauth2, BasicAuth, Username/password) your own software and any third party vender software, just like the would in Locoia directly.

  • You can provide them the same authentication flow, like in Locoia, but in your custom UI style, accessing our API in the background.

  • Authentication needs to happen for all relevant connectors of a particular flow. As part of that you will create multiple Connector Auths and you need to save the corresponding ids and store them on each of your clients account data.

Step 2a: Dynamically passing in authentication credentials via Webhook

  • Webhooks are best way to use for real-time integrations (mostly also 2-way integrations).

  • In addition to the payload (request body) of a webhook triggering the flow, add the corresponding Connector Auth ids as query-string parameters like this:

    /?zendesk_auth_id=12345678&google_sheet_auth_id=98765432

    This means, you need to send the payload (request body) of the webhook, like normally, and in addition via query string the Connector Auth ids with a wording of your choosing, e.g. zendesk_auth_id.

  • Now repeat this for each additional Connector and its Authentication, e.g. as per the example google_sheet_auth_id.

  • Done! Whenever the webhook is now called, the query-string parameters are included (appended) in the payload of the webhook, which allows you to dynamically pass in auth ids of your individual clients. Note: you can also directly pass Connector Auth ids in the payload of the webhook if this is technically easier for you.

Step 2b: Dynamically passing in authentication credentials on Scheduled Flows via Env Variables

  • Many systems don't provide webhooks or there are other reasons, why a scheduled flow execution is sufficient. In these cases, a flow is built and executed with a regular Scheduler Helper with an interval of your choosing.

  • The creation of Connector Authentication can be done either via the Locoia API, called from your system in the look and feel of your UI or manually in the Locoia app.

  • To store all the corresponding Connector Auth ids, an Env Variable is created with e.g. the reference (name) `FlowNameAuthenticationIds`, which needs to be without spaces, so it can be referenced in the flow. The Connector Auth ids should be included as follows:

{
    "customer_name_or_id_1": {
        "zendesk_auth_id": "12345678",
        "google_sheet_auth_id": "98765432"
        ...
    }
},
    "customer_name_or_id_2": {
        "zendesk_auth_id": "12345678",
        "google_sheet_auth_id": "98765432"
        ...
    }
},
    "customer_name_or_id_3": {
        "zendesk_auth_id": "12345678",
        "google_sheet_auth_id": "98765432"
        ...
    }
}
  • The above example shows the Env Variable setup for three customers with two connectors and ... indicating that there could easily be more Connector Auth ids be added, if the flow requires.

  • If a new customer is added to this, it should simply be added (appended) to this in the root level of the JSON structure.

  • Now it's time to setup the flow:

  1. A scheduler is needed, e.g. to run it daily.

  2. Next, the Dict & List Helper is needed with the action Define variables for later use... which needs to reference exactly the previously created Env Variable Input of Define variables action: {{ FlowNameAuthenticationIds }}

  3. The Looper is chosen with the action Iterate over Loop and references the dic1 (just like that without Jinja curly braces, since it is just a reference). Also, the reference name of the loop has been changed to oneClient.

4. Within the Zendesk or Google Sheets connector, you can follow the steps, described under 2a. and include the dynamic auth id, but this time not referencing the webhook web1, but rather the loop like that: {{ oneClient.zendesk_auth_id }} 5. Do the same thing for Google Sheets in our example and any subsequent connector you may have (...), and you are done!

This is a very efficient way of making flow-runs multi-tenant for all your clients. If you have further questions or remarks, please contact us.

The dynamic auth id always overwrites the set Connector Auth on a step, even if the dynamic auth id is invalid.

Last updated