Customer Account (Shop)
Everything behind a customer login: profile, addresses, order history and invoices, downloadable products, reviews, wishlist, and compare. Every call here needs both the storefront key and the customer Bearer token from login.
Prerequisites
- A valid storefront key (Setup, Authentication).
- A logged-in customer — the Bearer is the
tokenfield from login (notapiToken).
Dependency diagram
Ordered call table
| # | Step | Endpoint | Note |
|---|---|---|---|
| 1 | Login | POST login · GraphQL | Returns the customer Bearer token |
| 2 | Get / update profile | GET profile · update · GraphQL | Change password via change-password |
| 3 | Manage addresses | list · create · update · delete | Reused at checkout |
| 4 | Order history | list orders · order detail | ?status= filters the list |
| 5 | Invoices | list · invoice · PDF | PDF is a binary download |
| 6 | Downloadable products | list · item | Purchased downloadable links |
| 7 | Reviews | list · review · GraphQL | The customer's own reviews |
| 8 | Wishlist | list · toggle · move to cart · GraphQL | Channel-scoped |
| 9 | Compare | list · create · delete · GraphQL | Not channel-scoped |
GraphQL equivalents:
readCustomerProfile,customerOrders,wishlists/toggleWishlist,compareItems,productReviews, plus the address mutations.
Notes
- These are all independent branches off login — call only the ones your screen needs.
- Every step is owner-scoped: a customer only ever sees their own data. Another customer's id returns
403/404(see Errors). - Returns (RMA), EU Withdrawal, and GDPR are their own flows — see the pages below.
Customize
Every call below links to its REST endpoint page for concreteness. The sequence is transport-agnostic — the same flow works over GraphQL with the equivalent query or mutation, and each REST page cross-links to its GraphQL twin. Pick whichever transport your client uses; only the request shape changes, never the order of steps.
To change account behavior on the server, see Customization → Shop.

