Customers
Updated November 3, 2026
See who bought from your store, edit customer records and link them to WordPress accounts.
What a customer record is
ReleaseCart keeps its own customer records, separate from WordPress users. Every order and license belongs to one. A record holds an email address, an optional name, an optional link to a WordPress account, and the number and total of completed purchases.
A record with no linked account is a Guest. A linked one is Registered. A buyer does not need a WordPress account to pay unless your checkout requires one. A guest cannot use the account area until their record is linked to an account.
How ReleaseCart matches a buyer to a record
Each email address belongs to one record, and each WordPress account links to one record. ReleaseCart compares email addresses without regard to case.
- A logged-in buyer who pays with their account email is matched by their account first, then by email.
- Anyone else is matched by email, so a guest who comes back with the same email reuses their record.
- A logged-in buyer who types a different email pays as that email. The order goes to that email's record, not to their account.
With guest checkout off, the checkout locks the email field to the account email. Require an account covers that setting.
When someone registers or logs in with an email that matches a guest record, ReleaseCart links the record to their account and it becomes Registered. Nobody has to do anything for this. A record that is already linked to another account is never moved. To create accounts for guests when they buy, see Create an account for guests.
The Customers screen
Open ReleaseCart → Customers. You need the manage_releasecart capability, which administrators have.
The list shows 20 customers a page, newest first, with the columns Email, Name, Type, Purchases, Lifetime total, Created and Actions. Click Email, Name or Created to sort by it. Type in Search by name or email to narrow the list.
Type reads Guest or Registered. When you can edit users, Registered links to the WordPress user profile.
Purchases and Lifetime total count completed orders. ReleaseCart adds each order's total when the order completes. A refund does not lower them.

Add or edit a customer
- Click Add customer, or Edit on a row.
- Fill in the fields.
- Click Save.
| Field | What it does |
|---|---|
| Required. It must be a valid email address that no other customer uses. | |
| Name | Optional. The Orders list shows it in the Customer column. |
| Assigned user | Optional. Type a name or email and pick a WordPress account. Leave it empty to keep the customer a guest, or clear it to unlink the account. |
When you edit a customer, ReleaseCart saves only the fields you changed. A customer you add by hand starts with no purchases.

Delete customers
- Tick the rows you want, or the box in the header row for the whole page.
- Pick Delete from Bulk actions and click Apply.
- Click Confirm. Deleting is permanent.
ReleaseCart refuses to delete a customer while any of these is true, and the notice gives the reason:
- The customer has an order, even a refunded one. To remove their personal details, use Tools → Erase Personal Data instead. It anonymizes the customer and their orders and keeps the orders for your accounts. It also disables the customer's licenses, removes the site addresses from their activations, and removes IP addresses from their orders, download records and license logs. From each order it removes the names, billing address, company name and tax ID, and the link to the Stripe customer. The customer stays in your Stripe account.
- The customer holds a license that is not disabled.
- With ReleaseCart Pro, the customer has a subscription that is still billing, or is an approved affiliate.
ReleaseCart handles each selected customer separately, so a mixed selection can partly succeed. The notice says how many were deleted and names each refusal with its reason. The refused rows stay ticked.
Tools → Export Personal Data includes a customer's ReleaseCart data. Each order in the export lists the names, billing address, company name and tax ID stored on it, and its Stripe customer ID.
Manage customers with the REST API
Every route is under the releasecart/v1 namespace and needs management authentication and the manage_releasecart capability. The licensing REST API page explains management authentication.
| Route | What it does |
|---|---|
GET /releasecart/v1/customers |
Lists customers, with the X-WP-Total and X-WP-TotalPages headers. Takes page, per_page (default 10, up to 100), search (name or email), orderby (id, name, email or created_at) and order (asc or desc). |
POST /releasecart/v1/customers |
Creates a customer. Send email, and optionally name and user_id. |
GET /releasecart/v1/customers/{id} |
Returns one customer. |
PUT /releasecart/v1/customers/{id} |
Changes email, name or user_id. Send user_id 0 to unlink the account. |
DELETE /releasecart/v1/customers/{id} |
Deletes a customer under the same rules as the screen. A refused delete returns releasecart_customer_in_use with status 409 and the reasons. |
POST /releasecart/v1/customers/batch |
Deletes up to 100 customers. Send action set to delete and ids. |
A customer in a response has id, email, name, user_id, user_name, user_email, is_guest, purchase_count, purchase_total (in the currency's smallest unit), created_at and updated_at. ReleaseCart keeps purchase_count and purchase_total up to date, and a request cannot set them.
ReleaseCart sends the customer.created event to your webhook endpoints when it creates a record. Your customers see their own purchases, downloads and licenses on the customer dashboard.