WhatsApp API for cart and sales recovery
You lose revenue every day to abandoned carts, unpaid payment links and overdue invoices nobody follows up on. With the D-API WhatsApp API, each of these events triggers a WhatsApp message at the right moment, without relying on human agents.
- Uptime: 99.9%
- Payment: Link in the chat
- Delivery: With retries
You shouldn't be solving this.
Problems D-API takes off your plate.
Abandoned carts go cold before any contact
Conversion is high in the first minutes, but without an automatic send the customer has already bought elsewhere by the time you notice.
Unpaid payment links become lost sales
The checkout link is still valid, but without an immediate reminder the customer forgets and the payment never happens.
Overdue invoices and declined cards overload the team
Resending invoices, renegotiating and involuntary subscription churn eat hours of human support on tasks that should be automatic.
From zero to production in four steps.
Connect your sales event
Point your store or payment gateway webhook to D-API and send messages via REST API for every abandoned cart, unpaid payment link or overdue invoice.
Read the docsBuild the recovery flow
Use n8n, Make or Zapier to design the sequence of WhatsApp payment reminders, overdue invoice follow-ups and downsells, with your own timing and conditions.
See integrationsTurn on CTAs and payment links
Resend the active payment link, offer a new invoice and renegotiation paths with native WhatsApp buttons, lists and carousels.
Distribute and measure
Route recovered leads to sales reps via the Datacrazy CRM integration and track delivery, reads and replies in real time.
import { DApi } from 'd-api-sdk'
const dapi = new DApi({ apiKey: process.env.DAPI_API_KEY })
await dapi.sessions.create({
sessionId: 'customer-42',
webhookUrl: 'https://your-app.com/webhooks/whatsapp',
})
const { qrCodeImage } = await dapi.sessions.getQRCode('customer-42')
// once the number scans the QR code
await dapi.messages.sendText({
sessionId: 'customer-42',
to: '14155550123',
text: 'Your order is confirmed!',
})curl -X POST https://api.d-api.cloud/api/v1/sessions \
-H "Authorization: $DAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sessionId": "customer-42", "webhookUrl": "https://your-app.com/webhooks/whatsapp"}'
curl https://api.d-api.cloud/api/v1/sessions/customer-42/qr \
-H "Authorization: $DAPI_API_KEY"
# once the number scans the QR code
curl -X POST https://api.d-api.cloud/api/v1/messages/send/text \
-H "Authorization: $DAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sessionId": "customer-42", "to": "14155550123", "text": "Your order is confirmed!"}'import os
import requests
API = "https://api.d-api.cloud/api/v1"
HEADERS = {"Authorization": os.environ["DAPI_API_KEY"]}
requests.post(f"{API}/sessions", headers=HEADERS, timeout=10, json={
"sessionId": "customer-42",
"webhookUrl": "https://your-app.com/webhooks/whatsapp",
})
qr = requests.get(f"{API}/sessions/customer-42/qr", headers=HEADERS, timeout=10).json()
# once the number scans the QR code
requests.post(f"{API}/messages/send/text", headers=HEADERS, timeout=10, json={
"sessionId": "customer-42",
"to": "14155550123",
"text": "Your order is confirmed!",
})<?php
use GuzzleHttp\Client;
$dapi = new Client([
'base_uri' => 'https://api.d-api.cloud/api/v1/',
'headers' => ['Authorization' => getenv('DAPI_API_KEY')],
'timeout' => 10,
]);
$dapi->post('sessions', ['json' => [
'sessionId' => 'customer-42',
'webhookUrl' => 'https://your-app.com/webhooks/whatsapp',
]]);
$qr = json_decode($dapi->get('sessions/customer-42/qr')->getBody(), true);
// once the number scans the QR code
$dapi->post('messages/send/text', ['json' => [
'sessionId' => 'customer-42',
'to' => '14155550123',
'text' => 'Your order is confirmed!',
]]);Works with the tools you already use
- n8n
- Make
- Zapier
- Datacrazy CRM
- Node.js SDK
React within seconds to the event that makes a customer give up.
Reaction within seconds
Immediate send via REST API the moment the cart is abandoned or the payment link is created, while the chance of conversion is still high.
Webhooks with automatic retries
Events arrive with exponential backoff retries, so no sales recovery is lost to a network failure.
Payment link right in the conversation
Resend the active payment link inside WhatsApp in a native button, and use buttons, lists and carousels so the customer pays in one tap.
No-code recovery flows
Build cart, overdue invoice and downsell flows with n8n, Make or Zapier, without waiting on an engineering deploy.
Multichannel coverage
WhatsApp as the main channel, with SMS and IVR/voice as recovery layers for whoever did not reply to the first message.
Volume without bans
Multiple isolated numbers and a dedicated proxy with its own IP per connection reduce the risk of blocks in recovery campaigns at scale.
Real-time metrics
Live delivery, read and reply reports so you know which flow actually recovers sales and can adjust on the spot.
Frequently asked questions.
How does abandoned cart recovery on WhatsApp work?
Can I send payment reminders on WhatsApp automatically?
Can I automate overdue invoice follow-ups on WhatsApp?
How do I recover churn from declined cards on subscriptions?
Does sending recovery messages in volume increase the risk of bans?
Ready to go to production?
3-day free trial with full access. No credit card, no lock-in.
