Changelog
What changed in the public APIs.
November 2026
November 9
- Customer sign-in Customers can sign in with a password or an email code, and create or reset their password after verifying an emailed code.
- Guest prices The email typed in a cart no longer applies a customer's price list or promotions; it only counts toward the per-customer usage limit.
- Coupons with limited uses A use is reserved when payment starts. If another purchase took the last one, checkout stops with the new total.
- Rejected coupons A code that can't be used says why, also when it ran out or doesn't exist, and attempts are limited per minute.
- Required personalization A product with a required option group can't be added to the cart or paid for until it's chosen.
- Products outside the online store A product that isn't published in the online store can't be added to the cart or paid for, except as an order bump.
- Payment method discounts When an order's discount depends on the payment method, the balance is paid with that method and the order page only offers that one.
November 8
- Batch product imports You can group downstream processing and preserve slugs and custom URLs when importing products, while keeping the store's webhooks and flows.
November 7
- Parameters with the wrong type A parameter with the wrong type returns a validation error that names the parameter.
- Statuses in order webhooks They use the same casing as the Admin API:
openinstead ofOpen. - Stock from a channel When a channel changes the stock of an existing
variant, the movement arrives with the
syncreason. - Initial import only on creation
initialImportis kept for the stock a variant is created with; when a file import changes the stock of an existing variant, the reason isinventoryCount. Movements already recorded were corrected with the same rule. - Dashboard apps A new app only accesses the store where it was created, and its token already carries that store.
- SVG images You can now upload SVG files to the file library and use them as product photos. An SVG that contains code, links to other sites, or is damaged is rejected on upload.
November 6
- Phone numbers in the cart The buyer's phone and the phone on each address must be valid for the address country or include their own country code. A number that isn't is rejected when it's saved and at payment.
- Customer phone numbers A new phone on a profile, an account address, the registration form or the complaint book is validated the same way, against its country.
- Buyer details Names, email, company name and address have length and format limits; anything outside them gets a validation error instead of a server failure.
- RUC in the cart When the issuing country is Peru, the buyer's tax ID must be a valid RUC.
- Geographic catalog in the cart The document's issuing country, the billing country and the department, province and district codes must exist in the catalog.
- Payment receipts Checkout only accepts a receipt uploaded to the same store.
- More GraphQL reads Payment methods, store reviews, and published articles can now be read through GraphQL, with the same filters as REST.
- Collections with their products When you list collections through GraphQL you can cap how many come back and get each one's first products in the same query, in the collection's order.
- Reviews in product lists Each product in a GraphQL list can bring its first reviews in the same query, matching the first page of that product's reviews.
- Sellers outside a marketplace In a store that isn't a marketplace, the GraphQL seller list comes back empty instead of failing; REST still reports it as not found.
November 5
- Store square logo When you update the store's general details, send
the square logo in
icon(nullremoves it);favicon, which repeated that value, is gone. - Store customizations You create them once, assign them to products in bulk, and they can ask the buyer for text; creating or editing a product no longer changes them.
- Customized cart items Each item carries the typed text or the options
with their quantity, and
optionsreplacesoptionIds. - Customization on orders Orders keep the text and each option's quantity, and the subtotal charges every unit.
- Filter by customization The product list, count, export, and bulk actions filter by customization.
- Customizations in the online store The product page returns its customizations with their options, and listings flag customizable products.
- Customization in emails and packing slips Emails that list items show it with its extra, and packing slips list it under each product. Templates get it too.
- Manual orders with customizations A draft line carries its customization the same way as the cart, and the order keeps it.
- Customer orders with customizations Lines in the buyer's orders, order details, and orders awaiting payment return what they chose and its extra.
- Draft numbers per store New drafts are numbered
D1,D2… within each store. Before, the second store to create one got an error. - Product and variant details
modifierGroupsbecomesmodifierGroupIds; a product's customizations are read separately, filtered by product. - Images when creating a product
imageAssetIdsis gone: stored images go inimageswith sourceasset.
November 3
- Theme SDK renamed
@ecomiq/is nowreact-router @ecomiq/; themes import from the new name.storefront - CLI and SDK on npm
ecomiq,create-ecomiq,@ecomiq/, andcore @ecomiq/install from npm, andstorefront npm create ecomiq@latestdownloads your store's code. - Stock during product import You can set each variant's stock at a location of its seller in the same import as the product.
- Size guides by seller Two sellers can use the same guide name without an import changing the other's, and a listing can pick the guide and its rows for its category.
November 1
- Seller storefront profile It adds a tagline, WhatsApp, link style, and a verified badge; the logo, banner, and social links must be full URLs.
- Sellers in Storefront The list shows each seller's banner, tagline, and badge, and their page adds the description, social links, and when they joined.
- Units in channel requirements Each attribute says what kind of value it expects and, if it takes a unit, which ones it accepts and its default.
October 2026
October 31
- Edit variants When you edit a product, only the variants you send change: you can update, add, or remove one, and clear its compare-at or cost price.
- Sellers without an owner You can create a seller without its owner's details and send the invitation later.
- Sellers in bulk Import and export them with Excel, CSV, TSV, or JSONL, with a review first, and edit them in a sheet.
- Products of a channel The channel filter returns only what is published on that channel; before, it also included what was imported from the same connection.
- Export by source Exporting products respects the source filter; before, it exported the whole catalog.
- Close listings A seller cannot close them: the marketplace manages that.
- Stock by location The listing preview shows each location's stock per variant.
October 30
- Price and stock per channel Set the price, compare-at price, maximum stock, or "don't sell here" per variant, with a preview and undo; it replaces the per-listing price change.
- More listing actions You can move listings to draft, close them, or delete them, and try first what would happen.
- Channel view Listings filter by status, with a count for each, and the preview evaluates up to 50 products without sending them.
- Channel requirements You can see and complete in bulk what a channel asks for, also for products not yet published.
- Excel per channel A channel's prices, stock, and statuses export and import in Excel, with a review before applying.
- Find SKUs Look up to 5,000 SKUs at once and see which do not exist or repeat across sellers.
- Unconfirmed listings If the channel did not confirm a listing, you can look for it in the channel account and publish it again or close it.
- Order fees The order includes its fees with their tax; in WooCommerce they are no longer added to the shipping cost.
- A seller's products In a marketplace, the store can create a product on behalf of a seller, and it comes in approved.
- Bulk moderation Decide up to 500 products under review at once; only the ones the seller submitted wait for review.
October 24
- Manual payments You can record cash, POS, bank transfer, Yape, or Plin even if the store does not offer them at checkout.
- Bank transfers Each method stores up to 5 bank accounts and its texts in several languages.
- Accounts at checkout Checkout and the order page show the transfer's bank accounts.
October 21
- Payment and shipping languages Their texts come in the buyer's language and, if missing, in the main language or the base text.
- Translated shipping Methods, rates, and customizations accept translations. See Zones and rates.
- One-step payment codes Plin and PagoEfectivo issue their code or QR directly from checkout or the order.
- 3D Secure in Culqi If the bank asks to authenticate the card, the buyer does it and the same payment continues.
- Payments without a response If the provider does not respond in time, the attempt is kept and a retry recovers it instead of issuing another.
October 20
- Mercado Pago at checkout It charges with card, Yape, and PagoEfectivo.
October 19
- Payment inside or outside checkout Each payment connection chooses whether the form goes in checkout or on the provider's page.
- Payments with a code or QR Checkout and the order page show the code or QR for payments completed outside.
- Culqi tokens Checkout rejects a token from another method or a method Culqi does not charge.
- Payment method language Methods come in the store's language; before, they came in English in every store.
- Stripe The payment mode is chosen on the connection, as with the other providers.
- Saved keys Each connection says which secret keys have a value, without showing it.
- Payment confirmations Each provider says how its confirmations arrive, and each connection includes the URL to receive them.
- Authorized payments With manual capture, the payment stays authorized and the order is confirmed when you capture it.
- Fields by section Each provider's settings separate the account keys from the confirmation details.
- Order history It records when the order's status changes at its source.
- Channel currency Publishing to a channel that sells in another currency requires its exchange rate.
- Unconfirmed orders on a channel The order is looked up on the channel, and you can link the number it already has or resend it.
October 18
- Required attributes An attribute is required only in the categories that ask for it; that flag is removed from the attribute.
October 17
- Multi-word search Admin API search finds what has every word, regardless of case or accents.
- Error codes Every error has a stable code, also per field: translate errors with the code, not the text.
- Operations with a reason A failed or expired operation says why.
October 14
- Product detail It includes the SKU and no longer says which fields the source updates: that is configured in the source.
- Create without duplicates Resending a product creation with the same identifier returns the product already created.
October 10
- Storefront API address Calls go to
https:/, without/ storefront.ecomiq.pe/ v1/ /.api
October 8
- Edits and sources What you edit is kept, except the fields its source updates; there are no manually protected fields anymore.
- Optional notifications The store can turn off notifications that are not required; confirmation, cancellation, refund, and failed payment are always sent.
- Order email With an online payment pending, the confirmation goes out when the payment arrives; with a manual payment, when the order is placed.
October 7
- Seller on every sale Products, carts, and orders always state their seller, also for the store's own sales.
October 6
- Product texts Names up to 500 characters and descriptions up to 50,000, the same as imports.
October 5
- Bulk orders Labels, archiving, payment capture, and location changes for up to 100 orders or for every order matching a filter.
- Order metrics Orders, items, refunds, shipments, and time to ship, compared with the previous period.
- Canceling releases the payment Canceling an order releases the authorized payment; if the payment arrives later, it is left to refund.
- Customer link You can get the link to the status page the customer sees.
- Fulfillments They filter by several orders at once (
orderIdsreplacesorderId). - IDs in webhooks They arrive as text, as in the API; before, JavaScript rounded them.
- Card checkout It accepts the card token and shows each method's public
key (
actionTypebecomesactionKind). - Rejected payments They respond as a validation error, not a server error, and the cart can be paid again.
- Discount codes If a code stops applying at payment, checkout warns instead of charging without it; discounts also reduce the included IGV.
- Shipping Methods and zones can be deactivated; the default profile cannot.
- Orders by seller Orders filter by seller.
October 4
- Simpler imports You send the file directly and follow its progress. See Product import.
- Batches with a result per row Up to 100 records respond right away with the result of each one.
- Operations Check or cancel imports and exports; a webhook tells you when they finish.
- Orders They filter by payment and delivery status, sort, archive, and cancel without notifying the customer.
- Removed routes Manual stock reservations and other routes with a replacement are retired.
October 3
- Cart Saving the address returns the cart; shipping options are requested separately.
October 1
- Custom URLs Each product and category has its URL, which can be custom, and the store publishes its sitemap.
September 2026
September 28
- Typed attributes They validate their values and accept numbers with a unit and links.
- Options with color and image Each value can have a name, color, and image.
- Attributes per category Required ones are enforced when a product is activated.
- Customer accounts Sign-up and sign-in are configured from checkout. See Customer accounts.
September 26
- Removed routes Attribute suggestions move to search and sign-out to OAuth.
September 25
- Filters Orders and products filter by tags and channels, also to exclude them.
September 6
- Import It keeps each variant's name.
September 4
- Inventory export The
statuscolumn becomesvariant_status.
August 2026
August 25
- GraphQL Storefront adds GraphQL for reads.
- Storefront Payment methods and pickup options.
- Auth App registration, two-factor authentication, and account deletion.
- Webhooks Order created event.
July 2026
- First version Admin, Storefront, and Auth APIs, with a downloadable OpenAPI.
Last updated: