Rekindle API Reference
The Rekindle API powers the Zapier integration and allows external systems — POS, e-commerce platforms, CRMs — to push customer data into Rekindle and receive alerts when customers need attention.
API access requires the Scale plan. Generate your key from Settings → Zapier & Integrations in your Rekindle account.
Authentication
All API requests must include your API key in the Authorization header:
Authorization: Bearer rk_live_your_key_hereBase URL: https://rekindle.business/api/zapier
All endpoints require HTTPS. HTTP requests are not supported.
Rate Limits
120 requests per minute per API key. Requests exceeding this limit receive a 429 Too Many Requests response:
HTTP/1.1 429 Too Many Requests
Retry-After: 30
Content-Type: application/json
{ "error": "Too many requests. Please slow down and try again shortly." }Trigger — Customer Needs Attention
GET /triggers/customer-statusReturns up to 10 customers whose engagement is dropping (status at_risk, lapsed, or lost), ordered by most recently updated. Zapier polls this endpoint approximately every 15 minutes and deduplicates results by id.
Response
[
{
"id": "bbc3d2b3-55ba-4adf-8ac9-d51d7b6c1234",
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+27821234567",
"status": "lapsed",
"engagement_score": 32,
"last_purchase_date": "2024-09-01",
"total_spent": 4200.00,
"purchase_count": 7,
"returned_at": null,
"updated_at": "2025-03-15T10:22:00Z"
}
]| Status value | Meaning |
|---|---|
at_risk | Engagement is slipping — customer buying less frequently |
lapsed | Has gone quiet — no recent purchase activity |
lost | Extended absence — win-back message recommended |
Trigger — Customer Returned
GET /triggers/customer-returnedReturns up to 10 customers who have been attributed as returned (won back) after a Rekindle message, ordered by returned_at DESC. returned_at is set when Rekindle detects a new purchase from a previously lapsed or lost customer after a win-back message was sent.
Response schema is identical to the Customer Needs Attention trigger above.
Action — Update or Add Customer
POST /actions/update-customer
Content-Type: application/jsonCreates a new customer or updates an existing one matched by email. Rekindle re-scores the customer immediately after upsert and checks for win-back attribution automatically.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | ✅ | Customer's full name |
| string | ✅ | Email address — used as the unique identifier | |
| phone | string | ❌ | Phone number with country code (e.g. +27821234567) |
| last_purchase_date | string | ❌ | ISO 8601 date (e.g. 2025-01-15) |
| total_spent | number | ❌ | Lifetime spend in your business currency |
| purchase_count | integer | ❌ | Total number of purchases made |
Response
{
"customer": {
"id": "bbc3d2b3-55ba-4adf-8ac9-d51d7b6c1234",
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+27821234567",
"status": "active",
"engagement_score": 78,
"last_purchase_date": "2025-01-15",
"total_spent": 4700.00,
"purchase_count": 8,
"returned": false,
"updated_at": "2025-04-05T08:00:00Z"
}
}returned: true means this update triggered a win-back attribution — the customer was previously disengaged and is now active following a Rekindle message.Search — Find Customer by Email
GET /actions/find-customer?email=jane@example.comLooks up a customer by email address. Use as a Zapier Search step before Update or Add Customer to check whether a record already exists.
Query parameters
| Parameter | Required | Description |
|---|---|---|
| ✅ | Email address to search for |
Response — found
[
{
"id": "bbc3d2b3-55ba-4adf-8ac9-d51d7b6c1234",
"name": "Jane Smith",
"email": "jane@example.com",
"status": "lapsed",
"engagement_score": 32,
"last_purchase_date": "2024-09-01",
"total_spent": 4200.00,
"purchase_count": 7,
"returned_at": null,
"updated_at": "2025-03-15T10:22:00Z"
}
]Response — not found
HTTP/1.1 404 Not Found
{ "error": "Customer not found" }Error Codes
| Status | Meaning |
|---|---|
| 400 | Missing or invalid request parameter — check the request body or query string |
| 401 | Invalid or missing API key — regenerate from Settings if needed |
| 403 | Feature not available on your current plan — API requires Scale |
| 404 | Resource not found |
| 429 | Rate limit exceeded — wait for the Retry-After period and try again |
| 500 | Server error — contact support@rekindle.business if this persists |