SMS w n8n z własnego numeru: wysyłka i odbiór
Sprawdzone z dokumentacją:
W n8n wysyłasz SMS węzłem HTTP Request: POST https://smsportal.app/api/v1/gateway/send-sms, nagłówek x-api-key i JSON z recipients oraz message. Odpowiedzi klientów odbiera węzeł Webhook, do którego smsportal wysyła zdarzenie MESSAGE_RECEIVED. SMS wychodzi z Twojego telefonu z Androidem, więc klient widzi Twój numer i może odpisać.
Czego potrzebujesz
- n8n w chmurze albo na własnym serwerze (węzły HTTP Request i Webhook są wbudowane).
- Konto smsportal z podłączonym telefonem z Androidem i kartą SIM.
- Klucz API z panelu smsportal (Klucze API → Wygeneruj klucz API).
- Do odbioru odpowiedzi: n8n dostępne z internetu pod adresem HTTPS.
Jak wysłać SMS z n8n
Zapisz klucz API jako poświadczenie
W n8n utwórz poświadczenie typu Header Auth: nazwa nagłówka
x-api-key, wartość to klucz z panelu smsportal. Dzięki temu klucz nie trafi do eksportowanego JSON workflow.Wklej gotowy węzeł
Skopiuj JSON poniżej i wklej go na pustą kanwę n8n skrótem Ctrl+V (Cmd+V na Macu). Powstanie węzeł HTTP Request z adresem, nagłówkiem i ciałem. Zamień nagłówek na swoje poświadczenie Header Auth.
Węzeł HTTP Request do wklejenia{ "nodes": [ { "parameters": { "method": "POST", "url": "https://smsportal.app/api/v1/gateway/send-sms", "sendHeaders": true, "headerParameters": { "parameters": [{ "name": "x-api-key", "value": "TWOJ_KLUCZ_API" }] }, "sendBody": true, "specifyBody": "json", "jsonBody": "={\n \"recipients\": [\"{{ $json.phone }}\"],\n \"message\": \"{{ $json.message }}\"\n}", "options": {} }, "name": "Wyślij SMS (smsportal)", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [460, 300] } ], "connections": {} }Podepnij dane z poprzedniego węzła
Węzeł czyta pola
phoneimessagez poprzedniego kroku. Numer podawaj z kierunkowym kraju, np.+48600100200. Opcjonalnie dodajdeviceId(przy kilku telefonach),simSubscriptionId(telefon z dwiema kartami) alboscheduledAt(wysyłka później, czas ISO 8601).Przetestuj na własnym numerze
Kliknij Execute step. Odpowiedź 200 oznacza, że wiadomość trafiła do kolejki. Status (wysłana, doręczona) zobaczysz w panelu.
Jak odebrać odpowiedź klienta w n8n
Gdy telefon odbierze SMS, smsportal wysyła POST z JSON-em na Twój adres. Pola, których zwykle potrzebujesz: sender (numer nadawcy), message (treść), receivedAt i webhookEvent. Każde żądanie ma nagłówek X-Signature: HMAC-SHA256 surowego ciała, liczony Twoim sekretem podpisu.
- Dodaj węzeł Webhook, metoda
POST, ścieżka np.sms-przychodzace. Skopiuj **Production URL**. - W panelu smsportal otwórz Webhooki → Utwórz webhook, wklej adres, wpisz sekret podpisu (co najmniej 20 znaków) i zaznacz zdarzenie
MESSAGE_RECEIVED. - Włącz workflow. Dane są w
$json.body, np.{{ $json.body.sender }}i{{ $json.body.message }}. - Żeby sprawdzić podpis, włącz w węźle Webhook opcję Raw Body i policz w węźle Crypto (akcja Hmac, SHA256, kodowanie hex) skrót ciała swoim sekretem. Wynik ma być równy nagłówkowi
x-signature.
{
"smsId": "6720f0c2a1b2c3d4e5f60718",
"message": "Potwierdzam wizytę",
"deviceId": "671f9e10a1b2c3d4e5f60001",
"webhookSubscriptionId": "671fa001a1b2c3d4e5f60002",
"webhookEvent": "MESSAGE_RECEIVED",
"idempotencyKey": "3f1c9a8e-5d2b-4c7a-9e1f-2b6d8c0a4e57",
"sender": "+48600100200",
"receivedAt": "2026-10-28T09:41:00.000Z"
}Gotowe scenariusze
Nowy wiersz w Arkuszu Google wysyła SMS
Google Sheets Trigger (zdarzenie Row added) uruchamia workflow, a HTTP Request wysyła SMS na numer z wiersza. Trigger sprawdza arkusz co pewien czas, więc wiadomość wychodzi po najbliższym sprawdzeniu, nie natychmiast.
Odpowiedź klienta trafia na Slacka lub Telegram
Webhook z
MESSAGE_RECEIVED, potem węzeł Slack albo Telegram z treściąSMS od {{ $json.body.sender }}: {{ $json.body.message }}. Zespół widzi odpowiedzi bez otwierania panelu.Alert, gdy SMS się nie wyśle
Drugi webhook ze zdarzeniem
MESSAGE_FAILEDdostajerecipient,errorCodeierrorMessage. Wyślij je na Slacka albo e-mailem, żeby od razu wiedzieć, która wiadomość nie wyszła.
Błędy i rozwiązania
- HTTP Request zwraca 401
- Przyczyna: Nagłówek
Authorizationzamiastx-api-keyalbo błędny klucz. - Co zrobić: Wysyłaj nagłówek
x-api-key. W poświadczeniu Header Auth sprawdź, czy nazwa nagłówka jest dokładnie taka. - API odpowiada 200, ale SMS nie wychodzi
- Przyczyna: Telefon jest offline albo Android usypia aplikację.
- Co zrobić: Sprawdź zasięg, internet i ekran stanu telefonu w panelu. Wiadomość czeka w kolejce do 72 godzin, potem wygasa.
- Webhook nic nie dostaje
- Przyczyna: W panelu jest adres testowy (
webhook-test) albo workflow jest wyłączony. - Co zrobić: Wklej Production URL i włącz workflow. n8n na
localhostnie jest widoczne z internetu: potrzebny publiczny adres HTTPS (zmiennaWEBHOOK_URL) albo tunel. - 429 przy wysyłce
- Przyczyna: Wyczerpany limit SMS-ów w pakiecie.
- Co zrobić: Treść odpowiedzi mówi, który limit się skończył. Sprawdź licznik w panelu albo zmień pakiet w Cenniku.
- Jeden SMS liczy się jako kilka
- Przyczyna: Polskie znaki albo emotka zmieniają kodowanie i limit spada ze 160 do 70 znaków na część.
- Co zrobić: Skróć treść albo pisz bez polskich znaków, jeśli zależy Ci na jednej części.
Najczęstsze pytania
Czy smsportal ma własny węzeł w n8n?
Nie ma. Wystarczą dwa wbudowane węzły: HTTP Request do wysyłki i Webhook do odbioru. Konfiguracja zajmuje kilka minut i działa tak samo w każdym workflow.
Ile SMS-ów n8n może wysłać naraz?
n8n wyśle żądania szybko, ale telefon wysyła SMS-y z przerwą między wiadomościami (domyślnie 5 sekund, czyli około 720 na godzinę z jednego telefonu). Duże wysyłki rozłóż w czasie albo dodaj kolejny telefon.
Czy n8n wie, że SMS został doręczony?
Odpowiedź HTTP Request mówi tylko, że wiadomość przyjęto do kolejki. O wysłaniu i doręczeniu informują zdarzenia `MESSAGE_SENT` i `MESSAGE_DELIVERED`, które możesz odebrać osobnym webhookiem.
Czy mogę wysłać jeden SMS do wielu osób?
Tak. Pole `recipients` przyjmuje listę numerów, a każdy dostaje osobną wiadomość z Twojego numeru. Do różnych treści dla różnych osób użyj `send-bulk-sms` albo pętli w n8n.
Czy to działa w n8n na własnym serwerze?
Tak, wysyłka działa z każdej instancji, która ma dostęp do internetu. Do odbioru odpowiedzi instancja musi być osiągalna z internetu pod adresem HTTPS.
Źródła
Więcej w poradnikach
Wyślij pierwszego SMS-a jeszcze dziś
Załóż darmowe konto, podłącz telefon i sprawdź, jak klienci reagują na wiadomości z Twojego numeru.