Leanplum

Leanplum (a CleverTap company) is a customer engagement platform for mobile and web. Datafly Signal sends your events to the Leanplum track API (POST /api?action=track) for campaigns and analytics, without the client SDK.

Why route Leanplum through Datafly Signal

  • Events come from your server, not the browser. They reach Leanplum 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. Leanplum is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Get your Leanplum credentials

Copy your app keys

In Leanplum open App Settings > Keys & Settings and copy the App ID and the Production client key.

Configuration

FieldRequiredDescription
app_idYesYour Leanplum Application ID. Find it under your app in the Leanplum dashboard navigation, or in App Settings > Keys & Settings.
client_keyYesYour Leanplum Production API client key (App Settings > Keys & Settings). Use the Production key, not the Development key, so events land in your live environment.

Management UI setup

  1. Go to Integrations in the sidebar and open the Integration Library tab.
  2. Find Leanplum under Marketing Automation and click Install.
  3. Choose a preset, enter the fields above and click Install Integration.

Management API setup

curl -X POST http://localhost:8084/v1/admin/integration-catalog/leanplum/install \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Leanplum",
  "variant": "default",
  "config": {
    "app_id": "your_app_id",
    "client_key": "your_client_key"
  },
  "delivery_mode": "server_side"
}'

What Signal sends

An example request, rendered from the ecommerce preset for purchase:

POST https://api.leanplum.com/api?action=track
 
{
  "apiVersion": "1.0.6",
  "appId": "app_x",
  "clientKey": "prod_x",
  "currencyCode": "GBP",
  "deviceId": "df_anon_m2_0001",
  "event": "Purchase",
  "params": {
    "coupon": "AUTUMN10",
    "item_brand": "NorthEdge",
    "item_category": "Jackets",
    "item_count": 2,
    "item_id": "SKU-1",
    "item_name": "Parka Jacket",
    "price": 129.99,
    "quantity": 2,
    "shipping": 4.99,
    "tax": 46.66,
    "transaction_id": "ORD-1001"
  },
  "time": 1758500000,
  "userId": "crm-user-7",
  "value": 279.98
}
FieldSource
appId, clientKey, apiVersionYour keys and API version 1.0.6, in the JSON body (not the URL).
userId, deviceIdThe signed-in user ID, and the Signal anonymous ID as the device ID. Leanplum creates the user if new.
eventThe event name shown under Presets. Purchase is Leanplum’s monetization event.
value, currencyCodeThe amount and its ISO 4217 code (upper-cased); Leanplum converts to your reporting currency.
timeEvent time, Unix seconds.
paramsA flat object of the event’s properties (up to 50): product fields from the first items[] element and item_count.

No email, phone or name is sent.

Presets

PresetSignal event → vendor event
Retailsearch → Search, view_item → View Item, add_to_cart → Add to Cart, remove_from_cart → Remove from Cart, add_to_wishlist → Add to Wishlist, begin_checkout → Checkout Started, purchase → Purchase, refund → Refund, sign_up → Sign Up, login → Login
Defaultsign_up → Sign Up, login → Login, search → Search, view_item → View Item, add_to_cart → Add to Cart, begin_checkout → Checkout Started, purchase → Purchase
Gamingsign_up → Sign Up, login → Login, tutorial_completed → Tutorial Completed, level_started → Level Started, level_completed → Level Completed, level_failed → Level Failed, achievement_unlocked → Achievement Unlocked, item_purchased → Purchase, currency_earned → Currency Earned, currency_spent → Currency Spent
Media & Streamingsign_up → Sign Up, login → Login, content_viewed → Content Viewed, content_completed → Content Completed, content_shared → Content Shared, video_played → Video Played, purchase → Purchase, subscription_renewed → Subscription Renewed, subscription_cancelled → Subscription Cancelled

Events not listed are not sent. Each preset is a starting point: add, rename or remove mappings on the installed integration.

Notes and limits

  • Leanplum accepts only JSON or multipart request bodies; Signal sends JSON.

Marketing-automation integrations have no consent category by default. Assign the analytics category when you install Leanplum, 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 Leanplum.

Verify it’s working

  1. Open the integration in the Signal Management UI and watch Live Events while you trigger a mapped event.
  2. Confirm a 2xx response from Leanplum.
  3. Find the contact in Leanplum and check the event or record arrived.

Troubleshooting

SymptomResolution
success: false in the responseSignal reports the error Leanplum returns (for example a wrong client key) as a permanent failure.
Events in the wrong environmentUse the Production key, not the Development key.