1. Integrations
RASL
  • Introduction
  • Authentication
  • Changelog
  • Messages
    • Overview
    • Send Text Message
      POST
    • Send Media Message
      POST
    • Send Template Message
      POST
    • Send Interactive Message
      POST
    • List Messages
      GET
    • Get Message
      GET
  • Auth (OTP/Verification)
    • Overview
    • Send OTP
      POST
    • Verify OTP
      POST
    • Resend OTP
      POST
    • Check OTP Status
      POST
    • List Authentication Templates
      GET
  • Templates
    • Overview
    • List Templates
      GET
    • Get Template
      GET
    • Sync Templates
      POST
  • Contacts
    • Overview
    • List Contacts
      GET
    • Create Contact
      POST
    • Get Contact
      GET
    • Update Contact
      PATCH
    • Delete Contact
      DELETE
    • Batch Create Contacts
      POST
    • Batch Delete Contacts
      DELETE
  • Groups
    • Overview
    • List Groups
    • Create Group
    • Get Group
    • Update Group
    • Delete Group
    • Add Contacts to Group
    • Remove Contacts from Group
  • Account
    • Overview
    • Get Account Info
    • Get Usage Statistics
    • Get Plan Limits
  • Integrations
    • Webhook Format Reference
    • N8N Webhook Integration
    • eCommerce Webhook Integration
      • Webhook Listener
      • WooCommerce Webhook Setup
Dashboard
Support
Support
  • Email
  • WhatsApp
Dashboard
Support
Support
  • Email
  • WhatsApp
Instagram
  1. Integrations

N8N Webhook Integration

Automate your workflows by connecting RASL with N8N. Track changes to contacts, sources, and statuses in real-time and trigger automated actions across your business tools.

Overview#

The Webhook Integration feature sends real-time notifications to N8N
whenever important events occur in your RASL tenant. This enables you to:
Sync contacts to Google Sheets, CRMs, or databases
Send notifications via Slack, email, or SMS
Trigger workflows based on status changes
Update analytics dashboards in real time
Connect with 400+ apps supported by N8N

Supported Events#

RASL can send webhooks for the following resources:
ResourceEventsDescription
Contactscreated, updated, deletedCustomer and lead records
Sourcescreated, updated, deletedLead source tracking
Statusescreated, updated, deletedContact status tracking

Quick Start#

Step 1: Enable Webhooks in RASL#

1.
Log in to your tenant account
2.
Navigate to Settings → System Settings → Webhook Management
3.
Toggle Enable Webhooks to ON
4.
Select the events you want to track:
Contact actions (create, update, delete)
Source actions (create, update, delete)
Status actions (create, update, delete)
Click Save after configuring your webhook events.

Step 2: Create Webhook in N8N#

1.
Open your N8N workflow editor
2.
Add a Webhook node to your workflow
3.
Configure the node:
HTTP Method: POST
Path: Choose a unique path (for example: /rasl-webhooks)
Authentication: None (or configure as needed)
4.
Copy the generated webhook URL
The Webhook node can be found in the Core Nodes section of N8N.
The webhook URL will be generated automatically once the workflow is saved.

Step 3: Configure Webhook URL#

In RASL:
1.
Go to Settings → System Settings → Webhook Management
2.
Paste your N8N webhook URL into the Webhook URL field
3.
Click Save

Step 4: Test the Connection#

1.
Create a new contact in RASL
2.
Open your N8N workflow
3.
Verify that the webhook event is received
4.
Inspect the payload to confirm the data structure
You can use N8N’s Execute Node feature to test webhooks without
waiting for real events.

Webhook Payload Structure#

All webhooks sent to N8N follow a standardized JSON format:
{
  "event": {
    "id": "evt_1702468200_abc123",
    "type": "contact.created",
    "timestamp": "2025-12-12T14:30:00.000Z",
    "version": "1.0"
  },
  "tenant": {
    "id": 123,
    "name": "RASL",
    "domain": "getrasl.io"
  },
  "data": {
    "resource": {
      "type": "contact",
      "id": 456,
      "attributes": {
        "firstname": "Mahmoud",
        "lastname": "Elsayed",
        "email": "mahmoud@example.com",
        "phone": "+201XXXXXXXXX",
        "company": "RASL"
      }
    },
    "relationships": {
      "status": {
        "id": 1,
        "name": "Active"
      },
      "source": {
        "id": 2,
        "name": "Website"
      }
    }
  },
  "changes": {
    "previous": null,
    "current": { "firstname": "Mahmoud", "lastname": "Elsayed" },
    "modified_fields": null
  }
}

Key Fields Explained#

event: Metadata about the webhook event
type: Event identifier (e.g., contact.created, status.updated)
timestamp: When the event occurred (ISO 8601 format)
tenant: Information about your RASL tenant
data: The actual resource data
resource.attributes: Direct properties of the resource
relationships: Related data (status, source, groups, etc.)
changes: For updated events only
previous: Old values
current: New values
modified_fields: Array of changed field names

