Make.com will require you to have your own API documentation (branded with your whitelabelled logos, URLs, etc.). To find out how to create this, please refer to Whitelabel documentation. Once done, you can proceed to the following tasks.

Base configuration

Make.com has its own guide on how to make custom apps here. If you require some functions that are not covered in our guide below, please refer to the official documentation for ideas or assistance.

In terms of your whitelabelled app, Make.com and Zapier integrations share the same metadata property in your plan permissions. Therefore, in your Stripe account, please set the zapier_integration boolean to True to enable Make.com for your desired plans. You can also visit the Partners Dashboard’s free-plan settings to enable Make.com for free-tier users, if needed.

To start, you will want to go to “Apps” on the left-side menu within your Make.com account, and create a new app. The name, description, logo, etc. are to be determined by you.

After setting up that part, you will be directed to the main app page, to a tab called “Base”. In the base structure code section, you will want to paste the following:

{
  // Default request configuration
  "baseUrl": "https://your-domain.com/api/v1", // Default base URL for all modules and RPCs.
  "headers": {
    // Default HTTP headers for all modules and RPCs.
    "Authorization": "Bearer {{connection.apiKey}}" // Authorization by API key, which user will provide in the connection as parameter.
  },

  // Default response handling
  "response": {
    "error": {
      // Error handling
      "message": "[{{statusCode}}] {{body.error}}" // On error, returns error message as "[statusCode] error text".
    }
  },

  "log": {
    "sanitize": [
      // Excludes sensitive parameters from logs.
      "request.headers.authorization" // Omit HTTP header "Authorization".
    ]
  }
}

Make sure to replace your-domain.com with the URL of your whitelabelled app.

Connections

Next, you will want to navigate to the “Connections” tab, and create a new API-key connection. In the webpage that follows, ensure you are on the “Communication” tab, and use the following code in the account validation process box:

{
  // Request
  "url": "https://your-domain.com/api/v1/user", // Absolute URL to the API endpoint which validates credentials
  "headers": {
    // Additional HTTP headers
    "Authorization": "Bearer {{parameters.apiKey}}" // Authorizes user by API key, provided by user during the connection creation.
  },
  // Response handling
  "response": {
    "metadata": {
      // Metadata success returns user data
      "type": "email",
      "value": "{{body.data.email}}"
    },
    "error": {
      // Error handling
      "message": "[{{statusCode}}] {{body.error}}" // On error, returns error message as "[statusCode] error text".
    }
  },
  "log": {
    "sanitize": [
      // Excludes sensitive parameters from logs.
      "request.headers.authorization" // Omit HTTP header "Authorization".
    ]
  }
}

Afterwards, navigate to the “Parameters” tab, and insert the following code into the box:

[
  {
    "name": "apiKey",
    "type": "text",
    "label": "API Key",
    "help": "To obtain your API Key, please do so within the <Your App> app.",
    "required": true
  }
]

Make sure to replace <Your App> with the name of your whitelabelled app, and replace your-domain.com as before.

Webhooks

We want to set up a webhook for form submissions, so forms submitted to a user’s chatbot can be routed to Make.com. Please navigate to the “Webhooks” tab from the main app’s menu, and create a new webhook. The label should be Form Submission, and the type should be “dedicated URL address”.

Once done, paste the following into the “Communication” code box:

{
  "output": "{{body}}" // Returns webhook's response body as an output bundle.
}

Then, select a connection below. This should be the one you set up in the previous step.

In the “Parameters” tab, paste the following, remember to change the placeholder domain to your own:

[
  {
    "name": "chatbot_uuid",
    "type": "text",
    "label": "Chatbot UUID",
    "help": "Chatbot UUID for tracking form submission. You can find you chatbot UUID [here](https://your-domain.com/site/chatbot/dashboard).",
    "required": true
  }
]

For the “Attach” tab, use the following code:

{
  // Request
  "url": "https://your-domain.com/api/v1/chatbot/{{parameters.chatbot_uuid}}/make-app-subscribe",
  "method": "POST",
  "body": {
    "target_url": "{{webhook.url}}"
  },

  // Response handling
  "response": {
    "data": {
      "externalHookId": "{{body.id}}", // Stores the webhook's ID to be used in the detach remote procedure. It is accessible via "{{webhook.externalHookId}}".
      "token": "{{body.token}}" // Stores the webhook's token to be used in the detach remote procedure. It is accessible via "{{webhook.token}}".
    }
  }
}

And in the “Detach” tab, use this:

{
  // Request
  "url": "https://your-domain.com/api/v1/chatbot/{{parameters.chatbot_uuid}}/make-app-unsubscribe",
  "method": "POST",
  "body": {
    "hook_id": "{{webhook.externalHookId}}"
  }
}

You don’t need anything in the “Update” tab. Save all changes, and you should be done with webhooks.

Modules

You can create new modules from the main app’s “Modules” tab. The following are the 3 that you may want to set up.

Make an API call

This module allows users to call your app’s API via Make.com. When creating this module, you will want to select:

  • Type: Universal

  • Subtype: REST

  • Connection: Select the one you set up in a previous section of this guide

  • Name: Make an API Call

  • Label: Make an API Call

  • Description: Performs an arbitrary authorized API call

You can customize the name, label, and description if you wish.

Once created, you will want to put the following code in the “Communication” tab of your new module:

{
  "qs": {
    "{{...}}": "{{toCollection(parameters.qs, 'key', 'value')}}"
  },
  "url": "{{parameters.url}}", // Defines the fixed base URL and maps the relative path URL from the user.
  "body": "{{parameters.body}}",
  "type": "text",
  "method": "{{parameters.method}}",
  "headers": {
    "{{...}}": "{{toCollection(parameters.headers, 'key', 'value')}}"
  },
  "response": {
    "output": {
      "body": "{{body}}",
      "headers": "{{headers}}",
      "statusCode": "{{statusCode}}"
    }
  }
}

