curl --request PUT \
--url https://api.upstackdata.com/accounts/api/account/settings/order \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-pixel-id: <api-key>' \
--data '
{
"countPendingOrders": false,
"countVoidedOrders": false,
"refundDateAttribution": "refund_date",
"exclusionFilters": [
{
"name": "Exclude POS",
"enabled": true,
"conditionGroups": [
{
"logic": "and",
"conditions": [
{
"field": "sourceName",
"operator": "not_equals",
"value": "pos"
}
]
}
]
}
]
}
'import requests
url = "https://api.upstackdata.com/accounts/api/account/settings/order"
payload = {
"countPendingOrders": False,
"countVoidedOrders": False,
"refundDateAttribution": "refund_date",
"exclusionFilters": [
{
"name": "Exclude POS",
"enabled": True,
"conditionGroups": [
{
"logic": "and",
"conditions": [
{
"field": "sourceName",
"operator": "not_equals",
"value": "pos"
}
]
}
]
}
]
}
headers = {
"x-api-key": "<api-key>",
"x-pixel-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'x-api-key': '<api-key>',
'x-pixel-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
countPendingOrders: false,
countVoidedOrders: false,
refundDateAttribution: 'refund_date',
exclusionFilters: [
{
name: 'Exclude POS',
enabled: true,
conditionGroups: [
{
logic: 'and',
conditions: [{field: 'sourceName', operator: 'not_equals', value: 'pos'}]
}
]
}
]
})
};
fetch('https://api.upstackdata.com/accounts/api/account/settings/order', 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.upstackdata.com/accounts/api/account/settings/order",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'countPendingOrders' => false,
'countVoidedOrders' => false,
'refundDateAttribution' => 'refund_date',
'exclusionFilters' => [
[
'name' => 'Exclude POS',
'enabled' => true,
'conditionGroups' => [
[
'logic' => 'and',
'conditions' => [
[
'field' => 'sourceName',
'operator' => 'not_equals',
'value' => 'pos'
]
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>",
"x-pixel-id: <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.upstackdata.com/accounts/api/account/settings/order"
payload := strings.NewReader("{\n \"countPendingOrders\": false,\n \"countVoidedOrders\": false,\n \"refundDateAttribution\": \"refund_date\",\n \"exclusionFilters\": [\n {\n \"name\": \"Exclude POS\",\n \"enabled\": true,\n \"conditionGroups\": [\n {\n \"logic\": \"and\",\n \"conditions\": [\n {\n \"field\": \"sourceName\",\n \"operator\": \"not_equals\",\n \"value\": \"pos\"\n }\n ]\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-pixel-id", "<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.put("https://api.upstackdata.com/accounts/api/account/settings/order")
.header("x-api-key", "<api-key>")
.header("x-pixel-id", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"countPendingOrders\": false,\n \"countVoidedOrders\": false,\n \"refundDateAttribution\": \"refund_date\",\n \"exclusionFilters\": [\n {\n \"name\": \"Exclude POS\",\n \"enabled\": true,\n \"conditionGroups\": [\n {\n \"logic\": \"and\",\n \"conditions\": [\n {\n \"field\": \"sourceName\",\n \"operator\": \"not_equals\",\n \"value\": \"pos\"\n }\n ]\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upstackdata.com/accounts/api/account/settings/order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["x-pixel-id"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"countPendingOrders\": false,\n \"countVoidedOrders\": false,\n \"refundDateAttribution\": \"refund_date\",\n \"exclusionFilters\": [\n {\n \"name\": \"Exclude POS\",\n \"enabled\": true,\n \"conditionGroups\": [\n {\n \"logic\": \"and\",\n \"conditions\": [\n {\n \"field\": \"sourceName\",\n \"operator\": \"not_equals\",\n \"value\": \"pos\"\n }\n ]\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"orderSettings": {
"countPendingOrders": true,
"countVoidedOrders": true,
"refundDateAttribution": "refund_date",
"exclusionFilters": [
{
"name": "Exclude POS",
"enabled": true,
"conditionGroups": [
{
"logic": "and",
"conditions": [
{
"field": "sourceName",
"operator": "equals",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
]
}
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}Update order settings
Send the whole object — all four fields are required, and any exclusion filter you leave out is removed.
New filters get an id and timestamps from the server. Send a filter
back with its id and it keeps its original createdAt.
Unknown fields are rejected, and an operator has to suit the field it
filters on — greater_than on sourceName returns 400. Up to 50
exclusion filters.
Required scope: account:write.
curl --request PUT \
--url https://api.upstackdata.com/accounts/api/account/settings/order \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--header 'x-pixel-id: <api-key>' \
--data '
{
"countPendingOrders": false,
"countVoidedOrders": false,
"refundDateAttribution": "refund_date",
"exclusionFilters": [
{
"name": "Exclude POS",
"enabled": true,
"conditionGroups": [
{
"logic": "and",
"conditions": [
{
"field": "sourceName",
"operator": "not_equals",
"value": "pos"
}
]
}
]
}
]
}
'import requests
url = "https://api.upstackdata.com/accounts/api/account/settings/order"
payload = {
"countPendingOrders": False,
"countVoidedOrders": False,
"refundDateAttribution": "refund_date",
"exclusionFilters": [
{
"name": "Exclude POS",
"enabled": True,
"conditionGroups": [
{
"logic": "and",
"conditions": [
{
"field": "sourceName",
"operator": "not_equals",
"value": "pos"
}
]
}
]
}
]
}
headers = {
"x-api-key": "<api-key>",
"x-pixel-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'x-api-key': '<api-key>',
'x-pixel-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
countPendingOrders: false,
countVoidedOrders: false,
refundDateAttribution: 'refund_date',
exclusionFilters: [
{
name: 'Exclude POS',
enabled: true,
conditionGroups: [
{
logic: 'and',
conditions: [{field: 'sourceName', operator: 'not_equals', value: 'pos'}]
}
]
}
]
})
};
fetch('https://api.upstackdata.com/accounts/api/account/settings/order', 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.upstackdata.com/accounts/api/account/settings/order",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'countPendingOrders' => false,
'countVoidedOrders' => false,
'refundDateAttribution' => 'refund_date',
'exclusionFilters' => [
[
'name' => 'Exclude POS',
'enabled' => true,
'conditionGroups' => [
[
'logic' => 'and',
'conditions' => [
[
'field' => 'sourceName',
'operator' => 'not_equals',
'value' => 'pos'
]
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>",
"x-pixel-id: <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.upstackdata.com/accounts/api/account/settings/order"
payload := strings.NewReader("{\n \"countPendingOrders\": false,\n \"countVoidedOrders\": false,\n \"refundDateAttribution\": \"refund_date\",\n \"exclusionFilters\": [\n {\n \"name\": \"Exclude POS\",\n \"enabled\": true,\n \"conditionGroups\": [\n {\n \"logic\": \"and\",\n \"conditions\": [\n {\n \"field\": \"sourceName\",\n \"operator\": \"not_equals\",\n \"value\": \"pos\"\n }\n ]\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-pixel-id", "<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.put("https://api.upstackdata.com/accounts/api/account/settings/order")
.header("x-api-key", "<api-key>")
.header("x-pixel-id", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"countPendingOrders\": false,\n \"countVoidedOrders\": false,\n \"refundDateAttribution\": \"refund_date\",\n \"exclusionFilters\": [\n {\n \"name\": \"Exclude POS\",\n \"enabled\": true,\n \"conditionGroups\": [\n {\n \"logic\": \"and\",\n \"conditions\": [\n {\n \"field\": \"sourceName\",\n \"operator\": \"not_equals\",\n \"value\": \"pos\"\n }\n ]\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upstackdata.com/accounts/api/account/settings/order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["x-pixel-id"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"countPendingOrders\": false,\n \"countVoidedOrders\": false,\n \"refundDateAttribution\": \"refund_date\",\n \"exclusionFilters\": [\n {\n \"name\": \"Exclude POS\",\n \"enabled\": true,\n \"conditionGroups\": [\n {\n \"logic\": \"and\",\n \"conditions\": [\n {\n \"field\": \"sourceName\",\n \"operator\": \"not_equals\",\n \"value\": \"pos\"\n }\n ]\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"orderSettings": {
"countPendingOrders": true,
"countVoidedOrders": true,
"refundDateAttribution": "refund_date",
"exclusionFilters": [
{
"name": "Exclude POS",
"enabled": true,
"conditionGroups": [
{
"logic": "and",
"conditions": [
{
"field": "sourceName",
"operator": "equals",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"value": "<string>"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
]
}
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}{
"message": "<string>",
"errors": [
{
"message": "<string>",
"key": "<string>",
"path": [
"<string>"
]
}
]
}Authorizations
Your Upstack API key. Starts with upstack_.
The pixel id the request targets.
Body
Which orders count, how refunds are dated, and which orders are excluded. Applies to every revenue, attribution, and cohort figure.
Include pending orders in revenue / attribution metrics.
Include voided orders in revenue / attribution metrics.
How refunds are dated for revenue attribution.
refund_date— matches Shopify, defaults to this.order_date— attribute the refund to the original order date.
refund_date, order_date 50Show child attributes
Show child attributes
Response
The updated order settings (with server-assigned ids and timestamps).
Which orders count, how refunds are dated, and which orders are excluded. Applies to every revenue, attribution, and cohort figure.
Show child attributes
Show child attributes
Was this page helpful?