import { Crevio } from "@crevio/sdk";
const crevio = new Crevio({
apiKey: process.env["CREVIO_API_KEY"] ?? "",
});
async function run() {
const result = await crevio.customers.retentionPreview();
console.log(result);
}
run();curl --request GET \
--url https://api.crevio.co/v1/customers/retention_preview \
--header 'Authorization: <api-key>'import requests
url = "https://api.crevio.co/v1/customers/retention_preview"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.crevio.co/v1/customers/retention_preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.crevio.co/v1/customers/retention_preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.crevio.co/v1/customers/retention_preview"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.crevio.co/v1/customers/retention_preview")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.crevio.co/v1/customers/retention_preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "customer_retention_preview",
"days": 123,
"deletable_count": 123,
"exempt_count": 123,
"purge_after_days": 123,
"sample": [
{
"id": "<string>",
"object": "<string>",
"email": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"phone_number": "<string>",
"customer_type": "paid",
"notes": "<string>",
"confirmed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"purge_at": "<string>",
"anonymized": true,
"metadata": {},
"orders_count": 123,
"total_spend": 123,
"tags": "<array>"
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request was malformed or contained invalid parameters"
}
}{
"error": {
"type": "invalid_request_error",
"code": "authentication_required",
"message": "You did not provide an API key."
}
}{
"error": {
"type": "invalid_request_error",
"code": "forbidden",
"message": "You do not have permission to perform this action"
}
}{
"error": {
"type": "invalid_request_error",
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry later."
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "An unexpected error occurred"
}
}Preview customer retention
Shows what a retention period would delete: leads (customers without an account) with no form submission, booking, call, checkout or 1:1 email in the last days days. Broadcasts don’t count as contact. Leads with orders are kept and counted in exempt_count. Customers with an account are never deleted by retention. Set the period with customer_retention_days on PATCH /v1/account; a daily job then deletes matching leads, and they are permanently erased purge_after_days later.
import { Crevio } from "@crevio/sdk";
const crevio = new Crevio({
apiKey: process.env["CREVIO_API_KEY"] ?? "",
});
async function run() {
const result = await crevio.customers.retentionPreview();
console.log(result);
}
run();curl --request GET \
--url https://api.crevio.co/v1/customers/retention_preview \
--header 'Authorization: <api-key>'import requests
url = "https://api.crevio.co/v1/customers/retention_preview"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.crevio.co/v1/customers/retention_preview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.crevio.co/v1/customers/retention_preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.crevio.co/v1/customers/retention_preview"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.crevio.co/v1/customers/retention_preview")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.crevio.co/v1/customers/retention_preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "customer_retention_preview",
"days": 123,
"deletable_count": 123,
"exempt_count": 123,
"purge_after_days": 123,
"sample": [
{
"id": "<string>",
"object": "<string>",
"email": "<string>",
"name": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"phone_number": "<string>",
"customer_type": "paid",
"notes": "<string>",
"confirmed_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"purge_at": "<string>",
"anonymized": true,
"metadata": {},
"orders_count": 123,
"total_spend": 123,
"tags": "<array>"
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "bad_request",
"message": "The request was malformed or contained invalid parameters"
}
}{
"error": {
"type": "invalid_request_error",
"code": "authentication_required",
"message": "You did not provide an API key."
}
}{
"error": {
"type": "invalid_request_error",
"code": "forbidden",
"message": "You do not have permission to perform this action"
}
}{
"error": {
"type": "invalid_request_error",
"code": "rate_limit_exceeded",
"message": "Too many requests. Please retry later."
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "An unexpected error occurred"
}
}Authorizations
API key in the format: Bearer {api_token}
Query Parameters
Retention period to preview, 30 to 3650. Defaults to the account's customer_retention_days.
30 <= x <= 3650Response
Retention preview
customer_retention_preview The period previewed; null when none was given and the account has none set.
Inactive leads kept because they have paid orders.
Up to 20 of the leads that would be deleted, oldest first.
Show child attributes
Show child attributes
Was this page helpful?

