n8n-nodes-sendseven
v1.2.9
Published
n8n community node for SendSeven - Unified Messaging API Platform
Maintainers
Readme
n8n-nodes-sendseven
This is an n8n community node for SendSeven - a unified messaging API platform enabling multi-channel messaging through WhatsApp, Telegram, SMS, Email, Messenger, Instagram, and more.
n8n is a fair-code licensed workflow automation platform.
Installation
Follow the installation guide in the n8n community nodes documentation.
npm Installation
npm install n8n-nodes-sendsevenManual Installation
- Clone this repository
- Run
npm install - Run
npm run build - Copy the
distfolder to your n8n custom nodes directory
Operations
SendSeven Node (Actions)
Message
- Send: Send a message through any channel (WhatsApp, Telegram, SMS, Email, etc.)
- Supports attachments: provide a comma-separated list of attachment UUIDs (from the Attachment resource) in the Attachment IDs field. These map to the
attachmentsarray ofPOST /messages. Raw URLs are not accepted — upload first.
- Supports attachments: provide a comma-separated list of attachment UUIDs (from the Attachment resource) in the Attachment IDs field. These map to the
Contact
- Create: Create a new contact
- Update: Update an existing contact (name, email, phone, avatar URL)
- Get: Get a contact by ID
- Delete: Delete a contact (GDPR delete — conversations anonymized, billing preserved)
- Search: Search contacts by name, email, or phone
- Add Tag: Add a tag to a contact
- Remove Tag: Remove a tag from a contact
- Set Custom Field: Set a custom field value on a contact. The Custom Field dropdown is populated from your tenant's field definitions (
GET /custom-fields); the value is written viaPOST /contacts/{id}/fields/{field_id}. - Add Method: Add a contact method (platform ID). Method types:
phone,email,whatsapp_id,telegram_id,messenger_id,instagram_id. Formessenger_id/instagram_ida Channel must be selected (these IDs are page-scoped). - Delete Method: Delete a contact method by its method ID.
Conversation
- Get: Get a conversation by ID
- Search: Search conversations by contact, status, or channel type
- Close: Close a conversation
- Assign: Assign a conversation to a team member
WhatsApp Template
- Send: Send a pre-approved WhatsApp template message
- List: List available WhatsApp templates
Attachment
- Upload: Upload a binary file (from an incoming binary property such as the output of an HTTP/Read-Binary node) as a multipart
POST /attachments/upload. Returns the attachmentid. - Upload from URL: Fetch a public http(s) URL server-side via
POST /attachments/from-urland store it. Returns the attachmentid. Note: the URL-fetch MIME allowlist is stricter than direct upload (images, mp4/mov/webm, common audio, pdf).
Sending a message with an attachment
Chain two nodes:
- Attachment → Upload (or Upload from URL) — produces an attachment object whose
idis the attachment UUID. - Message → Send — set the Attachment IDs field to an expression referencing the previous node's
id(e.g.{{ $json.id }}), or a comma-separated list of several UUIDs. The node passes these into theattachmentsarray ofPOST /messages, and the channel adapter renders them by content type (e.g. WhatsApp image/document, email attachment).
SendSeven Trigger Node (Webhooks)
Listen for real-time events:
- Message Received: Triggers when a new inbound message is received
- Message Sent: Triggers when an outbound message is delivered
- Message Delivered: Triggers when message delivery is confirmed
- Message Failed: Triggers when a message fails to send
- Message Read: Triggers when a message read receipt is received
- Email Received: Triggers when an inbound email is received
- Email Sent: Triggers when an outbound email is sent
- Email Delivered: Triggers when an email delivery is confirmed
- Email Bounced: Triggers when an email bounces
- Email Opened: Triggers when an email is opened
- Conversation Created: Triggers when a new conversation starts
- Conversation Closed: Triggers when a conversation is closed
- Conversation Assigned: Triggers when a conversation is assigned to an agent
- Conversation Reopened: Triggers when a conversation is reopened
- Contact Created: Triggers when a new contact is created
- Contact Updated: Triggers when a contact is updated
- Contact Deleted: Triggers when a contact is deleted
- Link Clicked: Triggers when a tracked link is clicked
- Campaign Sent: Triggers when a campaign completes sending
Authentication
This node supports two authentication methods:
API Key (Recommended for most users)
- Log in to your SendSeven account at https://app.sendseven.com
- Navigate to Settings > API Tokens
- Create a new API token with the required scopes
- Copy the token (format:
s7_xxxxxxxxxxxx) - In n8n, add a new credential of type "SendSeven API"
- Paste your API token
OAuth2 (For advanced integrations)
- Log in to your SendSeven account
- Navigate to Settings > OAuth Apps
- Create a new OAuth application
- Configure the redirect URI to match your n8n instance
- In n8n, add a new credential of type "SendSeven OAuth2 API"
- Complete the OAuth2 authorization flow
Required Scopes
Different operations require different scopes:
| Operation | Required Scopes |
|-----------|-----------------|
| Send Message | messages:create |
| Upload Attachment | messages:create |
| Read Messages | messages:read |
| Create/Update Contact | contacts:create, contacts:update |
| Delete Contact / Add or Delete Method / Set Custom Field | contacts:update (delete: contacts:delete) |
| Read Contacts | contacts:read |
| Read Custom Field Definitions | settings:read |
| Manage Tags | tags:read |
| Read Conversations | conversations:read |
| Manage Conversations | conversations:update |
| Webhooks | webhooks:create, webhooks:read, webhooks:delete |
| Knowledge Base | knowledge_base:read |
| Team Members | team:read |
Example Workflows
Send WhatsApp notification on new CRM lead
- Add a trigger from your CRM (e.g., HubSpot, Salesforce)
- Add SendSeven node with "WhatsApp Template > Send" operation
- Map the lead data to template variables
Log support conversations to spreadsheet
- Add SendSeven Trigger with "Conversation Closed" event
- Add Google Sheets node to append row
- Map conversation data to spreadsheet columns
Auto-respond to incoming messages
- Add SendSeven Trigger with "Message Received" event
- Add IF node to check message content
- Add SendSeven node with "Message > Send" to reply
Resources
Support
- Email: [email protected]
- Documentation: https://docs.sendseven.com/guides/integrations/n8n
- Status: https://status.sendseven.com
License
MIT License - see LICENSE file for details.
Changelog
1.2.4
- Republished from GitHub Actions with an npm provenance statement (required for n8n verified community node review). No functional changes from 1.2.3.
- Normalized
repository.urlto thegit+https://...gitform required for provenance verification.
1.2.0
- BREAKING FIX (custom fields): Custom fields are no longer sent in the contact Create/Update body — the backend silently dropped them (they are not contact-body fields). The dead
Custom FieldsJSON option was removed from Contact → Create. Use the new Contact → Set Custom Field operation, which resolves the field definition viaGET /custom-fields(loadOptions dropdown) and writes the value viaPOST /contacts/{id}/fields/{field_id}. Action required: any workflow that relied on the oldCustom Fieldscreate/update option must switch to Set Custom Field — the old option had no effect. - Added Attachment resource:
- Upload — binary input → multipart
POST /attachments/upload(file partfile, optionalmessage_id). - Upload from URL —
POST /attachments/from-url(stricter MIME allowlist). - Both return the attachment
idfor downstream use.
- Upload — binary input → multipart
- Message → Send: added an Attachment IDs field (comma-separated attachment UUIDs) wired into the
attachmentsarray ofPOST /messages. - Added Contact → Delete (
DELETE /contacts/{id}, GDPR delete). - Added Contact → Add Method / Delete Method (
POST/DELETE /contacts/{id}/methods). Channel selection is shown conditionally and required formessenger_id/instagram_id. - Added Contact → Remove Tag (
DELETE /contacts/{id}/tags/{tag_id}). - Added
getCustomFieldsloadOptions helper and asendSevenApiRequestFormDatahelper for authenticated multipart uploads.
1.1.0
- BREAKING: Webhook endpoint path changed from
/webhooksto/webhook-endpoints - BREAKING: Conversation close now uses POST (was PUT) with
notesfield (wasresolution_note) - BREAKING: Conversation assign now uses POST with user_id in URL path (was PUT with body)
- BREAKING: Removed
pendingconversation status (onlyopenandclosedremain) - Added 3 message addressing modes: Recipient+Channel, Conversation ID, Contact+Channel
- Added
contact_methodssupport for contact creation - Updated contact fields: removed
firstName,lastName,company,notes; addedcontactMethods,language,isBlocked - Updated conversation fields:
assigned_user_id(wasassigned_to_user_id), addedneeds_reply,is_live_chat,is_email,subject; removedmessage_count,unread_count - Updated contact update to only accept
name,email,phone,avatar_url - Added close options:
notesandsummarizefields - Added conversation search filter:
needs_reply - Updated webhook events: added
message.delivered,message.failed,message.read,email.*,conversation.assigned,conversation.reopened,contact.deleted,link.clicked; removedmessage.status_updated,ticket.created,ticket.closed - Updated OAuth2 scopes: replaced
webhooks:updatewithwebhooks:create/webhooks:delete; addedknowledge_base:read,team:read
1.0.0
- Initial release
- Actions: Send Message, Create/Update/Get/Search Contact, Add Tag, Get/Search Conversation, Close/Assign Conversation, Send WhatsApp Template
- Triggers: Message Received/Sent, Conversation Created/Closed, Contact Created/Updated, Ticket Created/Closed, Campaign Sent
- Authentication: API Key and OAuth2 support