Ensure that the connection is the same as the one you created earlier, and that in “Options”, the module is set to “Visible”.

You do not need to put anything in “Static Parameters”. In “Mappable Parameters”, you should paste the following:

[
  {
    "help": "Enter a path relative to `https://your-domain.com/api/v1`, e.g. `/chatbot/create` ", // Gives instructions to the user about the relative path.
    "name": "url", // Makes value accesible via "{{parameters.url}}"".
    "type": "text",
    "label": "URL",
    "required": true
  },
  {
    "name": "method", // Allows the user to select the method by themselves.
    "type": "select",
    "label": "Method",
    "default": "GET",
    "options": [
      {
        "label": "GET",
        "value": "GET"
      },
      {
        "label": "POST",
        "value": "POST"
      },
      {
        "label": "PUT",
        "value": "PUT"
      },
      {
        "label": "PATCH",
        "value": "PATCH"
      },
      {
        "label": "DELETE",
        "value": "DELETE"
      }
    ],
    "required": true
  },
  {
    "help": "You don't have to add authorization headers; we already did that for you.",
    "name": "headers", // Allows the user to add headers by themselves.
    "spec": [
      {
        "name": "key",
        "type": "text",
        "label": "Key"
      },
      {
        "name": "value",
        "type": "text",
        "label": "Value"
      }
    ],
    "type": "array",
    "label": "Headers",
    "default": [
      {
        "key": "Content-Type",
        "value": "application/json"
      }
    ]
  },
  {
    "name": "qs", // Allows the user to set Query String by themselves.
    "spec": [
      {
        "name": "key",
        "type": "text",
        "label": "Key"
      },
      {
        "name": "value",
        "type": "text",
        "label": "Value"
      }
    ],
    "type": "array",
    "label": "Query String"
  },
  {
    "name": "body", // Allows the user to set Body by themselves.
    "type": "any",
    "label": "Body"
  }
]

Finally, paste the following in “Interface”, and save. Your module is done.

[
  {
    "name": "body",
    "type": "any",
    "label": "Body"
  },
  {
    "name": "headers",
    "type": "collection",
    "label": "Headers"
  },
  {
    "name": "statusCode",
    "type": "number",
    "label": "Status code"
  }
]

Send a message

This module allows users to create chat messages in their chatbot using Make.com. When creating this module, you will want to select:

  • Type: Action

  • Connection: The one you made previously

  • Module action: Create

  • Name: Send a Message

  • Lable: Send a Message

  • Description: Sends messages to a chatbot and receives responses.

Then, in the “Communication” tab, you will want to use the following code:

{
  // Request to API endpoint.
  "url": "/chatbot/{{parameters.chatbot_uuid}}/make-app/message/create", // Relative to base URL
  "method": "POST",
  "headers": {}, // Additional HTTP headers
  "qs": {}, // Query string
  "body": {
    "query": "{{parameters.query}}",
    "session_uuid": "{{parameters.session_uuid}}"
  },

  // Response handling
  "response": {
    "output": "{{body}}" // Returns API response body as an output bundle.
  }
}

Ensure that the connection is correct, and visibility is set to “Visible”. In “Mappable Paramters”, you will want the following:

[
  {
    "name": "chatbot_uuid",
    "type": "text",
    "label": "Chatbot UUID",
    "required": true
  },
  {
    "name": "query",
    "type": "text",
    "label": "Query",
    "required": true
  },
  {
    "name": "session_uuid",
    "type": "text",
    "label": "Session UUID",
    "required": false
  }
]

And in “Interfaces”, the following code:

// Defines JSON object with "id" parameter as expected API response body.
[
  {
    "name": "response",
    "type": "text",
    "label": "AI Chatbot Response"
  },
  {
    "name": "session_uuid",
    "type": "text",
    "label": "Chatbot Session UUID"
  }
]

That should be all that’s needed for your message-sending module.

Submitted forms

This is a module that allows Make.com to capture forms submitted by people who interact with your user’s chatbot. You will want to select the following options when creating this module:

  • Type: Instant Trigger

  • Webhook: Select the webhook you created earlier in the guide

  • Name: Watch New Submitted Forms

  • Label: Watch New Submitted Forms

  • Description: Triggers when a new user submits a form within the chat.

You do not need to do anything in the “Communication” tab, except ensure that the connection is correct and that the module is set to “Visible”. In the “Interface” tab, you can use the following code:

// Defines JSON object with "id", "email, "name" parameters as expected webhook's payload body.
[
  {
    "name": "email",
    "type": "text",
    "label": "Email"
  },
  {
    "name": "name",
    "type": "text",
    "label": "Name"
  },
  {
    "name": "phone",
    "type": "text",
    "label": "Phone"
  }
]

And in the “Samples” tab, you can use the following:

{
  "Email": "address@your-domain.com",
  "Name": "Test Data"
}

After this, you should be all set for modules.

Other settings

In the main app window, you do not need to do anything in the “Remote Procedures”, “Groups”, or “Readme” tabs if you do not want to. You can consult Make.com’s documentation if you would like to customise your integration further.

Once you are set, you can submit your Make.com app for review. You will need to provide a link to your API documentation, as well as create scenarios for each one of your modules.

If you encounter any difficulties with the review process, please let us know.

Once you have completed the review process, your Make.com app should have an associated public invitation link. For example, GPT-trainer’s Make.com link is: https://www.make.com/en/hq/app-invitation/066096884188bc6b173953df718d8808. You can paste this link into the Partners Dashboard once it’s ready.