N8N Workflow Examples#

Example 1: New Contact Notification to Slack#

Send a Slack message whenever a new contact is created.

Workflow Nodes:#

1.
Webhook - Receive webhook from RASL
2.
IF - Filter for contact creation events
3.
Slack - Send notification

IF Node Expression:#

{
  {
    $json.event.type === 'contact.created';
  }
}

Slack Message:#

🎉 New Contact Added!

Name: {{ $json.data.resource.attributes.firstname }} {{ $json.data.resource.attributes.lastname }}
Email: {{ $json.data.resource.attributes.email }}
Phone: {{ $json.data.resource.attributes.phone }}
Source: {{ $json.data.relationships.source.name }}
Status: {{ $json.data.relationships.status.name }}

Example 2: Sync Contacts to Google Sheets#

Automatically add new contacts to a Google Sheet.

Workflow Nodes:#

Webhook - Receive webhook
IF - Filter for contact.created
Google Sheets - Append row

Google Sheets Configuration:#

ColumnData
A{{ $json.data.resource.id }}
B{{ $json.data.resource.attributes.firstname }}
C{{ $json.data.resource.attributes.lastname }}
D{{ $json.data.resource.attributes.email }}
E{{ $json.data.resource.attributes.phone }}
F{{ $json.data.relationships.status.name }}
G{{ $json.data.relationships.source.name }}
H{{ $json.event.timestamp }}

Example 3: Status Change Alert#

Get notified when a contact becomes a "Hot Lead".

Workflow Nodes:#

Webhook - Receive webhook
IF - Check for status change to "Hot Lead"
send Email - Alert sales team.
IF Node Expression:
{
  {
    $json.event.type === 'contact.updated' &&
      $json.changes.modified_fields?.includes('status_id') &&
      $json.data.relationships.status.name === 'Hot Lead';
  }
}

Extracting Data in N8N#

Use these expressions to access webhook data in your N8N workflows:

Contact Information#

Full name
{
  $json.data.resource.attributes.firstname;
}
{
  $json.data.resource.attributes.lastname;
}
Email
{
  $json.data.resource.attributes.email;
}
Phone
{
  $json.data.resource.attributes.phone;
}
Company
{
  $json.data.resource.attributes.company;
}

Relationships#

Status name
{
  $json.data.relationships.status.name;
}
Source name
{
  $json.data.relationships.source.name;
}
First group name
{
  $json.data.relationships.groups[0]?.name;
}
All groups (comma-separated)
{
  {
    $json.data.relationships.groups?.map((g) => g.name).join(', ');
  }
}
Assigned to
{
  {
    $json.data.relationships.assigned_to?.name;
  }
}

Change Tracking#

Check if email changed
{
  {
    $json.changes.modified_fields?.includes('email');
  }
}
Previous email value
{
  {
    $json.changes.previous?.email;
  }
}
Current email value
{
  {
    $json.changes.current?.email;
  }
}

HTTP Headers#

RASL includes these headers with every webhook request:
Content-Type: application/json
X-Webhook-Event: contact.created
X-Webhook-Timestamp: 2025-12-12T14:30:00+00:00
X-Webhook-Format: n8n
You can use these headers in N8N for additional validation or routing logic.

Best Practices#

1. Filter Events Early#

Use IF nodes at the start of your workflow to filter only the events you need:
{
  {
    $json.event.type === 'contact.created' ||
      $json.event.type === 'contact.updated';
  }
}

2. Handle Errors Gracefully#

Add error handling nodes to prevent workflow failures:
Use Try/Catch blocks
Set up Error Workflow in N8N settings

3. Avoid Rate Limits#

If processing large volumes:
Use Batch nodes to group operations
Add Wait nodes between API calls
Consider using Queue nodes for async processing

4. Test with Real Data#

Always test your workflow with actual webhook data before deploying to production.

5. Monitor Webhook Deliveries#

Check your webhook logs in RASL:
Go to Settings → System Settings → Webhook Management
View delivery history and error logs

Troubleshooting#

Webhook Not Received#

1. Check N8N#

Workflow is activated
Webhook node is properly configured
URL is publicly accessible (not localhost)

2. Check RASL#

Webhooks are enabled
Correct URL is configured
Events are selected
Check webhook logs for errors

Incorrect Data Format#

Check the Webhook Format Reference for detailed payload structure
Use N8N's Execute Node to inspect raw payload

Authentication Errors#

If using webhook authentication in N8N:
Configure matching authentication in RASL
Use header-based auth (Basic or Bearer tokens)

Related Resources#

Webhook Format Reference - Detailed payload documentation
N8N Documentation - Official N8N docs
Previous
Webhook Format Reference
Next
Webhook Listener
Built with