RASL
RASL | DashboardContact
RASL | DashboardContact
Instagram
  1. Integrations
RASL
  • Introduction
  • Messages
    • Overview
    • Message Bot Management
      • List Message Bots
      • Get Message Bots Details
    • Send Simple Message
      POST
    • Send Media Message
      POST
  • Templates
    • Overview
    • Template Management
      • Template Bot
        • List Template Bots
        • Get Template Bots Details
      • List Templates
      • Get Template Details
    • Send Authentication Template
      POST
    • Send Template Message
      POST
  • Contacts
    • Overview
    • Create a New Contact
      POST
    • List Contacts
      GET
    • Get Contact Details
      GET
    • Update Contact Information
      PUT
    • Delete Contact
      DELETE
  • Groups
    • Overview
    • Create Group
      POST
    • List Groups
      GET
    • Get Group Details
      GET
    • Update Group
      PUT
    • Delete Group
      DELETE
  • Statuses
    • Overview
    • Create Status
      POST
    • List Statuses
      GET
    • Get Status Details
      GET
    • Update Status
      PUT
    • Delete Status
      DELETE
  • Sources
    • Overview
    • Create Source
    • List Sources
    • Get Source Details
    • Update Source
    • Delete Source
  • Integrations
    • N8N Webhook Integration
    • Webhook Format Reference
    • eCommerce Webhook Integration
      • Webhook Listener
      • WooCommerce Webhook Setup
RASL | DashboardContact
RASL | DashboardContact
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
Integrations
Next
Webhook Format Reference
Built with