Integracje

WooCommerce + SMSIK — SMS-y transakcyjne w 15 minut

Tomasz Lewandowski — Lead Developer, SMSIK 9 min czytania

WooCommerce to najpopularniejszy sklep internetowy w Polsce. Dowiedz się, jak w 15 minut dodać SMS-y transakcyjne do swojego sklepu — bez programisty.

WooCommerce napędza ponad 30% sklepów internetowych w Polsce. Jeśli go używasz, możesz w prosty sposób dodać SMS-y transakcyjne do swojego sklepu — bez programisty, bez wtyczki, w 15 minut. Ten artykuł pokazuje jak.

Dlaczego SMS-y transakcyjne w WooCommerce?

Klienci sklepów internetowych oczekują informacji w czasie rzeczywistym:

  • "Czy moje zamówienie zostało przyjęte?" — potwierdzenie w 1 sekundę
  • "Kiedy przyjdzie paczka?" — SMS z numerem śledzenia
  • "Czy jest gotowe do odbioru?" — SMS z kodem odbioru

E-mail jest za wolny — średni czas otwarcia e-maila to kilka godzin. SMS dociera w 1-3 sekundy i jest otwierany w 90% przypadków.

Efekt: mniej telefonów do obsługi klienta, mniej pytań "gdzie moja paczka", wyższa ocena sklepu.

Jak to działa?

Integracja WooCommerce z SMSIK to 3 kroki:

  1. Zainstaluj wtyczkę WordPress (np. WP Mail SMTP + WooCommerce) — masz już
  2. Dodaj haczyk PHP do pliku functions.php motywu, który wywoła SMSIK API przy zmianie statusu zamówienia
  3. Skonfiguruj klucz API SMSIK

Brak wtyczki? SMSIK nie ma oficjalnej wtyczki WooCommerce, ale integracja jest na tyle prosta, że można ją zrobić własnym kodem PHP (10 linii).

Krok 1: Klucz API SMSIK

Zarejestruj się na smsik.pl, wejdź w panel developera, kliknij "Nowy klucz". Skopiuj klucz (zaczyna się od sk_live_).

Krok 2: Haczyk PHP w WordPress

Otwórz plik functions.php motywu (np. wp-content/themes/twoj-motyw/functions.php) i dodaj:

<?php
/**
 * Wysyła SMS do klienta przy zmianie statusu zamówienia WooCommerce.
 * Dodaj do functions.php motywu.
 */

add_action('woocommerce_order_status_changed', 'smsik_notify_status_change', 10, 4);

function smsik_notify_status_change($order_id, $status_from, $status_to, $order) {
    // Klucz API SMSIK — najpierw stała z wp-config.php, potem zmienna środowiskowa
    $api_key = defined('SMSIK_API_KEY') ? SMSIK_API_KEY : getenv('SMSIK_API_KEY');
    if (empty($api_key)) {
        error_log('SMSIK: brak klucza API');
        return;
    }

    // Numer telefonu klienta
    $phone = $order->get_billing_phone();
    if (empty($phone)) {
        return; // brak telefonu — nic nie rób
    }

    // Treść SMS zależna od statusu
    $messages = [
        'processing' => 'Zamowienie #' . $order_id . ' przyjete. Dziekujemy!',
        'completed'  => 'Zamowienie #' . $order_id . ' gotowe do wysylki. Wyslemy info o nadaniu.',
        'shipped'    => 'Zamowienie #' . $order_id . ' nadane! Sprawdz numer sledzenia: ' . get_shipping_tracking_url($order),
        'cancelled'  => 'Zamowienie #' . $order_id . ' zostalo anulowane. Kontakt: sklep@example.pl',
    ];

    $message = $messages[$status_to] ?? null;
    if ($message === null) {
        return; // nieobsługiwany status
    }

    // Wywołanie SMSIK API
    $response = wp_remote_post('https://smsik.pl/api/v1/sms/send', [
        'headers' => [
            'X-API-Key'    => $api_key,
            'Content-Type' => 'application/json',
        ],
        'body' => json_encode([
            'to_number'       => $phone,
            'message'         => $message,
            'idempotency_key' => 'woo-order-' . $order_id . '-status-' . $status_to,
        ]),
        'timeout' => 30,
    ]);

    // Log błędów (do debugowania)
    if (is_wp_error($response)) {
        error_log('SMSIK error: ' . $response->get_error_message());
    } elseif (wp_remote_retrieve_response_code($response) !== 200) {
        error_log('SMSIK HTTP error: ' . wp_remote_retrieve_response_code($response));
    }
}

