ClickSend
ClickSend is an SMS, MMS, and multichannel communications platform. Datafly Signal delivers your identified visitors server-side into a ClickSend contact list as Contacts, so they can receive SMS and email campaigns. Because the contact list lives in your own ClickSend account, name, email, and phone are delivered in plaintext (your CRM, your data); phone numbers are normalised to E.164.
This connector targets contact enrollment, not transactional message sending. It upserts a Contact on identity-bearing events (sign-up, identify) and drops browsing-only events.
Prerequisites
- A ClickSend account with API access.
- An existing contact list in ClickSend (Dashboard > Contacts > Lists). Note its numeric List ID.
- Your account username and API key (Dashboard > Developers > API Credentials).
Configuration
| Field | Required | Description |
|---|---|---|
| Account Username | Yes | Your ClickSend account username. Used as the HTTP Basic auth username. |
| API Key | Yes | Your ClickSend API key. Used as the HTTP Basic auth password. |
| Contact List ID | Yes | The numeric ID of the ClickSend contact list to enroll contacts into. |
Configure in Signal
- In Signal, open Integrations and add ClickSend.
- Enter your Account Username, API Key, and Contact List ID.
- Attach the integration to a pipeline and select the Default preset.
- Save and deploy the pipeline.
The Default preset enrolls contacts on Signed Up and Identify. All other events are dropped.
API Endpoint
Signal sends one HTTP request per enrolled contact:
POST https://rest.clicksend.com/v3/lists/{list_id}/contacts
Authorization: Basic base64(username:api_key)
Content-Type: application/jsonAuthentication is HTTP Basic: your account username and API key. {list_id} is your configured Contact List ID. A contact must have at least one of email or phone_number; events without either are not delivered.
Identity Signals
ClickSend keys contacts within a list on email / phone_number, so repeated deliveries for the same visitor target the same contact. Signal maps:
email— trimmed and lowercased.phone_number— normalised to E.164 (ClickSend requires E.164).
PII is sent in plaintext because the contact list is in your own ClickSend account. ClickSend has no hashed-input surface for contact creation.
Event Mapping
| Signal event | ClickSend action |
|---|---|
Signed Up | Create / upsert contact in list |
Identify | Create / upsert contact in list |
Contact fields are mapped from visitor traits: first_name, last_name, email, phone_number, organization_name, and address fields (address_city, address_state, address_postal_code, address_country). Marketing consent is written to custom_1 as marketing_opt_in / marketing_opt_out / marketing_unknown.
Datafly.js example
datafly.track('Signed Up', {
method: 'email'
}, {
traits: {
email: 'Jane.Doe@example.com',
phone: '+1 (415) 555-0132',
first_name: 'Jane',
last_name: 'Doe',
company: 'Acme Inc'
}
});Resulting ClickSend payload
{
"email": "jane.doe@example.com",
"phone_number": "+14155550132",
"first_name": "Jane",
"last_name": "Doe",
"organization_name": "Acme Inc",
"custom_1": "marketing_opt_in"
}Testing
- Fire a
Signed Upevent (with email or phone) from a page running your Signal tag. - In Signal, open the Event Debugger and confirm the event delivered to ClickSend with a
2xxresponse. - In the ClickSend Dashboard, open Contacts > Lists, select your list, and confirm the contact appears with the expected email / phone / name.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
401 / 403 | Wrong username or API key | Recheck credentials in Dashboard > Developers > API Credentials. The password is the API key, not your login password. |
404 | Unknown List ID | Confirm the Contact List ID exists in Dashboard > Contacts > Lists. |
400 — contact rejected | No email or phone, or invalid phone | Ensure each enrolled visitor has an email or phone trait; phone must resolve to E.164. |
| Contact not appearing | Event dropped | Only Signed Up and Identify are delivered. Browsing events are dropped by design. |