n8n-nodes-digitalsac
v1.2.3
Published
DigiCrm Digitalsac
Downloads
14,117
Maintainers
Readme
n8n-nodes-digitalsac
Community node for n8n that integrates with the Digitalsac DigiCrm API for WhatsApp messaging, ticket management, scheduling and WhatsApp Business (WABA) templates.
✨ Features
- 🟢 WhatsApp — send text, buttons, lists, carousels, media (file or base64)
- 🎫 Tickets — transfer to queue/agent, close, fetch next assignee, transfer to next assignee
- 🏷️ Tags · Kanbans · Wallets — list, create, link to tickets
- 📅 Scheduling — services, available users, available slots, schedule and cancel appointments, generate
.icscalendar links - 💬 WABA Templates — list templates and send with dynamic body, header (TEXT/IMAGE/VIDEO/DOCUMENT) and URL buttons
- 📲 Short SMS
- ✅ Input/output validators (WhatsApp number, CPF, date)
🆕 What's new in 1.2.3
- ✨ Rebrand: product renamed from Izing Pro to DigiCrm
- 🎨 New DigiCrm logo (SVG) on the node and credential icons
- 🔁 Display names and docs updated — same package and credentials, existing workflows keep working
What's new in 1.2.1
- 🔧 n8n verification compliance: removed
overridesfield frompackage.json, declaredn8n-workflowas apeerDependency, and the documentation is now English-only
What's new in 1.2.0
- ✅ Send WABA Template now supports fully dynamic payloads:
- Header Media URL (
mediaUrl) — overrides stored media forIMAGE/VIDEO/DOCUMENTheaders - Header Parameters (
headerParams) — variables forTEXTheaders - Button Parameters (
buttonParams) — values for URL buttons with placeholders
- Header Media URL (
- 🐛 Fixed: header component was not sent for
IMAGE/VIDEO/DOCUMENTtemplates withoutheader_textstored - 🐛 Static URL buttons no longer send invalid parameters (rejected by Meta)
- 🔁 100% backward compatible — existing workflows keep working unchanged
- 🔧 n8n verification compliance:
httpRequestWithAuthentication,pairedItemtracking,NodeApiError/NodeOperationError,continueOnFail()handling, English UI, nodesubtitle, codex file, credential icon and a GitHub Actions publish workflow with NPM provenance
See CHANGELOG-1.2.0.md for details.
🚀 Installation
Via the n8n UI
- Open Settings → Community Nodes
- Search for
n8n-nodes-digitalsac - Click Install
Via CLI
npm install -g n8n-nodes-digitalsacIf your n8n is installed in a custom directory:
cd ~/.n8n
npm install n8n-nodes-digitalsac🔐 Credentials
Create a Digitalsac DigiCrm API credential with:
| Field | Description | Example |
|----------------|--------------------------------------------------------|----------------------------------------|
| API Base URL | Base URL of your Digitalsac instance (no trailing /) | https://yourdomain.digitalsac.com.br |
| Bearer Token | API token issued by Digitalsac | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV... |
The node automatically attaches the Authorization: Bearer <token> header on every request via n8n's authenticated HTTP helper.
⚙️ Operations overview
| Group | Operation | |--------------------|------------------------------------------------------------------------------------------| | Validation | Validate WhatsApp · Validate CPF · Validate Date | | Queues / Agents | List Queues · List Agents · Next Assignee · Transfer to Queue / Agent / Next Assignee | | Tickets | Close Ticket | | Messaging | Send Message · Send Buttons · Send List · Send Carousel · Send Media With Caption · Send Base64 | | Tags | List Tags · Link Tag · Create Tag | | Kanbans | List Kanbans · Link Kanban | | Wallets | List Wallets · Link Wallet | | Scheduling | List Services · List Available Users · List Available Slots · List Schedules · Create Schedule · Cancel Schedule · Calendar Link | | Scheduled Messaging | List Scheduled Messages (Typebot) · Schedule Message (Typebot) · Cancel Scheduled Message | | WABA Templates | List WABA Templates · Send WABA Template (dynamic) | | SMS | Send Short SMS |
📖 Detailed usage
Validate WhatsApp
- Choose Validate WhatsApp.
- Fill Parameter with the phone number you want to validate.
Validate CPF
- Choose Validate CPF.
- Fill Parameter with the CPF number.
Validate Date
- Choose Validate Date.
- Fill Data (JSON) with:
{ "data": "2024-01-15" }List Queues / Agents
- List Queues and List Agents require no extra parameters.
- For List Agents you can pick the response format:
Full JSON(default) orFormatted Text(compatibility).
Transfer to Queue
{ "ticketId": 123, "queueId": 5 }Transfer to Agent
{ "ticketId": 123, "userId": 10 }Close Ticket
{ "ticketId": 123 }Next Assignee in Queue / Transfer to Next Assignee
Both require the Parameter field filled with the connection UUID and the JSON body:
{ "queueId": 3, "ticketId": 1201, "method": "S", "allowOffline": false }Send Message (text or file)
- Fill Parameter with the connection UUID (e.g.
999ab3a2-9f1f-4ffb-969a-bfb72234ece1). - Fill Message Body, Phone Number (
5511999999999) and External Key. - Optional: connect a previous node that emits binary data (HTTP Request, Read Binary File, Google Drive, …) and the node will automatically switch to multipart upload (
FormData).
Send Buttons
Button JSON example:
[
{
"tipo": {"label": "Quick Reply", "value": "quick_reply"},
"display_text": "✅ Yes",
"conteudo": "yes"
},
{
"tipo": {"label": "Quick Reply", "value": "quick_reply"},
"display_text": "❌ No",
"conteudo": "no"
},
{
"tipo": {"label": "URL", "value": "url"},
"display_text": "🌐 Visit site",
"conteudo": "https://www.digitalsac.com.br"
},
{
"tipo": {"label": "Copy", "value": "copy"},
"display_text": "📋 Copy code",
"conteudo": "PROMO2024"
},
{
"tipo": {"label": "Call", "value": "call"},
"display_text": "📞 Call now",
"conteudo": "5511999999999"
}
]Available button types:
quick_reply— replies are echoed back into the conversationurl— opens a link in the browsercopy— copies text to the clipboardcall— starts a phone call
Send List
[
{
"title": "🛍️ Products",
"lines": [
{ "title": "Premium Smartphone", "description": "iPhone 15 Pro Max 256GB", "rowId": 1 },
{ "title": "Gaming Laptop", "description": "Dell Alienware with RTX 4090", "rowId": 2 }
]
},
{
"title": "🛠️ Services",
"lines": [
{ "title": "Tech Support", "description": "Specialized assistance", "rowId": 3 },
{ "title": "Consulting", "description": "Custom consulting", "rowId": 4 }
]
}
]Send Carousel
[
{
"body": "Starter Plan",
"footer": "Starting at $49.90",
"image": { "url": "https://picsum.photos/800/600" },
"buttons": [
{ "type": "url", "text": "See details", "url": "https://digitalsac.com.br" }
]
},
{
"body": "Pro Plan",
"footer": "Starting at $99.98",
"image": { "url": "https://picsum.photos/801/600" },
"buttons": [
{ "type": "reply", "text": "Tell me more", "id": "pro_plan" }
]
}
]Send Media With Caption
- Connect a node providing binary data.
- Choose Send Media With Caption, fill the connection UUID, Caption, Phone Number and External Key.
- Supported types: images (JPG/PNG/GIF), documents (PDF/DOC), videos (MP4/AVI), audio (MP3/WAV).
Send Base64 File
Provide the file as base64, the MIME type, the file name and (optionally) a caption.
To convert a file to base64:
- Linux/macOS:
base64 file.pdf - Windows:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("file.pdf"))
Tags
- List Tags — no extra params.
- Link Tag —
{ "ticketId": 123, "tagId": 456 }. - Create Tag — fill Tag Name and Tag Color (hex format like
#FF5733).
Kanbans
- List Kanbans — fill User ID.
- Link Kanban — full payload supported:
{
"ticketId": 123,
"kanbanId": 456,
"userId": 789,
"value": 500.5,
"status": "new",
"kanbanCreatedAt": "2026-03-09T10:00:00Z",
"shortDesc": "Inbound lead",
"probability": 70,
"funnelStatus": "open",
"expectedCloseAt": "2026-04-01T12:00:00Z",
"assignedUserId": 12
}Required: ticketId, kanbanId, userId. Everything else is optional.
Wallets
- List Wallets — no extra params.
- Link Wallet —
{ "ticketId": 123, "userId": 456 }.
Scheduling
List Services — optional User ID to filter services by attendant.
List Available Users
- Service ID, Date (
YYYY-MM-DD), optional Time (HH:mm).
List Available Slots
- Service ID, User ID, Date (
YYYY-MM-DD).
List Schedules
- Date (
YYYY-MM-DD), optional User ID.
Create Schedule
| Field | Required | Notes |
|----------------------------|----------|-------------------------------------------------------------|
| Service ID | yes | |
| User ID | yes | |
| Date / Time | yes | YYYY-MM-DD and HH:mm |
| Contact Name / Phone | yes | Contact is created if it does not exist yet |
| Notes | no | |
| WhatsApp Connection ID | no | Defaults to the first available connection |
| Custom Message | no | |
| Reminders (minutes) | no | Comma separated, e.g. 60,240,1440 |
| Interval Duration | no | Default 30 minutes |
| Close Ticket After | no | Closes the originating ticket on success |
Sample response:
{
"status": 1,
"mensagem": "Schedule created successfully",
"scheduleId": 123,
"contactId": 456,
"whatsappId": 789
}Cancel Schedule — fill Schedule ID.
Generate Calendar Link (.ics) — fill Schedule ID. Returns a downloadable .ics URL plus schedule metadata (client, service, date, attendant) so you can:
- send the link directly to the customer,
- trigger an automated
.icsdownload, - import into Google Calendar / Outlook / Apple Calendar.
Scheduled Messaging (Typebot)
List Scheduled Messages (Typebot)
- Optional filters: Status, Ticket ID, Phone Number, Limit, Offset.
- Returns each scheduled item with
messageId(used by Cancel Scheduled Message).
Schedule Message (Typebot) — fill Scheduled Message Data (JSON) with payload accepted by /typebot/agendar_mensagem, for example:
{
"number": "5511999999999",
"name": "João",
"body": "Olá João, passando para lembrar do seu atendimento.",
"date": "29/05/2026",
"time": "10:00"
}timezone is optional. If omitted, Digitalsac uses the tenant timezone.
Cancel Scheduled Message — fill Scheduled Message ID (messageId returned by the scheduling endpoint).
List WABA Templates
Lists all WhatsApp Business templates available for a connection. Fill WhatsApp ID.
Sample response:
[
{ "id": "123456789", "name": "welcome", "language": "pt_BR", "category": "MARKETING", "status": "APPROVED", "alreadyImported": true },
{ "id": "987654321", "name": "order_confirmation", "language": "pt_BR", "category": "UTILITY", "status": "APPROVED", "alreadyImported": false }
]📤 Send WABA Template (dynamic)
The most powerful operation in this release. Supports any combination of static template fields, dynamic body variables, dynamic header media or text, and URL button parameters.
Fields
| Field | Type | Required | Description |
|-----------------------------|----------|----------|----------------------------------------------------------------------------------------------------------|
| WhatsApp ID | number | yes | WhatsApp WABA connection ID |
| Template ID | number | yes | Template ID stored in Digitalsac after sync |
| Phone Number | string | yes | Recipient with country and area code (e.g. 5511999999999) |
| Body Parameters (JSON) | json | no | Body variables — supports {"1":"John","2":"123"} and named keys |
| Header Media URL | string | no | Public URL for IMAGE/VIDEO/DOCUMENT headers — overrides stored media |
| Header Parameters (JSON) | json | no | Variables for TEXT headers (e.g. {"1":"April Promotion"}) |
| Button Parameters (JSON) | json | no | Overrides for dynamic URL buttons — e.g. [{"index":0,"type":"url","value":"order-123"}] |
Usage scenarios
- Body variables only
{
"templateId": 1,
"phoneNumber": "5511999999999",
"whatsappId": 10,
"templateParams": { "1": "John", "2": "9988" }
}- Image header dynamic
{
"templateId": 1,
"phoneNumber": "5511999999999",
"whatsappId": 10,
"mediaUrl": "https://cdn.example.com/banner.jpg",
"templateParams": { "1": "John" }
}- Image header — fallback to stored media
{
"templateId": 1,
"phoneNumber": "5511999999999",
"whatsappId": 10
}- Document header dynamic
{
"templateId": 1,
"phoneNumber": "5511999999999",
"whatsappId": 10,
"mediaUrl": "https://cdn.example.com/contract.pdf"
}- Dynamic URL button
{
"templateId": 1,
"phoneNumber": "5511999999999",
"whatsappId": 10,
"buttonParams": [
{ "index": 0, "type": "url", "value": "order-123" }
]
}- Text header with variable
{
"templateId": 1,
"phoneNumber": "5511999999999",
"whatsappId": 10,
"headerParams": { "1": "April Promotion" }
}- Combined header + body + button
{
"templateId": 1,
"phoneNumber": "5511999999999",
"whatsappId": 10,
"mediaUrl": "https://cdn.example.com/banner.jpg",
"templateParams": { "1": "John", "2": "9988" },
"buttonParams": [{ "index": 0, "type": "url", "value": "order-123" }]
}Sample successful response
{
"success": true,
"message": "Template sent successfully",
"messageId": "wamid.HBgNNTUxMTk4NzY1NDMyMRUCABIYIDNBNjdFRjg5...",
"templateName": "welcome",
"recipient": "5511999999999",
"whatsappId": 3,
"ticketId": 4521
}HTTP errors
| Status | Reason |
|--------|---------------------------------------------------------------------------------------------------|
| 400 | Missing required fields, invalid JSON, template requires media but neither mediaUrl nor stored header_media is available, invalid button override |
| 404 | Template or WABA connection not found |
| 500 | Meta Graph API error (full error returned in details) |
Notes
- Empty optional fields fall back to template-level defaults (full backward compatibility).
- Placeholders
{{1}},{{2}}, … are replaced fromtemplateParams/headerParamsindexed by number. - Static URL buttons no longer send invalid
parameters(Meta would reject them). - Template language is taken from the stored template; falls back to
pt_BR.
Send Short SMS
Fill Phone Number and SMS Message to use the /typebot/enviar_sms endpoint.
🧪 Example flows
Send a PDF to a contact
- Read Binary File → reads
report.pdf. - Digitalsac → Send Message with the connection UUID and the binary attachment connected.
Create a tag and link it to a ticket
- Digitalsac → Create Tag (
Tech Support,#2196F3). - Digitalsac → Link Tag with
{ "ticketId": 123, "tagId": "{{$json.tagId}}" }.
Schedule + close ticket
- Webhook captures the lead.
- Digitalsac → Create Schedule with
closeTicket: true.
Marketing campaign with WABA template + banner + dynamic URL
- Database → list of customers.
- Loop Over Items.
- Digitalsac → Send WABA Template with
mediaUrl,templateParamsandbuttonParams.
Order approved notification (WABA)
Webhook (order approved)
↓
Digitalsac → List WABA Templates (find confirmation template)
↓
Digitalsac → Send WABA Template
templateParams: {
"1": "{{$json.customer_name}}",
"2": "{{$json.order_id}}",
"3": "{{$json.total}}",
"4": "{{$json.delivery_date}}"
}💡 Practical use cases
Interactive support bot
- Send Buttons → main menu
- Send List → product/service catalog
- Send Media → product images
- Send Base64 → contracts / documents
E-commerce automation
Webhook → Send Buttons → Send List (payment methods) → Send Base64 (PDF contract) → Send Media (receipt)Automated visual reports
Scheduler → HTTP Request → Code (build chart base64) → Send Base64 (visual report)🤝 Contributing
Issues and pull requests are welcome at github.com/digitalsac-io/n8n-nodes-digitalsac.
📄 License
MIT. Support: [email protected].
