SMS w Zapierze z własnego numeru: wysyłka i odbiór
Sprawdzone z dokumentacją:
W Zapierze SMS wysyła akcja Webhooks by Zapier → Custom Request: POST https://smsportal.app/api/v1/gateway/send-sms, nagłówki x-api-key i Content-Type: application/json, a w polu Data JSON z recipients i message. Odpowiedzi klientów łapie wyzwalacz Catch Hook. Webhooks by Zapier wymaga planu Professional lub wyższego. Aplikacja „SMSPortal” w katalogu Zapiera to inna firma, nie smsportal.app.
Czego potrzebujesz
- Zapier w planie Professional, Team albo Enterprise (Webhooks by Zapier nie działa w planie Free).
- Konto smsportal z podłączonym telefonem z Androidem i kartą SIM.
- Klucz API z panelu smsportal (Klucze API → Wygeneruj klucz API).
- Nie wybieraj aplikacji „SMSPortal” z katalogu Zapiera: to osobna firma (smsportal.com) z własnymi kontami. Nasz klucz tam nie zadziała.
Jak wysłać SMS z Zapiera
Dodaj akcję Webhooks by Zapier
W Zapie dodaj krok akcji, wybierz aplikację Webhooks by Zapier i Action event
Custom Request. Custom Request wysyła JSON dokładnie tak, jak go wpiszesz, więcrecipientszostaje listą.Ustaw metodę, adres i nagłówki
Method
POST, URLhttps://smsportal.app/api/v1/gateway/send-sms. W Headers dodaj dwie pozycje:x-api-keyz kluczem z panelu iContent-Typez wartościąapplication/json. Data Pass-Through? zostaw naFalse.Wklej JSON w pole Data
Wklej JSON poniżej. Napisy w nawiasach, np.
[1. Phone], usuń i w ich miejsce wstaw pola z poprzednich kroków z listy danych. Numer musi mieć kierunkowy kraju, np.+48600100200. Opcjonalnie dodajdeviceId,simSubscriptionIdalboscheduledAt(czas ISO 8601 w przyszłości).Pole Data (Custom Request){ "recipients": ["[1. Phone]"], "message": "Dzień dobry [1. Name], potwierdzamy rezerwację na [1. Start Time]. Odpisz, jeśli coś się zmieni." }Przetestuj na własnym numerze
Wpisz na próbę swój numer i kliknij Test step. Odpowiedź 200 z polem
dataoznacza, że wiadomość trafiła do kolejki. Status (wysłana, doręczona) zobaczysz w panelu smsportal, a każde wywołanie w Zap history.
Jak odebrać odpowiedź klienta w Zapierze
Gdy telefon odbierze SMS, smsportal wysyła POST z JSON-em na adres webhooka. Catch Hook rozbija go na pola: 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, zapisany szesnastkowo.
- Utwórz Zapa z wyzwalaczem Webhooks by Zapier, Trigger event
Catch Hook. Na karcie Test skopiuj adres webhooka. - W panelu smsportal otwórz Webhooki → Utwórz webhook, wklej adres, wpisz sekret podpisu (co najmniej 20 znaków) i zaznacz zdarzenie
MESSAGE_RECEIVED. - Wyślij SMS na swój telefon z innego numeru i kliknij Test trigger. Zapier pokaże próbkę z polami
senderimessage, które zmapujesz w kolejnych krokach. - Opublikuj Zapa. Wyłączony Zap odpowiada na webhooki kodem 404, a smsportal po 3 takich próbach przestaje ponawiać dane zdarzenie.
- Do sprawdzenia podpisu potrzebujesz surowego ciała i nagłówków: daje je wyzwalacz
Catch Raw Hook(do 2 MB). Skrót HMAC-SHA256 z sekretem policzysz w kroku Code by Zapier i porównasz z nagłówkiemx-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
Rezerwacja w Calendly: potwierdzenie i przypomnienie
Calendly → Invitee Created uruchamia Zapa, a Custom Request od razu wysyła potwierdzenie na numer z pytania o telefon. Drugi Custom Request z
scheduledAtustawia przypomnienie: godzinę spotkania cofnij o 24 godziny w Formatter (Date / Time → Add/Subtract Time) i zapisz w formacie ISO 8601. Dla rezerwacji bliżej niż 24 godziny dodaj Filter, bo czas z przeszłości API odrzuci.Nowe zgłoszenie z formularza dostaje SMS
Typeform → New Entry albo Google Forms → New Form Response, potem Custom Request z treścią potwierdzenia. Pole telefonu w formularzu musi zbierać numer z kierunkowym kraju.
Odpowiedzi klientów w arkuszu
Catch Hook z
MESSAGE_RECEIVED, potem Google Sheets → Create Spreadsheet Row z kolumnamisender,messageireceivedAt. Zespół widzi wszystkie odpowiedzi w jednym miejscu, a ten sam krok możesz zamienić na notatkę w CRM.
Błędy i rozwiązania
- Custom Request zwraca 401
- Przyczyna: Nagłówek
Authorizationzamiastx-api-key, zły klucz albo spacja w wartości. - Co zrobić: W Headers wpisz nazwę dokładnie
x-api-key, a w wartości sam klucz z panelu, bez spacji na początku i końcu. - 400
Invalid recipients - Przyczyna: Użyta akcja
POSTz polami klucz–wartość: Zapier wysyła wtedy numer jako tekst, a API oczekuje listy. - Co zrobić: Użyj akcji
Custom Requestz surowym JSON-em w polu Data:"recipients": ["+48600100200"]. - 400 tylko przy niektórych wiadomościach
- Przyczyna: Zmapowana treść zawiera cudzysłów albo znak nowej linii. Custom Request nie zabezpiecza takich znaków, więc JSON jest niepoprawny.
- Co zrobić: Przed wysyłką usuń te znaki krokiem Formatter (Text → Replace) albo nie mapuj do treści wolnego tekstu od klienta.
- 400
scheduledAt must be a future date - Przyczyna: Wyliczony czas przypomnienia jest już w przeszłości, np. rezerwacja na dziś.
- Co zrobić: Dodaj Filter, który przepuszcza tylko spotkania dalsze niż 24 godziny, albo wysyłaj takie przypomnienie bez
scheduledAt. - Catch Hook nic nie dostaje
- Przyczyna: Zap jest wyłączony (Zapier odpowiada 404) albo w panelu jest inny adres. smsportal przestaje ponawiać po 3 próbach z błędem 4xx, a subskrypcję, która ciągle zawodzi, wstrzymuje.
- Co zrobić: Opublikuj Zapa, sprawdź adres w panelu smsportal (Webhooki) i stan subskrypcji.
- 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.
Najczęstsze pytania
Czy aplikacja SMSPortal w Zapierze to smsportal.app?
Nie. „SMSPortal” w katalogu Zapiera to inna firma (smsportal.com), która wysyła SMS-y przez własną bramkę i rozlicza każdą wiadomość. smsportal.app nie ma aplikacji w Zapierze: łączysz się przez Webhooks by Zapier, a SMS wychodzi z Twojego telefonu.
Czy zadziała w darmowym planie Zapiera?
Nie. Webhooks by Zapier i API by Zapier są dostępne w planach Professional, Team i Enterprise. Jeśli chcesz zacząć bez opłat, użyj Make (moduł HTTP) albo n8n.
Ile tasków zużywa jeden SMS?
Jeden: task to każda udana akcja, a wyzwalacze, filtry i kroki zakończone błędem się nie liczą. smsportal nie pobiera opłat za pojedynczy SMS: płacisz abonament karty SIM u operatora.
Jak ukryć klucz API przed innymi osobami z dostępem do Zapa?
Klucz w Headers widzi każdy, kto edytuje Zapa. API by Zapier (wersja beta) trzyma go w połączeniu: Authentication type `Static Headers (API key)`, w Headers `x-api-key: TWOJ_KLUCZ`, Domain filter `smsportal.app`. Potem akcja API Request z tym samym adresem i JSON-em w polu Body.
Czy Zapier wie, że SMS został doręczony?
Odpowiedź Custom 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 odbierzesz osobnym Catch Hook.
Ile SMS-ów mogę wysłać naraz?
Telefon wysyła z przerwą między wiadomościami (domyślnie 5 sekund, czyli około 720 na godzinę z jednego telefonu). To rozwiązanie do potwierdzeń, przypomnień i odpowiedzi, nie do kampanii marketingowych.
Źródła
- Zapier: Send webhooks in Zap workflows
- Zapier: Trigger Zap workflows from webhooks
- Zapier: How to get started with API by Zapier
- Zapier: How is task usage measured
- Zapier: aplikacja SMSPortal (inna firma)
- smsportal: dokumentacja API
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.