ClickSend
ClickSend is an SMS, email and multichannel messaging platform. Datafly Signal adds your identified visitors to a ClickSend contact list server-side (REST v3 POST /lists/{list_id}/contacts), ready for SMS and email campaigns.
Why route ClickSend through Datafly Signal
- Events come from your server, not the browser. They reach ClickSend even when a tracker blocker or a failed page unload would have dropped a client-side call.
- Delivery is queued and retried. Signal buffers to Kafka and retries on 429 or a transient failure rather than dropping the event; a permanent rejection goes to the dead-letter queue with the vendor’s reason.
- One consent decision governs every destination. ClickSend is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Get your ClickSend credentials
Get your API credentials
In the ClickSend dashboard open Developers > API Credentials. Copy your username and API key.
Create or choose a contact list
Open Contacts > Lists and note the numeric list ID (it is in the list URL).
Configuration
| Field | Required | Description |
|---|---|---|
api_username | Yes | Your ClickSend account username (the email/username you log in with). Used as the HTTP Basic auth username. |
api_key | Yes | Your ClickSend API key. Find it in the ClickSend Dashboard under Developers > API Credentials. Used as the HTTP Basic auth password. |
list_id | Yes | The numeric ID of the ClickSend contact list to enroll contacts into. Find it in Dashboard > Contacts > Lists (in the list URL or via GET /lists). |
Management UI setup
- Go to Integrations in the sidebar and open the Integration Library tab.
- Find ClickSend under Marketing Automation and click Install.
- Choose a preset, enter the fields above and click Install Integration.
Management API setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/clicksend/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "ClickSend",
"variant": "default",
"config": {
"api_username": "your_api_username",
"api_key": "your_api_key",
"list_id": "your_list_id"
},
"delivery_mode": "server_side"
}'What Signal sends
An example request, rendered from the default preset for sign_up:
POST https://rest.clicksend.com/v3/lists/123456/contacts
{
"address_city": "Bath",
"address_country": "GB",
"address_postal_code": "BA1 1AA",
"address_state": "Somerset",
"custom_1": "sign_up",
"custom_2": "google",
"email": "neill@example.com",
"first_name": "Neill",
"last_name": "Mcfixture",
"organization_name": "Acme Ltd",
"phone_number": "+447700900123"
}| Field | Source |
|---|---|
email | The email from identify() traits, trimmed and lower-cased. |
phone_number | The phone from traits in E.164 (+447700900123); a national number is completed from the visitor’s country or locale. |
first_name, last_name, organization_name | From traits (company for the organisation). |
address_city, address_state, address_postal_code, address_country | From the address trait; the country is upper-cased. |
custom_1 | The Signal event that created the contact (sign_up, generate_lead …). |
custom_2 | The sign-up method, subscription source, lead type, insurance type or dealer, per event. |
ClickSend messages the contact directly and has no hashed-identifier option, so email and phone are sent in plain text to your own ClickSend account. An event with neither an email nor a phone is dropped: ClickSend rejects a contact without an email, phone or fax.
Presets
| Preset | Signal event → vendor event |
|---|---|
| Default | sign_up → contact_create, newsletter_subscribed → contact_create, generate_lead → contact_create |
| Retail | sign_up → contact_create, newsletter_subscribed → contact_create |
| Insurance | generate_lead → contact_create, quote_requested → contact_create, lead_submitted → contact_create, sign_up → contact_create |
| Automotive | generate_lead → contact_create, test_drive_booked → contact_create, dealer_contacted → contact_create, sign_up → contact_create |
Events not listed are not sent. Each preset is a starting point: add, rename or remove mappings on the installed integration.
Notes and limits
- ClickSend’s create-contact call adds a new contact every time; it is not an upsert. The presets therefore map one-off events (sign-up, newsletter sign-up, lead forms) and not
identifyor purchases, which repeat. Use ClickSend’s Remove duplicates on the list if a visitor signs up twice. - Cookie-banner consent is not SMS or email consent. Gate the integration on the consent category you use for marketing messages, and record messaging opt-in in ClickSend.
Consent
Marketing-automation integrations have no consent category by default. Assign the marketing category when you install ClickSend, so an event is delivered only when the visitor has granted it. Cookie-banner consent is not email or SMS opt-in: keep messaging opt-in in ClickSend.
Verify it’s working
- Open the integration in the Signal Management UI and watch Live Events while you trigger a mapped event.
- Confirm a 2xx response from ClickSend.
- Find the contact in ClickSend and check the event or record arrived.
Troubleshooting
| Symptom | Resolution |
|---|---|
401 Unauthorized | Check the username and API key (Developers > API Credentials). |
404 Not Found | The list ID does not exist in this account. |
| Nothing sent for an event | The visitor had no email or phone in identify() traits. |