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:

  • email

  • cell_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

  1. You create a channel using the /v2/create/channel endpoint. You define:

    • The channel type (customer or product)

    • The permissions (read or write)

    • The custom field schema (expected incoming fields)

  2. Let'sTrade generates:

    • A unique webhook_uuid

    • An api_key

  3. Third-party systems send data to the channel’s webhook endpoint using the API key.

  4. Let'sTrade validates the request:

    • Checks the API key

    • Confirms the identifier (email / cell_number )

    • Ensures the payload matches the schema

  5. 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.global

Channel Management

Create Channel

POST /v2/create/channel

Creates a new webhook channel with specified permissions and custom field schema.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Request Body

Parameter
Type
Required
Description

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

Name
Value

Content-Type

application/json

X-API-Key

{{api_key}}

Request Body

Parameter
Type
Required
Description

email

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

  1. Authenticate User

    • Use the /user/sign_in endpoint to authenticate and receive a token

    • Store the token for subsequent API calls

  2. Create Webhook Channel

    • Use the /v2/create/channel endpoint to create a new webhook channel

    • Save the webhook_uuid and api_key from the response

  3. 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