Update Customer
curl --request PUT \
--url https://api.launchmystore.io/api/v1/customers/{id}.json \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"phone": "<string>",
"accepts_marketing": true,
"tags": [
{}
],
"note": "<string>",
"addresses": [
{
"address1": "<string>",
"city": "<string>",
"province": "<string>",
"country": "<string>",
"zip": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"address2": "<string>",
"phone": "<string>",
"default": true
}
]
}
'import requests
url = "https://api.launchmystore.io/api/v1/customers/{id}.json"
payload = {
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"phone": "<string>",
"accepts_marketing": True,
"tags": [{}],
"note": "<string>",
"addresses": [
{
"address1": "<string>",
"city": "<string>",
"province": "<string>",
"country": "<string>",
"zip": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"address2": "<string>",
"phone": "<string>",
"default": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
first_name: '<string>',
last_name: '<string>',
phone: '<string>',
accepts_marketing: true,
tags: [{}],
note: '<string>',
addresses: [
{
address1: '<string>',
city: '<string>',
province: '<string>',
country: '<string>',
zip: '<string>',
first_name: '<string>',
last_name: '<string>',
address2: '<string>',
phone: '<string>',
default: true
}
]
})
};
fetch('https://api.launchmystore.io/api/v1/customers/{id}.json', 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.launchmystore.io/api/v1/customers/{id}.json",
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([
'email' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'phone' => '<string>',
'accepts_marketing' => true,
'tags' => [
[
]
],
'note' => '<string>',
'addresses' => [
[
'address1' => '<string>',
'city' => '<string>',
'province' => '<string>',
'country' => '<string>',
'zip' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'address2' => '<string>',
'phone' => '<string>',
'default' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.launchmystore.io/api/v1/customers/{id}.json"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"phone\": \"<string>\",\n \"accepts_marketing\": true,\n \"tags\": [\n {}\n ],\n \"note\": \"<string>\",\n \"addresses\": [\n {\n \"address1\": \"<string>\",\n \"city\": \"<string>\",\n \"province\": \"<string>\",\n \"country\": \"<string>\",\n \"zip\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address2\": \"<string>\",\n \"phone\": \"<string>\",\n \"default\": true\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.launchmystore.io/api/v1/customers/{id}.json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"phone\": \"<string>\",\n \"accepts_marketing\": true,\n \"tags\": [\n {}\n ],\n \"note\": \"<string>\",\n \"addresses\": [\n {\n \"address1\": \"<string>\",\n \"city\": \"<string>\",\n \"province\": \"<string>\",\n \"country\": \"<string>\",\n \"zip\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address2\": \"<string>\",\n \"phone\": \"<string>\",\n \"default\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.launchmystore.io/api/v1/customers/{id}.json")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"phone\": \"<string>\",\n \"accepts_marketing\": true,\n \"tags\": [\n {}\n ],\n \"note\": \"<string>\",\n \"addresses\": [\n {\n \"address1\": \"<string>\",\n \"city\": \"<string>\",\n \"province\": \"<string>\",\n \"country\": \"<string>\",\n \"zip\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address2\": \"<string>\",\n \"phone\": \"<string>\",\n \"default\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"customer": {}
}Customers
Update Customer
Update an existing customer
PUT
/
api
/
v1
/
customers
/
{id}
.json
Update Customer
curl --request PUT \
--url https://api.launchmystore.io/api/v1/customers/{id}.json \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"phone": "<string>",
"accepts_marketing": true,
"tags": [
{}
],
"note": "<string>",
"addresses": [
{
"address1": "<string>",
"city": "<string>",
"province": "<string>",
"country": "<string>",
"zip": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"address2": "<string>",
"phone": "<string>",
"default": true
}
]
}
'import requests
url = "https://api.launchmystore.io/api/v1/customers/{id}.json"
payload = {
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"phone": "<string>",
"accepts_marketing": True,
"tags": [{}],
"note": "<string>",
"addresses": [
{
"address1": "<string>",
"city": "<string>",
"province": "<string>",
"country": "<string>",
"zip": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"address2": "<string>",
"phone": "<string>",
"default": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: '<string>',
first_name: '<string>',
last_name: '<string>',
phone: '<string>',
accepts_marketing: true,
tags: [{}],
note: '<string>',
addresses: [
{
address1: '<string>',
city: '<string>',
province: '<string>',
country: '<string>',
zip: '<string>',
first_name: '<string>',
last_name: '<string>',
address2: '<string>',
phone: '<string>',
default: true
}
]
})
};
fetch('https://api.launchmystore.io/api/v1/customers/{id}.json', 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.launchmystore.io/api/v1/customers/{id}.json",
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([
'email' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'phone' => '<string>',
'accepts_marketing' => true,
'tags' => [
[
]
],
'note' => '<string>',
'addresses' => [
[
'address1' => '<string>',
'city' => '<string>',
'province' => '<string>',
'country' => '<string>',
'zip' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'address2' => '<string>',
'phone' => '<string>',
'default' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.launchmystore.io/api/v1/customers/{id}.json"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"phone\": \"<string>\",\n \"accepts_marketing\": true,\n \"tags\": [\n {}\n ],\n \"note\": \"<string>\",\n \"addresses\": [\n {\n \"address1\": \"<string>\",\n \"city\": \"<string>\",\n \"province\": \"<string>\",\n \"country\": \"<string>\",\n \"zip\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address2\": \"<string>\",\n \"phone\": \"<string>\",\n \"default\": true\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.launchmystore.io/api/v1/customers/{id}.json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"phone\": \"<string>\",\n \"accepts_marketing\": true,\n \"tags\": [\n {}\n ],\n \"note\": \"<string>\",\n \"addresses\": [\n {\n \"address1\": \"<string>\",\n \"city\": \"<string>\",\n \"province\": \"<string>\",\n \"country\": \"<string>\",\n \"zip\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address2\": \"<string>\",\n \"phone\": \"<string>\",\n \"default\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.launchmystore.io/api/v1/customers/{id}.json")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"phone\": \"<string>\",\n \"accepts_marketing\": true,\n \"tags\": [\n {}\n ],\n \"note\": \"<string>\",\n \"addresses\": [\n {\n \"address1\": \"<string>\",\n \"city\": \"<string>\",\n \"province\": \"<string>\",\n \"country\": \"<string>\",\n \"zip\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"address2\": \"<string>\",\n \"phone\": \"<string>\",\n \"default\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"customer": {}
}Update Customer
Updates an existing customer’s information. Only include the fields you want to update.Request
curl -X PUT "https://api.launchmystore.io/api/v1/customers/cust_abc123.json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Jonathan",
"accepts_marketing": true,
"note": "High-value customer, offer free shipping"
}'
const response = await fetch('https://api.launchmystore.io/api/v1/customers/cust_abc123.json', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
first_name: 'Jonathan',
accepts_marketing: true,
note: 'High-value customer, offer free shipping'
})
});
Path Parameters
string
required
The unique customer ID
Body Parameters
All body parameters are optional. Only include the fields you want to update.string
Customer email address
string
Customer’s first name
string
Customer’s last name
string
Customer’s phone number
boolean
Marketing opt-in status
array
Array of tags. Accepted by the request but not persisted — a customer record
has no tags field.
string
Internal notes about the customer
array
Array of address objects. Only the first address is persisted, and only
its flat fields (
address1, city, province, country, zip) are stored
on the customer record — there is no separate addresses collection.Show Address Object
Show Address Object
string
Street address line 1 (stored)
string
City (stored)
string
State/Province (stored)
string
Country code (stored)
string
Postal/ZIP code (stored)
string
First name (accepted, not stored)
string
Last name (accepted, not stored)
string
Street address line 2 (accepted, not stored)
string
Phone number (accepted, not stored on update)
boolean
Accepted, not stored
Response
The response is a bare object keyed bycustomer containing the updated
customer object (the same shape returned by the read endpoints).
There is no { success, data } envelope.
object
The updated customer object
Example Response
{
"customer": {
"id": "cust_abc123",
"email": "john.doe@example.com",
"first_name": "Jonathan",
"last_name": "Doe",
"name": "Jonathan Doe",
"phone": "+1-555-123-4567",
"accepts_marketing": true,
"orders_count": 5,
"total_spent": "250.00",
"tags": [],
"addresses": [],
"default_address": null,
"tax_exempt": false
}
}
Errors
Errors are returned as a standard{ "errors": { "base": ["..."] } } body
with the corresponding HTTP status code.
| Status | Description |
|---|---|
401 | Invalid or missing access token |
403 | App doesn’t have the write_customers scope |
404 | Customer with the specified ID does not exist |
⌘I