In today’s competitive business environment, instant communication is no longer optional — it’s expected. Customers want invoice updates, promotions, and order confirmations immediately on WhatsApp.
WhatsApp Saudi is a powerful ERPNext application built on the Frappe Framework that enables businesses to send automated WhatsApp messages directly from ERPNext using multiple providers — all managed centrally from a single system.
This article explains:
Supported WhatsApp providers
Configuration steps
Notification setup workflow
Template vs free-text messaging
Webhook handling
Logging architecture
Internal system flow
Let’s dive in.
🚀 What is WhatsApp Saudi?
WhatsApp Saudi is a custom ERPNext integration app that allows businesses to:
Send automated invoices via WhatsApp
Deliver promotional campaigns
Send template-based business messages
Handle incoming replies via webhook
Log both successful and failed messages
Maintain full audit visibility
The system is designed for flexibility, scalability, and compliance with WhatsApp Business policies.
🔌 Supported WhatsApp Providers
The application supports three providers:
1️⃣ Whatsa.Net
2️⃣ Rasayel
3️⃣ Bevatel
Each provider has its own API authentication and messaging format, but all are configured centrally from the WhatsApp Saudi Settings DocType inside ERPNext.
🟢 Whatsa.Net Integration (Free Text + Webhook Support)
Whatsa.Net is ideal for businesses that need more flexible messaging.
Required Credentials:
Token
Instance ID
File URL
Message URL
These are configured in WhatsApp Saudi Settings.
🧪 Test Message Feature
A dedicated “To Number (for testing)” field allows administrators to validate:
Token validity
Instance activation
API connectivity
Clicking Send Test Message sends a live WhatsApp message to verify configuration instantly.
🔄 Webhook-Based Response Handling
Whatsa.Net supports two-way communication.
When a customer replies:
Whatsa.Net sends the message to a configured webhook URL.
ERPNext receives the payload.
The reply is stored inside the WhatsApp Response DocType.
This enables:
Conversation history tracking
Customer response monitoring
Automation based on replies
🟡 Rasayel Integration (Template-Based Messaging)
Rasayel operates strictly under WhatsApp Business template guidelines.
It is ideal for:
Transactional notifications
Promotional campaigns
Structured communication
Required Credentials:
Authorization Token
Channel ID
Template ID
File Upload URL
Message URL
⚠️ Important: Full free-text messages are NOT allowed.
Only approved WhatsApp Business templates can be used.
Inside ERPNext Notification, you must pass:
message_template_id=450588
var1={doc.name}
var2={doc.customer}The actual content is controlled from Rasayel’s dashboard.
🔵 Bevatel Integration (Arabic & Multi-language Support)
Bevatel is a WhatsApp Business API provider that supports:
Template-based transactional messages
Promotional campaigns
Arabic and multi-language templates
Unlike Whatsa.Net, Bevatel requires strictly pre-approved templates.
Required Credentials:
Access Token
Account ID
Inbox ID
API URL
Template Name
Language
Template Message Format
Example configuration in ERPNext Notification:
message_template_id="promo_code2"
language="ar"
var1="{{doc.customer_name}}"Only template references and variables are passed — content remains managed inside Bevatel.
⚙️ Step-by-Step: How to Configure WhatsApp Notifications in ERPNext
Here’s the complete workflow.
Step 1: Create a New Notification
Navigate to:
ERPNext → Settings → Notification
Click New.
Step 2: Select Channel
Set:
Channel = WhatsApp Saudi
This ensures messages are routed via WhatsApp instead of Email or SMS.
Step 3: Select Document Type
Choose which DocType should trigger the message.
Examples:
Sales Invoice
Quotation
Delivery Note
Promo Code
Any custom DocType
Step 4: Set Trigger Event
Choose when the message should send:
On Submit
On Save
On Cancel
On Update
Value Change
Example: Send invoice notification when a Sales Invoice is submitted.
Step 5: Add Condition (Optional)
You can add logic like:
doc.status == "Paid"
doc.grand_total > 1000If the condition evaluates to True, the message is sent.
Step 6: Define Recipient Mobile Field
Select the field that contains the customer’s mobile number.
Examples:
doc.customer_mobile
doc.contact_mobile
doc.mobile_no
Make sure this field exists in the selected DocType.
Step 7: Add Message Content
For Whatsa.Net:
You can write the full message:
Dear {doc.customer_name}
Your invoice {doc.name} has been generated.
Total Amount: {doc.grand_total}
Thank you.
For Rasayel & Bevatel:
Only pass template ID and variables.
No free-text allowed.
Step 8: Attach PDF (Optional)
Enable Attach Print if you want to send the document as PDF.
Select the required Print Format.
Step 9: Save & Enable
Click Save and make sure the Notification is Enabled.
Done 🎉
🔁 What Happens Internally? (System Flow)
Once enabled:
Document event occurs
ERPNext evaluates condition
Channel identified as WhatsApp Saudi
Active provider detected
Credentials fetched
Payload constructed
API request sent
Response processed
If successful → Entry created in WhatsApp Saudi Success Log
If error occurs → Logged in ERPNext Error Log
If Whatsa.Net receives reply → Stored in WhatsApp Response DocType
📊 Error Handling & Logging Architecture
The system provides full transparency.
Error Log
Logs:
Authentication issues
Template mismatch
API failures
Network errors
Success Log (Custom DocType)
Stores:
API response
Recipient number
Timestamp
Status
This ensures complete auditability.
🎥 Watch the Complete Workflow Video
To see the entire setup and workflow in action, watch the full tutorial below:

