SMS notifications for orders and shipping
Tell customers that their order has arrived, has shipped or is ready for pickup, under your shop name rather than an anonymous number. For WooCommerce there is an official plugin; other shops and your own systems connect through Make, Zapier, n8n or the REST API.
Shipping update with a tracking link, sent the moment the order status changes.
- WooCommerceofficial plugin, set up in two minutes
- 11 charactersyour shop name as the sender
- €0.084per SMS to Germany, Austria and the rest of the EU
Which order messages are worth an SMS
An SMS arrives on any phone without an app, which makes it the right channel for the moments when the customer is waiting for news:
- Order received or payment confirmed, so the customer knows the order went through.
- Shipped, ideally with the tracking link, and ready for pickup.
- Cancelled, refunded or payment failed, so nobody waits for a parcel that is not coming.
- A new order for you: an SMS to your own number with order number, amount and payment method.
Keep the text short. One SMS holds 160 characters of the GSM alphabet, which includes German umlauts and ß; an emoji switches the message to 70 characters per part, and every part is charged. Our guide How many characters fit in an SMS? explains the details.
WooCommerce: official plugin
The free plugin TopSMS – SMS notifications for WooCommerce sends an SMS when an order status changes. You enable each status separately (received, pending payment, processing, completed, cancelled, refunded, failed and custom statuses) and edit its text with macros such as {order_number}, {total} or {shop_name}. Each status is announced once per order, even if the order moves back and forth.
Sending runs in the background via Action Scheduler, so checkout does not wait. Phone numbers are converted to international format according to the billing country, and every message is noted on the order. Installation, templates and download: Integrations: WooCommerce.
Shopware, Shopify, PrestaShop and your own system
The current status of each shop platform is on the integrations page. Wherever there is no ready-made plugin yet, two routes work:
- Without code: the official TopSMS app for Make, or an HTTP module in Zapier or n8n, triggered by a new order or a status change.
- With one HTTP request: your shop or ERP calls
POST /api/sms/sendwhen the status changes. Use the order ID as theIdempotency-Keyso that a retry after a timeout never sends the SMS twice.
Help with the connection is free: write to info@topsms.cz and describe your system.
Delivery reports and failed numbers
Every message has a status: delivered, undelivered or expired. Set a webhook URL on your API key and the report arrives at your server, signed with HMAC, without polling. Messages the network rejects are refunded automatically.
Some German networks report “undelivered” straight away when the handset is switched off. In the account settings you can enable automatic retries (up to 6 attempts within 8 hours); each attempt is charged as a new SMS.
Order and shipping messages are transactional. What German law expects for them, and how they differ from marketing SMS, is covered in SMS, GDPR and § 7 UWG.
Shipping SMS from your own code
One request per message, with the order ID as the idempotency key (example from the documentation):
curl -X POST https://www.topsms.cz/api/sms/send \
-H "Authorization: Bearer CLIENT_ID:SECRET" \
-H "Idempotency-Key: order-1024-shipped" \
-H "Content-Type: application/json" \
-d '{"to": "+4915112345678", "text": "Your order #1024 has shipped. Track it: tsms.cz/a1b2c3", "from": "MyShop"}'The same key with the same body returns the original response with the header Idempotent-Replayed: true instead of sending again. The key is valid for 24 hours.
Frequently asked questions
Is there a plugin for my shop?
For WooCommerce there is an official free plugin. For Shopware, Shopify, PrestaShop and Magento see the integrations page for the current status; until a plugin is available they connect through Make, Zapier, n8n or the REST API.
Can customers see my shop name as the sender?
Yes. Use your approved sender name of up to 11 characters. Until it is approved, messages are sent as TopSMS. Customers cannot reply to a message sent under a name.
What does an order SMS cost?
€0.084 per SMS to Germany, Austria and the rest of the EU, without a monthly fee. The plugin is free; you pay only for the messages sent from your prepaid credit.
How do I avoid sending the same notification twice?
The WooCommerce plugin announces each status once per order. In your own integration, send the order ID and status as the Idempotency-Key header, and a repeated request returns the original response instead of a second SMS.
Do I learn whether the SMS was delivered?
Yes. Each message has a delivery status that you can query, or a webhook pushes delivered, undelivered or expired to your URL. The WooCommerce plugin writes the result to the order note and its SMS log.
Read more
- Integrations and plugins: WooCommerce, Make, Zapier, n8n
- SMS, GDPR and § 7 UWG: transactional and marketing messages
- How many characters fit in an SMS?
- API documentation: webhooks
Try it with 10 free SMS
Free account, active as soon as you confirm your mobile number. No credit card, no monthly fee, prepaid credit that never expires.
More use cases
- OTP and verification codesLogin codes, 2FA and phone verification with the Verify API: we generate, send and check the code.
- Appointment remindersFewer no-shows at practices, workshops and salons with reminders scheduled via send_at.
- Payment reminders from lexoffice and sevDeskAutomatic SMS for overdue invoices: connect with an API key, choose the days, check the preview.
- SMS API for developersREST and JSON, webhooks, Idempotency-Key, test keys, OpenAPI and an MCP server.