Customisers
Delete a customiser
Deletes the customiser and returns a receipt: the id, deleted: true, and
a resource snapshot of exactly what was deleted.
Overview
The delete is
recoverable — the restore operation brings the customiser back with its
options, pricing, and translations intact — but nothing else can reach it
in the meantime: reading it, listing it, and every write against it answer
404 exactly as an id that never existed does. Keep the receipt: the id in
it is the only way back.
A customiser that storefront products were created from is refused with a
409 problem, code resource_in_use: referenced_by names those products
(up to 100 of them), referenced_by_count is the true total, and
order_line_item_count is how many order lines were sold through them.
Deleting it would leave those product pages with nothing to render, and
deleting the customiser removes neither the products nor the order
history, so v3 refuses rather than stranding them. Remove the products
first, then retry.
Requires customisers:write and an Idempotency-Key; an exact retry
replays the original receipt rather than reporting an unknown customiser.
The delete clears the customiser's cached storefront configuration and
never regenerates your Shopify products, product images, or product cache.
Authorisation
Bearer token required. Include it in theAuthorization header.
Required scope: customisers:write
Path parameters
The customiser id.
Example: 1
curl https://web.signcustomiser.com/api/v3/customisers/1 \
--request DELETE \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": {
"object": "customiser_deletion_receipt",
"id": 42,
"deleted": true,
"resource": {
"object": "customiser",
"id": 42,
"name": "Neon sign builder",
"active": false,
"pricing_model": "frame_fit",
"pricing_model_display_name": "Frame Fit",
"sign_category": "neon",
"product_family": "neon",
"selection_mode": "per_word",
"created_at": "2026-08-14T00:00:00Z",
"updated_at": "2026-08-14T00:05:00Z"
}
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_idempotency_key",
"title": "Missing idempotency key",
"status": 400,
"code": "missing_idempotency_key",
"detail": "Provide an Idempotency-Key header for this write.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
"title": "Missing API key",
"status": 401,
"code": "missing_api_key",
"detail": "Provide a store API key as a bearer token.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
"title": "Insufficient scope",
"status": 403,
"code": "insufficient_scope",
"detail": "This operation requires the customisers:write scope.",
"required_scopes": [
"customisers:write"
],
"granted_scopes": [
"customisers:read"
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/resource_not_found",
"title": "Resource not found",
"status": 404,
"code": "resource_not_found",
"detail": "The requested resource does not exist or does not belong to the authenticated store.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/resource_in_use",
"title": "Resource in use",
"status": 409,
"code": "resource_in_use",
"detail": "This customiser is still designed against by 2 product records and 5 order line items.",
"errors": [
{
"pointer": "",
"code": "resource_in_use",
"detail": "The customiser is referenced by other records."
}
],
"referenced_by": [
{
"type": "product",
"id": 88
}
],
"referenced_by_count": 2,
"order_line_item_count": 5,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"detail": "You have exceeded the request limit for this API key.",
"retry_after": 37,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}