Description
n8n-nodes-sinch
Community node for n8n to send and manage omnichannel messages via Sinch Conversations API.
Installation
Using n8n Community Nodes
1. Open your n8n instance
2. Go to Settings > Community Nodes
3. Enter @sinch/n8n-nodes-sinch
4. Click Install
Manual Installation
cd ~/.n8n
npm install @sinch/n8n-nodes-sinch
Compatibility
- n8n: 1.0.0 or later
- Node.js: 20.19 or later (up to 24.x)
- Send SMS messages via Sinch Conversations API (routed through Econexus)
- Send WhatsApp Template Message with approved templates from Sinch Provisioning API
- Get Many messages with filtering and pagination
- Message Delivered trigger via Econexus ISS webhook subscriptions
- OAuth2.0 authentication with automatic token management
- Multi-region support (US, EU, BR)
- Phone number normalization to E.164 format
- Robust error handling and validation
- Display Name: Sinch
- Name:
sinch - Group:
output - Inputs:
main - Outputs:
main - To (required) – Recipient phone number in E.164 format (e.g., +15551234567)
- Country (optional) – Country for parsing local phone numbers without international prefix
- Message (required, up to 1600 characters) – Message text to send
- SMS Sender (optional) – Sender address (alphanumeric or phone number)
- Callback URL (optional) – Webhook URL for delivery status updates
- Metadata (optional) – Custom metadata to associate with the message (up to 1024 characters)
- To (required) – Recipient WhatsApp number in E.164 format (e.g., +14155552671)
- WhatsApp Template Name or ID (required) – Approved template from your Sinch project (value format:
templateName,languageCode) - Template Body Variable Count Name or ID – Auto-loaded when the template changes; lists how many body variables the template expects
- Variable {{1}} … Variable {{20}} – Shown based on the template variable count (up to 20 placeholders)
- List templates:
GET https://provisioning.api.sinch.com/v1/projects/{projectId}/whatsapp/templates?filterStates=APPROVED - Template detail:
GET .../whatsapp/templates/{name}/languages/{language} - Send:
POST https://{au|eu}.app.api.sinch.com/v1/econexus/sinch-build/v1/projects/{projectId}/messages:send - Return All – Whether to return all results or only up to a given limit
- Limit – Max number of results to return (default: 50)
- Contact ID – Filter by contact ID
- Conversation ID – Filter by conversation ID
- Start Time – Filter messages after this timestamp
- End Time – Filter messages before this timestamp
- Page Size – Number of messages per page (max 1000, default: 10)
- Channel – Filter by channel (SMS, WhatsApp, RCS)
- Message Delivered – Fires when a
MESSAGE_DELIVERYwebhook is received with statusDELIVERED messageId,conversationId,deliveryStatus,channel,contactIdentity,contactId,appId,projectId,eventTime,acceptedTime,metadata- Key ID (Client ID) – Your Sinch API Key ID from the dashboard
- Key Secret (Client Secret) – Your Sinch API Key Secret from the dashboard
- Region – Region where your Conversation API app was created (US, EU, or BR)
- Project ID – Your Sinch Project ID from the dashboard
- App ID – Your Sinch Conversation API App ID
- US / BR:
https://au.app.api.sinch.com/v1/econexus/sinch-build - EU:
https://eu.app.api.sinch.com/v1/econexus/sinch-build - US / BR:
https://au.app.api.sinch.com/v1/econexus/iss/subscriptions - EU:
https://eu.app.api.sinch.com/v1/econexus/iss/subscriptions
Features
Node Configuration
Basic Information
Operations
#### Send Message
Send SMS messages via Sinch Conversations API.
Fields:
#### Send WhatsApp Template Message
Send an approved WhatsApp template via Sinch Conversation API. Templates are loaded from the Sinch Provisioning API; body placeholders ({{1}}, {{2}}, …) are shown as input fields after you select a template.
Fields:
API endpoints used:
#### Get Many Messages
Retrieve and filter messages from conversations.
Controls:
Filters:
Sinch Trigger
Webhook trigger for message delivery events.
Events:
When a workflow is activated, the trigger registers an ISS subscription with Econexus. When the workflow is deactivated, the subscription is removed automatically.
Output fields:
Credentials
Sinch Conversations API
Required Fields:
Authentication: OAuth2.0 (automatic token management)
Getting Your Credentials
1. Create a Sinch account at https://dashboard.sinch.com
2. Create a project
3. Generate API keys in Settings > Access Keys
4. Create a Conversation API app
5. Note your Project ID and App ID
API Endpoints
All Conversation API requests are routed through the Econexus Sinch Build proxy:
ISS webhook subscriptions:
Send Message
Endpoint: POST /v1/projects/{projectId}/messages:send
Request Body:
{
"app_id": "your-app-id",
"recipient": {
"identified_by": {
"channel_identities": [
{
"channel": "SMS",
"identity": "+15551234567"
}
]
}
},
"message": {
"text_message": {
"text": "Hello from n8n!"
}
},
"channelpriorityorder": ["SMS"],
"callback_url": "https://webhook.site/...",
"message_metadata": "custom-id-123"
}
Response:
{
"message_id": "msg-123",
"accepted_time": "2024-01-01T00:00:00Z"
}
Get Many Messages
Endpoint: GET /v1/projects/{projectId}/messages
Query Parameters:
app_id (required)contact_id (optional)conversation_id (optional)start_time (optional, ISO 8601)end_time (optional, ISO 8601)page_size (optional, max 1000)channel (optional)Authentication
OAuth2.0 authentication is automatically handled:
1. Tokens are fetched from https://{region}.auth.sinch.com/oauth2/token
2. Tokens are cached for 55 minutes (5-minute buffer before expiry)
3. Tokens are automatically refreshed when expired
4. Bearer tokens are used in Authorization headers
5. Econexus proxy headers (X-AUTH-SOURCE, X-SINCH-APP-ID, X-SINCH-PROJECT-ID, X-CLIENT-SOURCE) are sent on all Econexus requests
Phone Number Format
E.164 Format
Phone numbers must be in E.164 format:
+155512345675551234567 (requires Country field)Supported Formats
+15551234567 (international format)15551234567 with Country = US -> +155512345670437536808 with Country = AU -> +6143753680800 prefix is automatically converted to +Example Workflow
{
"name": "Send SMS via Sinch",
"nodes": [
{
"parameters": {
"resource": "message",
"operation": "send",
"to": "+15551234567",
"message": "Hello from n8n!",
"additionalFields": {
"callbackUrl": "https://webhook.site/unique-id"
}
},
"type": "@sinch/n8n-nodes-sinch.sinch",
"typeVersion": 1,
"position": [250, 300],
"id": "abc123",
"name": "Sinch",
"credentials": {
"sinchApi": {
"id": "1",
"name": "Sinch Conversations API"
}
}
}
],
"connections": {}
}
Troubleshooting
Common Issues
Error Codes
| HTTP Code | Sinch Status | Description | Resolution |
|———–|————–|————-|————|
| 400 | INVALIDARGUMENT | Malformed request body | Check appid, project_id, message format |
| 401 | UNAUTHENTICATED | Invalid credentials | Verify Key ID and Secret |
| 403 | UNAUTHORIZED | No access to resource | Check project_id matches credentials |
| 404 | NOTFOUND | Resource not found | Verify appid exists, region matches |
| 429 | RESOURCE_EXHAUSTED | Rate limit exceeded | Implement backoff, check rate limits |
| 500 | INTERNAL | Server error | Retry with exponential backoff |
Resources
License
MIT License
Contributing
Contributions, issues, and feature requests are welcome. Please open an issue on the GitHub repository before submitting a pull request.