/**
 * Pobiera URL śledzenia przesyłki (dla popularnych wtyczek kurierskich).
 */
function get_shipping_tracking_url($order) {
    // WooCommerce Shipment Tracking (oficjalna wtyczka)
    $tracking_items = $order->get_meta('_wc_shipment_tracking_items');
    if (!empty($tracking_items) && isset($tracking_items[0]['tracking_number'])) {
        return $tracking_items[0]['tracking_number'];
    }
    return 'Panel klienta';
}

Krok 3: Ustaw klucz API

Najbezpieczniej — w wp-config.php:

define('SMSIK_API_KEY', 'sk_live_TWOJ_KLUCZ');

Kod w Kroku 2 automatycznie użyje tej stałej (dzięki defined('SMSIK_API_KEY') ? SMSIK_API_KEY : getenv(...)), a jeśli stałej nie ma — spróbuje odczytać zmienną środowiskową. Dzięki temu działa w obu scenariuszach.

Bezpieczeństwo: Nigdy nie umieszczaj klucza API bezpośrednio w functions.php jeśli używasz Gita. Użyj wp-config.php (jest w .gitignore WordPressa) lub zmiennych środowiskowych.

Krok 4: Idempotencja — ochrona przed duplikatami

Zauważ pole idempotency_key w kodzie:

'idempotency_key' => 'woo-order-' . $order_id . '-status-' . $status_to,

Jeśli WooCommerce wywoła haczyk dwa razy (np. z powodu retry), SMSIK nie wyśle drugiego SMS-a — zwróci istniejący. Klucz jest unikalny per (zamówienie, status).

Krok 5: Test

  1. Złóż testowe zamówienie w swoim sklepie (możesz użyć WooCommerce → Status → Narzędzia → Utwórz zamówienie testowe)
  2. Zmień status zamówienia na "W realizacji" (processing)
  3. Sprawdź telefon — powinien przyjść SMS
  4. Jeśli nie przyszedł — sprawdź wp-content/debug.log (musisz mieć włączone WP_DEBUG_LOG)

Statusy, które warto obsłużyć

Status WooCommerceKiedy wysłać SMSTreść
processingPo opłaceniu"Zamówienie przyjęte, dziękujemy!"
completedPo spakowaniu"Gotowe do wysyłki"
shippedPo nadaniu (wtyczka kurierska)"Nadane! Numer: XYZ"
cancelledPo anulowaniu"Anulowane, kontakt: ..."
refundedPo zwrocie"Zwrot przyjęty, środki w 3 dni"
on-holdOpcjonalnie"Czekamy na płatność"

Koszty

Każdy SMS to 1 grosz brutto. Dla sklepu z 1000 zamówień miesięcznie:

  • 2 SMS-y na zamówienie (przyjęte + nadane) × 1000 = 2000 SMS-ów
  • Koszt: 20 zł miesięcznie

To mniej niż jedna godzina pracy programisty. A oszczędza dziesiątki telefonów od klientów.

Alternatywa: dedykowana wtyczka

Jeśli nie chcesz dotykać kodu, możesz użyć wtyczki "SMSAPI for WooCommerce" (od SMSAPI) — ale wymaga konta SMSAPI, nie SMSIK. Dla SMSIK najprościej jest własny haczyk PHP (10 linii, jak wyżej).

Podsumowanie

Integracja WooCommerce z SMSIK to:

  • ✅ 15 minut pracy (klucz API + haczyk PHP)
  • ✅ 0 zł za wtyczkę
  • ✅ 1 grosz brutto za SMS
  • ✅ Idempotencja (brak duplikatów)
  • ✅ Ochrona przed spamem (tylko statusy, które wybierzesz)

Masz sklep WooCommerce i chcesz dodać SMS-y? Zarejestruj się bezpłatnie — dostajesz 5 groszy na start (5 testowych SMS-ów).

Wypróbuj SMSIK bezpłatnie

Rejestracja zajmuje 2 minuty. Otrzymasz 5 groszy na start.

Utwórz darmowe konto
ŚRODOWISKO DEWELOPERSKIE - wersja testowa (nieprodukcyjna)