Send email with SendInBlue

What you’ll need

  • SendInBlue account (Free plan)
  • Adalo Paid Plan to access Custom Actions

SendInBlue Configuration

  • Create a free account (300 emails/day limit, which is a lot)
  • Verify a sender
  • Verify a domain (optional but recommended)
  • Get your API key (Account > SMTP & API)

Adalo Configuration

  • Make sure you have data available on the screen where the custom action is set up
  • Create a Custom Action
  • Name: Class Booking Confirmation (or anything that helps you identify the custom action)
  • Type: CREATE
  • Base URL:
  • Method: Post
  • Add a Header
    • Name: api-key
  • Body: Example JSON code below (Full reference of transaction emails you can send:
	"sender": {
		"name": "Peculiar Yogi Mail", // Your display name
		"email": "" // Your sending email address
	"to": [{
		"email": "", // Replace with the user's email address that you want to send to
		"name": "Hello Peculiar Yogi" // Replace with the user's first name
	"subject": "Peculiar Yogi Class Booking Confirmation",
"htmlContent":"<html><head></head><body><p>Hello,</p><p>This is to confirm that you've successfully booked a class at Peculiar Yogi.</p><p>Class Name:</p><p>Class Instructor</p><p>Class Time:</p><p>Namaste.</p></body></html>"
  • Add items to the inputs. Applicable if you’re going to send dynamic data from your data collection depending on the user’s details or what they’re clicking on
    • (Eg. in my case, we have to pull data from the schedule that the student is booking since this is a confirmation email, so I’d have to insert input fields for me to match with magic text from the data collection. More on that below)
  • Run test request > Save custom action

Final touches

  • Match the magic text to the fields from the custom action
  • Eg. if you had “User’s First Name” as an input, you’d want to match it with the User data collection > First Name. Same thing for the email address, if you’re sending it to a user.

Potential Errors

  • 400 Status Error (JSON code) - Use something like a JSON validator before pasting the code into Adalo
  • 401 Authentication/Authorisation error (API Key) - Make sure you’re using V3 API key from your SendInBlue account. Also, make sure you follow the format above. (Don’t input “Authorization” or “Authorisation”, you MUST input “api-key” (without the quotation marks)

@vancewong If you can’t use Magic Text within the htmlContent, how are you populating the variables in that content dynamically? I see your variables are Class Name, Class Instructor, and Class Time. I’m having this problem in SendGrid- although I will try to use a JSON Validator next time. All I’m trying to do is send the 6 digit verification code using one of their (nicely formatted html) dynamic email templates.

Hey @tdhi, you can insert Magic Text in the HTML or even anywhere in the JSON code. Just make sure that you don’t have line breaks within a single statement. That screwed me up quite bad at the start :joy:

For eg, don’t do this:

{ “email” :
“Magic Text”

I haven’t tried sending email templates yet, so I can’t say for sure. But I imagine the implementation is the same, just that you’ll be copying and pasting lesser code.

Hello guys, I am to trying what you outlined above but it keeps saying that the JSON is invalid, 3rd line in particular. Do you please have an idea why that may be? Thank you :slight_smile:

Hi Tommen,
I had same issue, best for me was to copy Vance’s snippet and write on top, then with Sendinblue documenation, you can add the additional fields you need.

Yes, and also try to run your JSON code through a validator such as

That’s really the best way to make sure the code you paste into Adalo works, and doesn’t return an error

Hi guys, thank you for your response. When I copy the Vance’s code into the validator, it shows an error in line 3. I am not sure what should I write (on top as you mentioned). Is that because there are no magic texts (from the Adalo) yet? :slight_smile: Thanks.

Hi Tommen,
Have you removed the " // Replace with the user’s first name" ? All that text should be removed.

Might be a silly thing but sometimes we oversee it :).


Hi @vancewong,
Of course, I did not, what a silly mistake :face_with_hand_over_mouth: Thank you for the clarification!

Could I please ask you one more question? What is specifically Base URL? Or rather where do I get it? Thank you :slight_smile:

We all make silly mistakes :slight_smile:

Base URL as below

1 Like

Thank you very much! :slight_smile:

Fantastic tut! Thank you! It worked for me!

1 Like

Thank you very much!!! thank you

Thanks for this tutorial, it’s great.
I have a bit of a newbie question, in the ‘Adalo Configuration’ section, your 5th step is ‘Base URL’, where do I find this information?
I’m developing an mobile app, so not sure if this makes a difference…

The Base URL you normally find in the API description. It is the endpoint for your call and is different depending on what you wanna do. In this context you would have different URLs for sending a SMS or Email.

Just check the documentation of the API you wanna use. It’s in there for sure :slight_smile:

Thanks, I’ll take a look :slight_smile:

Hey, so, got this working…took a little fiddling about, but got there in the end (such a relief!)

One thing to note, for those coming after, sendinblue have to enable your account to use SMTP, which is done by emailing their support - you get shown the email address when you test the json.
It took a day to get sorted as sendinblue wanted to know what I was doing and what the volume of emails I’d be sending was.

A quick question:

I want to send two emails when someone clicks the ‘submit’ button (one confirmation email to the user, one to me to let me know there’s a new request).
I tried adding additional code to the json for an extra email address, but it didn’t take, here’s what i tried:
“sender”: {
“name”: “GenLife New Recipient Suggestion”,
“email”: “”
“to”: [{
“email”: “my email address”,
“email1”: “their email address”,
“name”: “New recipient suggested”
“subject”: “New Recipient suggested”,
“htmlContent”: “


This is an automated email generated because someone wants to being donating to your organisation, please contact GenLife admin at and we’ll get you onboarding and receiving money from new donors


Because this didn’t work, I tried to create a second custom action changing the variables on the email address, but for some reason I couldn’t save a second custom action, not sure if this is a limitation on custom actions or something which isn’t working at Adalo.
@Colin - any thoughts?

SendInBlue support refused to OK my account. Said that their manual and algorithmic checks rejected me. Strange. Wonder if it was my VPN? I guess I’m headed back to Sendgrid, oh well.

I have around 5 custom actions in one button. Confirmations, updates in DB, sending 2 emails. seems more a Adalo issue. The Sendinblue works fine for me.

1 Like