DrPlugin

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.

The Customers screen with Guest and Registered customers, purchase counts and lifetime totals

Add or edit a customer

  1. Click Add customer, or Edit on a row.
  2. Fill in the fields.
  3. Click Save.
Field What it does
Email 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.

The Edit customer form with the Email, Name and Assigned user fields

Delete customers

  1. Tick the rows you want, or the box in the header row for the whole page.
  2. Pick Delete from Bulk actions and click Apply.
  3. 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.