Customer Channels
Custom Channels provide a secure way for third-party systems to push data directly into Let'sTrade CRM. They act as controlled integration points where you define exactly what type of data an external partner may send, what fields they are allowed to update, and what level of access they have inside your Let'sTrade account.
A Custom Channel ensures that external systems can enrich customer profiles in the Let'sTrade CRM, without exposing the full API surface or compromising security.
Where Custom Channels Can Be Used
1. Customer Integrations (CRM)
Custom Channels allow external platforms to push data into a customer profile inside Let'sTrade.
They can be used for:
Loyalty platform integrations
POS systems submitting customer activity
Marketing or automation tools adding attributes
Mobile apps enriching customer data
Identity verification providers
Support or call centre systems
Data is written into the Let'sTrade CRM as custom attributes, alongside core fields.
Critical Identifier Requirements
Every payload sent to a Custom Channel must contain a primary identifier so Let'sTrade knows which customer or product to attach the data to.
Customer Channels
The payload must include one of the following:
emailcell_number
At least one of these fields is required. Without it, Let'sTrade cannot match the incoming data to a customer profile.
How Custom Channels Work
You create a channel using the
/v2/create/channelendpoint. You define:The channel type (
customerorproduct)The permissions (read or write)
The custom field schema (expected incoming fields)
Let'sTrade generates:
A unique
webhook_uuidAn
api_key
Third-party systems send data to the channel’s webhook endpoint using the API key.
Let'sTrade validates the request:
Checks the API key
Confirms the identifier (email / cell_number )
Ensures the payload matches the schema
Data is mapped into the correct CRM as custom fields.
This creates a controlled, secure, and extensible integration path for partners.
API Base URL
All Custom Channel API requests use the following base URL:
https://lets-trade-user-prod.letstrade.globalChannel Management
Create Channel
POST /v2/create/channel
Creates a new webhook channel with specified permissions and custom field schema.
Headers
Content-Type
application/json
Authorization
Bearer <token>
Request Body
type
string
Yes
Type of webhook (e.g., "customer_webhook")
channel_type
string
Yes
Channel classification (e.g., "customer")
status
string
Yes
Channel status (e.g., "ACTIVE")
permissions
object
Yes
Access permissions for different resources
permissions.products
object
Yes
Read/write permissions for products
permissions.orders
object
Yes
Read/write permissions for orders
permissions.customers
object
Yes
Read/write permissions for customers
custom_field_schema
array
Yes
Array of custom field definitions
custom_field_schema.email
string
Conditional, required if custom_field_schema.custom is absent
Customer email
custom_field_schema.cell_number
string
No
Customer cell number
Sample Request
{
"type": "customer_webhook",
"channel_type": "customer",
"status": "ACTIVE",
"permissions": {
"products": { "read": false, "write": false },
"orders": { "read": false, "write": false },
"customers":{ "read": true, "write": true }
},
"custom_field_schema": [
{ "name": "email", "type": "email", "required": true },
{ "name": "first_name", "type": "string", "required": true },
{ "name": "last_name", "type": "string", "required": false },
{ "name": "cell_number", "type": "phone", "required": false }
]
}Response (200 OK)
{
"success": true,
"message": "Channel successfully created!",
"content": {
"channel": {
"_id": "690db9ed6fea8b111a53d070",
"client_id": "65c5f21b94dc7e9957e2cd95",
"status": "ACTIVE",
"deleted": false,
"permissions": {
"products": {
"read": false,
"write": false
},
"orders": {
"read": false,
"write": false
},
"customers": {
"read": true,
"write": true
}
},
"type": "customer_webhook",
"channel_type": "customer",
"webhook_uuid": "db06990c-d70e-4c93-8cce-ef2737d2cacd",
"webhook_url": "/webhooks/channels/db06990c-d70e-4c93-8cce-ef2737d2cacd/customers"
},
"webhook_url": "/webhooks/channels/db06990c-d70e-4c93-8cce-ef2737d2cacd/customers",
"api_key": "97022b6605e2ab13eff7b75b37f068d2"
}
}Important: The webhook_uuid returned in the response will be used to access the webhooks endpoint.
Webhooks
Create/Update Customer via Webhook
POST /v1/webhooks/channels/{{webhook_uuid_id}}/customers
Creates a new customer or updates an existing customer through a webhook channel.
Replace {{webhook_uuid_id}} with the webhook_uuid value obtained from the channel creation response.
Headers
Content-Type
application/json
X-API-Key
{{api_key}}
Request Body
string
Yes
Customer's email address
first_name
string
Yes
Customer's first name
last_name
string
No
Customer's last name
cell_number
string
No
Customer's phone number (E.164 format recommended)
Sample Request
{
"email": "[email protected]",
"first_name": "JohnChrisUser1Giordi6",
"last_name": "DoeChrisUser1Giordi6",
"cell_number": "+27721234565"
}Response (200 OK)
{
"success": true,
"message": "Customer successfully created/updated",
"content": {
"_id": "69144f7907067c74beadd161",
"cell_number": "27721234565",
"email": "[email protected]",
"client_id": "65c5f21b94dc7e9957e2cd95",
"__v": 0,
"agrees_terms_and_conditions": true,
"cell_country_code": "+27",
"channels": [
{
"channel_id": "690db9ed6fea8b111a53d070",
"channel": "CUSTOMER_WEBHOOK",
"name": "customer_webhook"
}
],
"children": [],
"createdAt": "2025-11-12T09:12:25.693Z",
"extra_data": [],
"floating_fleet": false,
"gender": "N/A",
"get_communication": false,
"identity_type": "N/A",
"imported": true,
"name": "JohnChrisUser1Giordi6",
"needs_password_change": true,
"password": "$argon2id$v=19$m=65536,t=3,p=4$ye7Ngfb+THQeVpdNJNH3H4ZFP/NjqDL++JK068ASu2U$dY7SYAkTAxiwRkIkeARQepX/SL+++Nfukx3jzFazO5s",
"role": "USER",
"status": "ACTIVE",
"surname": "DoeChrisUser1Giordi6",
"updatedAt": "2025-11-12T09:12:49.594Z"
}
}Integration Flow
Typical Integration Steps
Authenticate User
Use the
/user/sign_inendpoint to authenticate and receive a tokenStore the token for subsequent API calls
Create Webhook Channel
Use the
/v2/create/channelendpoint to create a new webhook channelSave the
webhook_uuidandapi_keyfrom the response
Use Webhook Endpoint
Use the webhook endpoint to create/update customers
Include the API key in your requests
The webhook URL format:
/v1/webhooks/channels/{webhook_uuid}/customers
Last updated