Przypominamy.com
+
Make

SMS z Make (Integromat): moduł HTTP i blueprint do importu

Google Forms, Shopify, kalendarz, CRM, arkusz — każdy scenariusz w Make może wysłać SMS przez API Przypominamy.com jednym modułem „Make a request". Statusy doręczenia wracają do Custom Webhooka, podpisane HMAC.

Moduł HTTP „Make a request"

Dodaj moduł HTTP → Make a request za triggerem i ustaw pola dokładnie jak niżej. Nie potrzebujesz aplikacji z katalogu ani połączenia OAuth — wystarczy klucz API z panelu.

PoleWartość
URLhttps://api.przypominamy.com/v1/messages
MethodPOST
Headers1. Authorization = Bearer pk_live_… (do testów pk_test_…)
2. Idempotency-Key = {{1.id}} lub inna wartość unikalna dla zdarzenia (opcjonalnie, zalecane)
Body typeRaw
Content typeJSON (application/json)
Request content
{
  "to": "{{1.phone}}",
  "text": "Dzień dobry {{1.name}}, przypominamy o wizycie {{formatDate(1.date; "DD.MM.YYYY HH:mm")}}.",
  "reference": "wizyta-{{1.id}}"
}
Parse responseYes — w kolejnych modułach użyjesz {{2.data.id}}, {{2.data.status}}, {{2.data.parts}}
Evaluate all states as errorsYes — błędy 4xx/5xx zatrzymają scenariusz zamiast przejść dalej z pustą odpowiedzią

