Interfaces and Responses#
Communication Apps react to events triggered by Salla. Each event delivers a specific context object to your App Function, and your function is expected to return a structured response.For App Functions fundamentals (execution types, Resp utility, runtime constraints, testing), see the App Functions reference.
Available events#
The events your function receives are controlled by the Supported Features you declared in the Partner Portal (see Get Started - Step 1).| Event | Fires when | Controlled by Supported Feature |
|---|
communication.sms.send | Salla needs to send an SMS to a customer | Local SMS and/or International SMS |
communication.email.send | Salla needs to send an email to a customer | Email |
communication.whatsapp.send | Salla needs to send a WhatsApp message to a customer | WhatsApp |
CommunicationEvent interface#
This is the full TypeScript shape of the context object your handler receives.Context object (JSON Example)#
{
"payload": {
"event": "communication.sms.send",
"merchant": 292111819,
"created_at": "Mon Nov 10 2025 17:18:13 GMT+0300",
"data": {
"notifiable": ["+96656000000"],
"type": "order.status.updated",
"content": "Your order #123 is now [Delivered]",
"entity": { "id": 12345, "type": "order" },
"meta": { "customer_id": 98765 }
}
},
"settings": {
"sms_api_key": "your-key",
"sms_sender_id": "MyStore"
},
"merchant": { "id": "292111819" }
}
Event Reference#
These are the common event types your app receives through the data.type field. Each event includes specific metadata and relates to a store entity.Authentication#
OTP Verification#
Sent when a customer requests a verification code for login or registration.Type: auth.otp.verification
Supported Channels: SMS, Email, WhatsApp
code: (string) The 4-digit numeric verification code.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "auth.otp.verification",
"content": "Your verification code is: 1234",
"entity": null,
"meta": { "code": "1234" }
}
}
Orders#
Order Status Confirmation#
Sent when an order is created and is pending payment.Type: order.status.confirmation
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer who placed the order.
{
"event": "communication.email.send",
"data": {
"notifiable": ["customer@example.com"],
"type": "order.status.confirmation",
"content": "We received your order #123. Please complete payment.",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Order Status Updated#
Sent when the status of an order is changed (e.g., from Processing to Delivered).Type: order.status.updated
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "order.status.updated",
"content": "Your order #123 is now [Delivered]",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Invoice Issued#
Sent when an invoice is generated for an order.Type: order.invoice.issued
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.email.send",
"data": {
"notifiable": ["customer@example.com"],
"type": "order.invoice.issued",
"content": "Your invoice for order #123 is ready.",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Shipment Created#
Sent when a shipment is created for an order.Type: order.shipment.created
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "order.shipment.created",
"content": "Your shipment for order #123 is on its way. Tracking: SHP123",
"entity": { "id": 456, "type": "shipment" },
"meta": { "customer_id": 987 }
}
}
Digital Product Code#
Sent when a customer purchases a digital product that includes a code.Type: product.digital.code
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "product.digital.code",
"content": "Your digital code for Order #123 is: ABC-DEF",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Order Refunded#
Sent when an order is refunded to the customer.Type: order.refund.processed
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.email.send",
"data": {
"notifiable": ["customer@example.com"],
"type": "order.refund.processed",
"content": "A refund has been processed for your order #123.",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Gift Order Placed#
Sent when a customer places an order as a gift for someone else.Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "order.gift.placed",
"content": "Someone sent you a gift! Your gift order #123 has been placed.",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Payment Reminder#
Sent as a reminder for a pending payment on an order.Type: payment.reminder.due
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "payment.reminder.due",
"content": "Friendly reminder: Your order #123 is waiting for payment.",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Products#
Product Availability Alert#
Sent when a product that was out of stock becomes available.Type: product.availability.alert
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer who requested the alert.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "product.availability.alert",
"content": "Good news! The product you wanted is back in stock.",
"entity": { "id": 555, "type": "product" },
"meta": { "customer_id": 987 }
}
}
Customers#
Abandoned Cart Reminder#
Sent to remind a customer about items left in their cart.Type: customer.cart.abandoned
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.whatsapp.send",
"data": {
"notifiable": ["+96656000000"],
"type": "customer.cart.abandoned",
"content": "You left items in your cart! Complete your purchase here: [link]",
"entity": { "id": 789, "type": "cart" },
"meta": { "customer_id": 987 }
}
}
Rating Request#
Sent to request a customer to rate their experience after an order is completed.Type: customer.rating.request
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.whatsapp.send",
"data": {
"notifiable": ["+96656000000"],
"type": "customer.rating.request",
"content": "How was your order #123? Rate us here: [link]",
"entity": { "id": 123, "type": "order" },
"meta": { "customer_id": 987 }
}
}
Feedback Reply#
Sent when a merchant replies to customer feedback or reviews.Type: customer.feedback.reply
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.email.send",
"data": {
"notifiable": ["customer@example.com"],
"type": "customer.feedback.reply",
"content": "The merchant replied to your review: Thank you for your feedback!",
"entity": { "id": 321, "type": "feedback" },
"meta": { "customer_id": 987 }
}
}
Loyalty Points Earned#
Sent when a customer earns loyalty points from a purchase or action.Type: customer.loyalty.earned
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
points: (number) The amount of points earned.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "customer.loyalty.earned",
"content": "Congratulations! You earned 50 loyalty points.",
"entity": null,
"meta": { "customer_id": 987, "points": 50 }
}
}
Marketing & System#
Campaign Broadcast#
Sent during a mass marketing campaign.Type: marketing.campaign.broadcast
Supported Channels: Email, SMS, WhatsApp
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "marketing.campaign.broadcast",
"content": "Flash Sale! Get 50% off today only.",
"entity": null,
"meta": {}
}
}
Custom System Message#
Sent when a custom or generic system message is triggered.Type: system.message.custom
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.email.send",
"data": {
"notifiable": ["customer@example.com"],
"type": "system.message.custom",
"content": "This is a custom message from the store.",
"entity": null,
"meta": { "customer_id": 987 }
}
}
General System Alert#
Sent when a general system notification or alert is triggered.Type: system.alert.general
Supported Channels: Email, SMS, WhatsApp
customer_id: (number) The ID of the customer.
{
"event": "communication.sms.send",
"data": {
"notifiable": ["+96656000000"],
"type": "system.alert.general",
"content": "A security alert has been triggered for your account.",
"entity": null,
"meta": { "customer_id": 987 }
}
}
Entity Type Reference#
When an event includes an entity object, the id refers to the corresponding resource. Use these links to the Salla API documentation to learn how to fetch more details about these entities if your App Function requires more context than what is provided in the payload.| Entity Type | Description | API Reference |
|---|
order | A unique identifier for a store order. | Order API |
shipment | A unique identifier for a shipment. | Shipment API |
cart | A unique identifier for a shopping cart. | Abandoned Cart API |
feedback | A unique identifier for a customer review. | Review API |
product | A unique identifier for a product. | Product API |
Next steps#
Explore practical code examples for all channels: Examples Modified at 2026-03-08 22:10:55