curl --request POST \
--url https://api.eflow.team/v1/networks/customervalue/datapoints \
--header 'Content-Type: application/json' \
--header 'X-Eflow-Api-Key: <api-key>' \
--data '
{
"identifier": "subscription_tier",
"name": "Subscription tier",
"type": "text",
"status": "active",
"description": "The plan the customer is subscribed to."
}
'import requests
url = "https://api.eflow.team/v1/networks/customervalue/datapoints"
payload = {
"identifier": "subscription_tier",
"name": "Subscription tier",
"type": "text",
"status": "active",
"description": "The plan the customer is subscribed to."
}
headers = {
"X-Eflow-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Eflow-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identifier: 'subscription_tier',
name: 'Subscription tier',
type: 'text',
status: 'active',
description: 'The plan the customer is subscribed to.'
})
};
fetch('https://api.eflow.team/v1/networks/customervalue/datapoints', 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.eflow.team/v1/networks/customervalue/datapoints",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identifier' => 'subscription_tier',
'name' => 'Subscription tier',
'type' => 'text',
'status' => 'active',
'description' => 'The plan the customer is subscribed to.'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Eflow-Api-Key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eflow.team/v1/networks/customervalue/datapoints"
payload := strings.NewReader("{\n \"identifier\": \"subscription_tier\",\n \"name\": \"Subscription tier\",\n \"type\": \"text\",\n \"status\": \"active\",\n \"description\": \"The plan the customer is subscribed to.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Eflow-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eflow.team/v1/networks/customervalue/datapoints")
.header("X-Eflow-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identifier\": \"subscription_tier\",\n \"name\": \"Subscription tier\",\n \"type\": \"text\",\n \"status\": \"active\",\n \"description\": \"The plan the customer is subscribed to.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eflow.team/v1/networks/customervalue/datapoints")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Eflow-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identifier\": \"subscription_tier\",\n \"name\": \"Subscription tier\",\n \"type\": \"text\",\n \"status\": \"active\",\n \"description\": \"The plan the customer is subscribed to.\"\n}"
response = http.request(request)
puts response.read_body{
"network_id": 1,
"data_point_id": 12,
"identifier": "subscription_tier",
"name": "Subscription tier",
"type": "text",
"status": "active",
"description": "<string>",
"time_created": 1734455015,
"time_saved": 1734455015
}Create Data Point
Create a Customer Value data point. The identifier is lowercased on save and must be unique within the network. type is required and is rejected rather than coerced if it is not text or number, since it cannot be changed afterwards.
curl --request POST \
--url https://api.eflow.team/v1/networks/customervalue/datapoints \
--header 'Content-Type: application/json' \
--header 'X-Eflow-Api-Key: <api-key>' \
--data '
{
"identifier": "subscription_tier",
"name": "Subscription tier",
"type": "text",
"status": "active",
"description": "The plan the customer is subscribed to."
}
'import requests
url = "https://api.eflow.team/v1/networks/customervalue/datapoints"
payload = {
"identifier": "subscription_tier",
"name": "Subscription tier",
"type": "text",
"status": "active",
"description": "The plan the customer is subscribed to."
}
headers = {
"X-Eflow-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Eflow-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identifier: 'subscription_tier',
name: 'Subscription tier',
type: 'text',
status: 'active',
description: 'The plan the customer is subscribed to.'
})
};
fetch('https://api.eflow.team/v1/networks/customervalue/datapoints', 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.eflow.team/v1/networks/customervalue/datapoints",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'identifier' => 'subscription_tier',
'name' => 'Subscription tier',
'type' => 'text',
'status' => 'active',
'description' => 'The plan the customer is subscribed to.'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Eflow-Api-Key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eflow.team/v1/networks/customervalue/datapoints"
payload := strings.NewReader("{\n \"identifier\": \"subscription_tier\",\n \"name\": \"Subscription tier\",\n \"type\": \"text\",\n \"status\": \"active\",\n \"description\": \"The plan the customer is subscribed to.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Eflow-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eflow.team/v1/networks/customervalue/datapoints")
.header("X-Eflow-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identifier\": \"subscription_tier\",\n \"name\": \"Subscription tier\",\n \"type\": \"text\",\n \"status\": \"active\",\n \"description\": \"The plan the customer is subscribed to.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eflow.team/v1/networks/customervalue/datapoints")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Eflow-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identifier\": \"subscription_tier\",\n \"name\": \"Subscription tier\",\n \"type\": \"text\",\n \"status\": \"active\",\n \"description\": \"The plan the customer is subscribed to.\"\n}"
response = http.request(request)
puts response.read_body{
"network_id": 1,
"data_point_id": 12,
"identifier": "subscription_tier",
"name": "Subscription tier",
"type": "text",
"status": "active",
"description": "<string>",
"time_created": 1734455015,
"time_saved": 1734455015
}identifier is the key you send the attribute under. It is lowercased on save and must be unique within the network.
type is required, and a value other than text or number is rejected rather than defaulted. Pick it carefully: only number data points can drive a payout or revenue amount, and neither identifier nor type can be changed afterwards — a wrong type means recreating the data point.Authorizations
The Everflow API key generated from the Control Center > Security.
Body
The key used to send this data point on a conversion. Lowercased on save and must be unique within the network.
255Display name of the data point.
255The value type. Required — there is no default, and a value outside text and number is rejected rather than coerced. Cannot be changed after creation, so a wrong type means recreating the data point.
text, number Whether rules can reference this data point.
active, inactive Free-form description of the data point.
Response
Network ID.
1
Unique data point ID.
12
The key used to send this data point on a conversion. Lowercased on save and unique within the network.
255"subscription_tier"
Display name of the data point.
255"Subscription tier"
The value type. number data points can be summed and compared and are the only ones usable as a payout or revenue source; text data points support string comparisons only.
text, number Only active data points can be referenced by a rule. Setting a data point to inactive stops new rules from using it.
active, inactive Free-form description of the data point.
Unix timestamp of creation.
1734455015
Unix timestamp of last update.
1734455015
Was this page helpful?
