๐Ÿ”Œ Developer Guide

How to Forward SMS to a Webhook or API from iPhone (Complete Developer Guide)

โšก Quick answer

Re:Text can forward iPhone SMS to any HTTP endpoint with full control over method (POST/GET/PUT), headers, and JSON body. This makes it the most flexible SMS forwarding tool on iOS โ€” perfect for Telegram Bot API, Pushover, Zapier, Make, n8n, Home Assistant, or your own server. Setup takes about 5 minutes for most integrations.

Most SMS forwarding apps offer a limited "webhook URL" field that fires a fixed JSON payload โ€” take it or leave it. That's fine for basic integrations, but it doesn't work when your API needs an Authorization header, a specific body structure, or a non-POST method.

Re:Text takes a different approach. When you add a Webhook destination, you get:

Effectively, Re:Text turns your iPhone SMS stream into a fully-configurable HTTP request generator. If your target service accepts REST calls, you can forward SMS to it.

How Re:Text's webhook compares to other SMS forwarders

Feature Re:Text Webhook Typical SMS forwarder webhook
HTTP method choicePOST / GET / PUTPOST only
Custom headersUnlimitedNone
Bearer token / API key authโœ“โœ—
Custom JSON body keyโœ“ (any field name)Fixed schema
Static body fieldsโœ“โœ—
Direct Telegram Bot APIโœ“ (no Zapier needed)Requires middleman
Direct Pushover integrationโœ“โœ—
Test before enableBuilt-inRarely

What you'll need

Understanding the webhook fields

Before diving into setup, it helps to understand the four main fields Re:Text exposes:

URL

The endpoint you're POSTing to. Must be HTTPS for production integrations. Examples:

Method

Choose POST, GET, or PUT. Most APIs use POST for creating resources (like sending a message). GET is rarely needed โ€” but Re:Text supports it for services that expect query parameters.

Body Key

The JSON field name that will hold the SMS content. For example:

Headers

Any HTTP headers your endpoint requires. Common ones:

Body Fields

Static JSON fields sent with every request, in addition to the SMS content. Examples:

Step-by-step: set up a webhook destination

1

Add Webhook as a destination

Open Re:Text. Tap + on the Destinations screen. Scroll down in the bottom sheet and tap Webhook.

Selecting Webhook as SMS forwarding destination in Re:Text iPhone app
Choose Webhook from the destinations bottom sheet.
2

Enter your webhook URL

Paste the URL your endpoint expects. Give the destination a name that describes its purpose (e.g. "Telegram Bot", "Zapier Sync", "Home Assistant").

Empty webhook destination form in Re:Text with URL and configuration fields
Enter the webhook URL and destination name.
3

Choose HTTP method and body key

Tap the Method dropdown and pick POST (most common), GET, or PUT. Then set the Body Key โ€” the JSON field name that will hold the SMS content.

HTTP method selection dropdown with POST GET PUT options in Re:Text webhook setup
Choose the HTTP method your endpoint expects.
4

Add custom headers

Tap Headers to open the header editor. Add a Content-Type header (usually application/json), plus any auth headers your API requires.

Custom HTTP headers list in Re:Text webhook including Content-Type Authorization and User-Agent
Add unlimited custom headers โ€” auth tokens, content type, and more.
5

Add body fields (optional)

If your API needs additional JSON fields beyond the SMS content (like chat_id for Telegram or token for Pushover), tap Body Fields and add them.

Adding static JSON body field chat_id in Re:Text webhook destination setup
Static body fields are sent with every request, alongside the SMS content.
6

Test and save

Tap Test Automation to fire a test payload at your endpoint. Verify it arrives correctly, then tap Save Destination.

Completed webhook destination in Re:Text with headers body fields and Test Automation button
Test the webhook before enabling to catch any configuration issues.
โœ…
Setup complete. Every incoming SMS on your iPhone will now be forwarded to your webhook with your custom configuration.

Real-world integration examples

Here are ready-to-use configurations for the most popular webhook targets. Copy the values and adapt them to your accounts.

๐Ÿ“ฑ Forward SMS to Telegram Bot API

If you want to forward SMS to a Telegram group, channel, or a different account (not the built-in one-tap Telegram destination), use the Telegram Bot API directly.

Setup: First, create a bot via @BotFather in Telegram, get the bot token, and find your chat_id. Then configure Re:Text:

URL:        https://api.telegram.org/bot<BOT_TOKEN>/sendMessage
Method:     POST
Body Key:   text
Headers:    Content-Type: application/json
Body Fields:
  chat_id:  <YOUR_CHAT_ID>

Replace <BOT_TOKEN> with your bot token from BotFather, and <YOUR_CHAT_ID> with the destination chat ID (positive number for user, negative for group).

๐Ÿ’ก Prefer one-tap setup? Re:Text has a built-in Telegram destination that skips BotFather entirely.

๐Ÿ”” Forward SMS to Pushover

Pushover delivers push notifications to all your devices with rich formatting. Great for critical SMS alerts.

URL:        https://api.pushover.net/1/messages.json
Method:     POST
Body Key:   message
Headers:    Content-Type: application/json
Body Fields:
  token:    <YOUR_APP_TOKEN>
  user:     <YOUR_USER_KEY>

Get your app token by creating an application in Pushover's dashboard. Your user key is on the main dashboard.

โšก Forward SMS to Zapier

Zapier lets you connect the forwarded SMS to 5,000+ apps โ€” Google Sheets, Notion, Airtable, Salesforce, and more.

Setup: In Zapier, create a Zap with Webhooks by Zapier โ†’ Catch Hook trigger. Copy the webhook URL Zapier generates.

