Make
Make scenarios that send iMessage and handle replies, including the raw-body setting that makes signature verification possible.
Outbound module
- Add your trigger module (Watch Records, Watch Rows, a webhook, whatever starts the scenario).
- Add module: HTTP, Make a request.
- URL
https://api.bluereacher.com/v1/messages - Method POST
- Headers:
AuthorizationwithBearer brk_your_api_key, andContent-Typewithapplication/json - Body type: Raw, Content type JSON
- URL
{
"to": "{{1.phone}}",
"message": "Hi {{1.first_name}}, it's Marcus from Northside. Saw your enquiry, want me to send times?",
"metadata": { "crm_id": "{{1.id}}" }
}- Turn on Parse response so downstream modules can read
message_idandmode.
Store the key in a Make connection or a data store rather than pasting it into every scenario, so a rotation is one edit.
Phone formatting
Make has no built-in E.164 formatter. Use a Text parser or a formula:
{{ "+1" + replace(replace(replace(1.phone; " "; ""); "-"; ""); "("; "") }}Strip the leading +1 logic if your list is international, and store country separately rather than guessing.
Error handling
Right-click the HTTP module, Add error handler. Route 429 to a Sleep module (use the retryAfter value from the response) then a retry path, and route 4xx other than 429 to a data store or a notification, since those need a human. Capacity never surfaces as an error on the drip lane; excess cold volume queues, per rate limits.
Inbound scenario
- New scenario, first module: Webhooks, Custom webhook. Add it, copy the URL.
- Open the webhook's settings and enable Get request headers and Get request body as raw. Without the raw body you cannot verify the signature, because Make re-serializes parsed JSON and the hash will never match.
- Register the URL as your Blue Reacher webhook endpoint.
- Send a test message, reply to it, and click Redetermine data structure so Make learns the payload.
- Add a Tools, Set variable module computing the HMAC:
{{ sha256(3.rawBody; "hex"; "your_signing_secret") }}Make's sha256 with a key argument produces the HMAC. Compare it to the x-bluereacher-signature header in a Router filter, and drop anything that does not match.
- Router: one branch filtered on
eventequalsmessage.receivedwriting the reply to your CRM, one oncontact.opted_outsetting your suppression flag.
Keep the acknowledgment fast
Add a Webhook response module early in the scenario returning status 200, before the CRM work. Blue Reacher retries non-200 responses with backoff for 24 hours, so a slow scenario produces duplicate replies in your CRM. Acknowledge first, process after.

