Make setup
Connect SendBeam to Make: what you need, the steps, and the code.
Via API
There is no SendBeam app in Make today, but its HTTP module covers the same ground: one request adds a contact, another sends the email. It works against a public form endpoint too, with no API key.
Before you start
- An account with Make
- A SendBeam API key, or a form ID
Set it up
- Create an API key. Settings → API keys in SendBeam. Give it contacts:write, and transactional:send if the scenario sends email. The full key is shown once.
- Add the HTTP step. Point Make’s webhook or HTTP module at the endpoint, set the x-api-key header and a JSON body. The examples below are ready to map.
- Test with your own address. Run the scenario once. The contact appears under Contacts within a second; a send appears in Activity with the API filter.
Code
Add a contact (HTTP → Make a request)
Module 2
Module: HTTP → Make a request
URL: https://sendbeam.io/api/v1/contacts
Method: POST
Headers: x-api-key = sb_live_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Body type: Raw
Content type: JSON (application/json)
Request content:
{
"email": "{{1.email}}",
"first_name": "{{1.first_name}}",
"source": "make"
}
Parse response: Yes → use {{2.data.contact.id}} in the next module
Create the key under Settings → API keys with contacts:write.
Send an email (HTTP → Make a request)
Module 3
Module: HTTP → Make a request
URL: https://sendbeam.io/api/v1/send
Method: POST
Headers: x-api-key = sb_live_…
Body type: Raw · JSON
Request content:
{
"contact_id": "{{2.data.contact.id}}",
"subject": "Welcome aboard",
"html_content": "<p>Hi {{first_name}}, thanks for joining.</p>"
}
Needs transactional:send. The response is { “ok”: true, “message_id”: “…” }.
No API key? Post to a signup form instead
Module 2
POST https://sendbeam.io/api/forms/YOUR_SIGNUP_FORM_ID
Headers
Content-Type: application/json
Data (JSON)
{ "email": "{{1.email}}", "first_name": "{{1.first_name}}" }
200 → { "success": true, "message": "Thanks for subscribing!", "redirect_url": null }
Works on every plan. Leave Allowed sites empty on that form, because the HTTP module sends no Origin header.
Things to know
- Turn on “Parse response” so the contact id is available as a mapped value in the next module.
- Add an error handler route for status 409 (contact exists) that calls GET /api/v1/contacts?q={{1.email}} and continues with the matching id.
- Make retries failed modules according to your scenario settings; POST /api/v1/send is not idempotent, so keep retries off for the send module.
Stuck, or found a gap? Ask in the community — questions, tips and every release note, with this page as the source of truth.