URL:        https://hooks.zapier.com/hooks/catch/1234567/abcdef/
Method:     POST
Body Key:   message
Headers:    Content-Type: application/json

Add whatever downstream action you want in Zapier โ€” log to Google Sheets, save to Notion, send to Slack, or trigger any of 5,000+ apps.

๐Ÿ”ง Forward SMS to Make (Integromat)

Similar to Zapier but with more visual workflow control.

URL:        https://hook.eu2.make.com/abc123xyz
Method:     POST
Body Key:   text
Headers:    Content-Type: application/json

Create a scenario in Make with the Custom Webhook module as the trigger. Copy the URL it provides.

๐Ÿ  Forward SMS to Home Assistant

Trigger automations, log SMS to your database, or announce SMS on your smart speakers when they arrive.

URL:        https://your-home-assistant.local/api/webhook/sms_received
Method:     POST
Body Key:   message
Headers:    Content-Type: application/json
            Authorization: Bearer <LONG_LIVED_TOKEN>

Get a long-lived access token from your Home Assistant user profile. Configure a webhook trigger automation to react to the payload.

๐Ÿค– Forward SMS to n8n

Self-hosted workflow automation with unlimited executions.

URL:        https://your-n8n.com/webhook/sms-received
Method:     POST
Body Key:   text
Headers:    Content-Type: application/json

Add a Webhook node in n8n, copy the URL, and build any downstream workflow from there.

๐ŸŒ Forward SMS to your own server

Full flexibility โ€” capture SMS in your own backend for custom processing.

Node.js (Express)

const express = require('express');
const app = express();
app.use(express.json());

app.post('/sms-webhook', (req, res) => {
  const { message, sender, timestamp } = req.body;
  console.log(`SMS from ${sender}: ${message}`);
  // Your logic here
  res.status(200).json({ ok: true });
});

app.listen(3000);

Python (Flask)

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/sms-webhook', methods=['POST'])
def sms_webhook():
    data = request.json
    message = data.get('message')
    # Your logic here
    return jsonify({'ok': True}), 200

app.run(port=3000)

๐Ÿ“Š Forward SMS to Google Sheets

Log every SMS to a spreadsheet via Google Apps Script.

Create an Apps Script bound to a Sheet with a doPost(e) function. Deploy as a Web App with anonymous access. Use the deployment URL as your webhook.

URL:        https://script.google.com/macros/s/DEPLOYMENT_ID/exec
Method:     POST
Body Key:   message
Headers:    Content-Type: application/json

Advanced: filters and schedules for webhooks

Webhook destinations support the same filters and schedules as every other destination:

Combine multiple webhook destinations for advanced routing โ€” send SMS from your bank to one endpoint, 2FA codes to another, and delivery notifications to a third.

Security best practices

๐Ÿ”’
Treat webhook URLs like passwords. Anyone with a webhook URL can send data to it (or your endpoint). Never share URLs publicly, and rotate them if leaked.

Troubleshooting

401 Unauthorized

Your Authorization header is missing, malformed, or contains an invalid/expired token. Double-check the format (usually Bearer <token>).

400 Bad Request

The JSON body is missing required fields or has wrong types. Check what your API expects and confirm your Body Fields match.

404 Not Found

Wrong URL โ€” double-check the endpoint path. For Telegram Bot API, make sure the bot token in the URL is correct.

429 Too Many Requests

Rate-limited by the destination. Telegram allows about 30 messages/second per bot. Slack: 1/sec per webhook. Adjust filters to reduce forwarding volume.

Timeouts

Your endpoint took too long to respond. Ensure your webhook handler returns 200 quickly โ€” do heavy processing asynchronously after acknowledging the request.

Frequently asked questions

Can I use any REST API as a webhook destination?+

Yes. Re:Text supports POST, GET, and PUT methods with custom headers and JSON body. Any REST API that accepts one of these methods can receive forwarded SMS.

Can I forward SMS to Telegram Bot API through a webhook?+

Yes. Use POST to https://api.telegram.org/bot<TOKEN>/sendMessage, set body key to text, add chat_id as a body field, and Content-Type: application/json as a header. For simple personal use, however, the built-in Telegram destination is much easier.

Does Re:Text support webhook authentication?+

Yes. Add Authorization headers with Bearer tokens, API keys, or Basic auth as custom headers when setting up the webhook destination.

What's the maximum payload size for a webhook?+

SMS content is limited by carrier to about 160 characters per message (or 70 for Unicode). Even with metadata, webhook payloads stay well under 4KB โ€” safe for virtually any endpoint.

Are webhook requests logged by Re:Text?+

No. Re:Text does not log, store, or read webhook payloads or SMS content. Messages are processed on your device and sent directly to your endpoint.

Can I set up multiple webhook destinations?+

Yes. With Premium, you can add unlimited webhook destinations, each with different URLs, methods, headers, filters, and schedules. Perfect for routing different SMS types to different systems.

Does Re:Text support GraphQL webhooks?+

GraphQL over HTTP works โ€” since GraphQL usually accepts POST with JSON body. Set your GraphQL endpoint URL, POST method, and configure the JSON body with your query and variables.

Can I customize the JSON structure sent to the webhook?+

Partially. You can set the Body Key (the field name that holds the SMS content) and add unlimited static Body Fields. Full JSON restructuring isn't supported โ€” for that, use a middleware layer like Zapier or your own proxy server.

Ready to build your first SMS-triggered automation?

Full webhook support in the free tier (1 destination). Premium unlocks unlimited endpoints.

Download on the App Store