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
The unique customer ID
Body Parameters
All body parameters are optional. Only include the fields you want to update.Customer email address
Customer’s first name
Customer’s last name
Customer’s phone number
Marketing opt-in status
Array of tags. Accepted by the request but not persisted — a customer record
has no tags field.
Internal notes about the customer
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
Street address line 1 (stored)
City (stored)
State/Province (stored)
Country code (stored)
Postal/ZIP code (stored)
First name (accepted, not stored)
Last name (accepted, not stored)
Street address line 2 (accepted, not stored)
Phone number (accepted, not stored on update)
Accepted, not stored
Response
The response is a bare object keyed bycustomer containing the updated,
Shopify-shaped customer object (the same shape returned by the read endpoints).
There is no { success, data } envelope.
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 Shopify-style{ "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