Klucz API przechowuj jako zmienną scenariusza lub w Data store, nie wpisuj go na sztywno w wielu modułach. Pola opcjonalne w JSON-ie: from (własny nadpis), send_at (ISO 8601 — {{formatDate(addHours(now; 24); "YYYY-MM-DDTHH:mm:ssZ")}} wyśle za dobę) oraz tablica w to dla wielu odbiorców (do 500). Wartości z Make wstawiaj w cudzysłowach, a tekst z możliwymi cudzysłowami przepuść przez replace(…; """"; "\""), żeby JSON pozostał poprawny.

Limit 120 żądań/min na konto. Przy pętli po iteratorze z setkami elementów użyj modułu Array aggregator i jednego żądania z tablicą numerów, albo modułu Sleep. Po HTTP 429 API zwraca nagłówek Retry-After.

Trzy gotowe scenariusze

Google Forms: Watch Responses → HTTP

Google Forms → SMS z potwierdzeniem

Zapis na szkolenie, badanie lub konsultację przez formularz Google. Uczestnik dostaje SMS z terminem i adresem chwilę po wysłaniu odpowiedzi.

  1. Google Forms → Watch Responses (trigger, co 15 minut lub instant przez Apps Script).
  2. Tools → Set variable: phone = numer w formacie +48… (patrz FAQ).
  3. HTTP → Make a request z reference: "form-" + responseId.
Shopify: Watch Orders → Router → HTTP

Shopify → potwierdzenie zamówienia i wysyłki

Nowe zamówienie wysyła SMS z numerem i kwotą; zmiana statusu na „wysłane" — SMS z linkiem do śledzenia paczki.

  1. Shopify → Watch Orders (Created) i drugi trigger Watch Fulfillments.
  2. Router z filtrem po statusie.
  3. HTTP: to: {{1.customer.phone}}, text z numerem zamówienia, reference: "order-" + {{1.id}}, Idempotency-Key = to samo.
Google Calendar: Search Events → Iterator → HTTP

Kalendarz → przypomnienie dzień przed

Scenariusz uruchamiany codziennie o 10:00 pobiera jutrzejsze wydarzenia i wysyła SMS do uczestnika z numerem w opisie lub w polu gościa.

  1. Google Calendar → Search Events: od addDays(now;1) 00:00 do 23:59.
  2. Iterator po wydarzeniach; Text parser wyciąga numer z opisu.
  3. HTTP z reference: "event-" + {{2.id}}; Google Calendar → Update Event dodaje znacznik „SMS wysłany".

Custom Webhook na zdarzenia message.*

Osobny scenariusz z modułem Webhooks → Custom webhook odbiera statusy doręczenia. Skopiuj adres webhooka (https://hook.eu1.make.com/…) i zarejestruj go w API:

Rejestracja webhookabash
curl -X PUT https://api.przypominamy.com/v1/account/webhook \
  -H "Authorization: Bearer $PRZYPOMINAMY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://hook.eu1.make.com/abc123…"}'
# odpowiedź: { "url": "…", "webhook_secret": "whsec_…" }

Po rejestracji kliknij w Make „Redetermine data structure" i wyślij jeden testowy SMS — Make nauczy się struktury: type (message.sent, message.delivered, message.undelivered, message.failed, message.expired) oraz data.message z polami id, status, to, reference, delivered_at. Dalej: Router po type i akcje — aktualizacja rekordu w Airtable/Sheets, e-mail do obsługi przy failed, ponowna próba innym kanałem przy expired.

Weryfikacja podpisu HMAC

Nagłówek X-Przypominamy-Signature: t=<unix>,v1=<hex>, gdzie v1 = HMAC-SHA256(webhook_secret, "<t>.<surowe body>"). W Custom webhooku włącz opcję Get request headers i Pass through raw body (w ustawieniach zaawansowanych webhooka), a następnie w module Tools → Set variable policz oczekiwany podpis funkcją Make: sha256(t + "." + rawBody; "hex"; webhook_secret) i porównaj z v1 w Filtrze. Odrzucaj także zdarzenia, w których t różni się od timestamp(now) o więcej niż 300 sekund. Jeśli wolisz weryfikację w kodzie, przykłady dla Node.js, Pythona i PHP znajdziesz na stronie /sdk.

Blueprint do importu

Zapisz poniższy JSON jako przypominamy-sms.json, w Make otwórz nowy scenariusz i wybierz … → Import Blueprint. Blueprint zawiera jeden moduł HTTP z kompletną konfiguracją; po imporcie podmień klucz w nagłówku Authorization na swój pk_test_…, wpisz jeden ze swoich zweryfikowanych numerów i kliknij „Run once". Potem dołóż trigger z lewej strony i podmień wartości w body na zmienne z triggera.

przypominamy-sms.jsonMake blueprint
{
  "name": "Przypominamy.com — wyślij SMS",
  "flow": [
    {
      "id": 1,
      "module": "http:ActionSendData",
      "version": 3,
      "parameters": {
        "handleErrors": true,
        "useNewZLibDeCompress": true
      },
      "mapper": {
        "url": "https://api.przypominamy.com/v1/messages",
        "method": "post",
        "headers": [
          {
            "name": "Authorization",
            "value": "Bearer pk_test_WKLEJ_SWOJ_KLUCZ"
          },
          {
            "name": "Idempotency-Key",
            "value": "wizyta-4521-przypomnienie"
          }
        ],
        "qs": [],
        "bodyType": "raw",
        "parseResponse": true,
        "authUser": "",
        "authPass": "",
        "timeout": "",
        "shareCookies": false,
        "ca": "",
        "rejectUnauthorized": true,
        "followRedirect": true,
        "useQuerystring": false,
        "gzip": true,
        "useMtls": false,
        "contentType": "application/json",
        "data": "{\"to\": \"+48600123456\", \"text\": \"Przypominamy o wizycie jutro o 14:00. Odwolaj: 22 123 45 67\", \"reference\": \"wizyta-4521\"}",
        "followAllRedirects": false
      },
      "metadata": {
        "designer": {
          "x": 0,
          "y": 0
        },
        "restore": {
          "expect": {
            "method": {
              "mode": "chose",
              "label": "POST"
            },
            "headers": {
              "mode": "chose"
            },
            "qs": {
              "mode": "chose"
            },
            "bodyType": {
              "label": "Raw"
            },
            "contentType": {
              "label": "JSON (application/json)"
            }
          }
        },
        "parameters": [
          {
            "name": "handleErrors",
            "type": "boolean",
            "label": "Evaluate all states as errors (except for 2xx and 3xx )",
            "required": true
          },
          {
            "name": "useNewZLibDeCompress",
            "type": "hidden"
          }
        ],
        "expect": [
          {
            "name": "url",
            "type": "url",
            "label": "URL",
            "required": true
          },
          {
            "name": "method",
            "type": "select",
            "label": "Method",
            "required": true
          },
          {
            "name": "headers",
            "type": "array",
            "label": "Headers"
          },
          {
            "name": "qs",
            "type": "array",
            "label": "Query String"
          },
          {
            "name": "bodyType",
            "type": "select",
            "label": "Body type"
          },
          {
            "name": "parseResponse",
            "type": "boolean",
            "label": "Parse response",
            "required": true
          },
          {
            "name": "contentType",
            "type": "select",
            "label": "Content type"
          },
          {
            "name": "data",
            "type": "buffer",
            "label": "Request content"
          }
        ]
      }
    }
  ],
  "metadata": {
    "instant": false,
    "version": 1,
    "scenario": {
      "roundtrips": 1,
      "maxErrors": 3,
      "autoCommit": true,
      "autoCommitTriggerLast": true,
      "sequential": false,
      "slots": null,
      "confidential": false,
      "dataloss": false,
      "dlq": false,
      "freshVariables": false
    },
    "designer": {
      "orphans": []
    },
    "zone": "eu1.make.com"
  }
}

Częste pytania o Make + SMS

Czy w Make jest gotowa aplikacja Przypominamy.com?
Aplikacja jest w finalnej fazie publikacji w katalogu Make. Do tego czasu integrację robisz wbudowanym modułem HTTP „Make a request” — konfiguracja z tej strony (URL, nagłówek Authorization, JSON w body) działa identycznie i nie będzie wymagać przebudowy scenariuszy po pojawieniu się aplikacji. Blueprint do importu masz poniżej.
Ile operacji Make zużywa wysłanie SMS-a?
Jeden moduł HTTP to jedna operacja Make niezależnie od liczby odbiorców w żądaniu. Wysyłając tę samą treść do wielu numerów, użyj tablicy w polu to (do 500 numerów) i modułu Array aggregator przed HTTP — zamiast 500 operacji zużyjesz jedną. Koszt SMS-ów po stronie Przypominamy.com jest naliczany osobno za każdą część.
Jak przekazać numer telefonu w poprawnym formacie?
API oczekuje formatu międzynarodowego, np. +48600123456. Jeśli źródło (formularz, sklep) daje numery w postaci 600 123 456 lub 600-123-456, użyj w Make funkcji: "+48" + replace(replace(1.phone; " "; ""); "-"; "") albo modułu Text parser. Numery bez prefiksu kraju API odrzuci z kodem invalid_number, nie wysyłając wiadomości.
Co się dzieje, gdy Make powtórzy wykonanie scenariusza?
Dodaj nagłówek Idempotency-Key z wartością unikalną dla zdarzenia (np. identyfikator zamówienia lub rezerwacji). Ponowne żądanie z tym samym kluczem zwróci istniejącą wiadomość zamiast wysłać drugiego SMS-a. To ważne przy włączonej opcji automatycznego ponawiania w Make i przy webhookach, które źródło może wysłać dwukrotnie.
Jak odebrać w Make status doręczenia?
Utwórz moduł Webhooks → Custom webhook, skopiuj jego adres i zarejestruj go przez PUT /v1/account/webhook. Każda zmiana statusu (message.sent, delivered, undelivered, failed, expired) przyjdzie jako POST z JSON-em i nagłówkiem X-Przypominamy-Signature. Podpis HMAC-SHA256 zweryfikujesz w scenariuszu funkcją sha256 z Make lub — bezpieczniej — w krótkim module Custom JS / zewnętrznym endpointem, a następnie zaktualizujesz rekord po polu reference.

Powiązane integracje

Pierwszy scenariusz z SMS-em dziś

Konto testowe z 25 darmowymi SMS-ami i kluczem pk_test_… działa od razu po rejestracji, bez karty. Importuj blueprint, wklej klucz, uruchom.

Przypominamy.com – logo platformy SMS, MMS i IVR
Asystent Przypominamy ● Online. Odpowiada od razu
Cześć! 👋 Jestem asystentem platformy Przypominamy.com.

Pomogę Ci dobrać plan, wyjaśnię jak działa API lub odpowiem na pytania o SMS, MMS i IVR. Jak mogę pomóc?
teraz