Audit log
This version brings new filters and functionalities to Logs. Thanks to these changes, you can quickly find relevant logs for analytics or troubleshooting.
New filters
Users with the Read events and technical logs permission can now find data quicker in the Audit logs thanks to the new filters:
- Endpoint: Lists all logs for a specific endpoint, for example POST_v1_vouchers_import_csv.
- User: Lists all logs for actions performed by a given organization user. It requires Access to Project's Users list permission.
- Server-side API key: Lists all logs performed with a given server-side API key. The filter uses the key name, so the key itself is protected. It requires Access Project Settings permission.
- Client-side API key: Lists all logs performed with a given client-side API key. The filter uses the key name, so the key itself is protected. It requires Access Project Settings permission.
Export API logs – API endpoint
You can also export API logs in a CSV file with the POST /v1/exports
– Create exports endpoint. Pass "exported_object": "api_log"
in the request body. You can use the following parameters:
fields
:"id"
,"created_at"
,"status"
,"request_id"
,"channel"
,"method"
,"endpoint"
,"url"
,"user_email"
,"app_id"
,"client_app_id"
,"request_duration"
,"request_body"
,"response_body"
.filters
:created_at
(with$before
and$after
conditions),status
(with$is
and$is_not
conditions),channel
(with$in
,$not_in
conditions),app_id
andclient_app_id
(both with$in
,$not_in
,$is
, and$is_not
conditions).order
:created_at
(ascending order),-created_at
(descending order).
Audit logs
- Logs for imports include now a downloadable file that was used in the import.
- Audit log shows now the async action ID, if applicable.
- Async action details return now the corresponding audit log ID.
- The Channel filter shows now only channels that were used. It also lists used SDKs as a channel source.
Async actions
GET v1/async-actions/{Id}
endpoint returns now the user
and log_id
.
Bundle Multiplication is now available for all users. Bundle multiplication determines how many times a bundle can be applied within a single order. It’s based on the number of complete sets of bundled items a customer adds to their cart.
With bundle multiplication, the system automatically checks how many full bundles exist in the order and applies the discount that many times.
What gets multiplied:
- The discount value (for example, a $10 bundle discount becomes $20 if two complete bundles are found).
- Any free items or discounted quantities linked to the bundle.
Example scenarios:
- “Buy 2 T-shirts, get 1 hat free.” → The more T-shirts customers buy, the more hats they receive.
- “Buy a laptop and a mouse together for 10% off.” → Discount applies only to the eligible products, up to the configured limit.
- “Get 20% off every second coffee mug (max 3 bundles per order).” → Maximum eligible bundles limit the number of discounted sets.
- “Buy 3 skincare products and pay only for 2.” → Item discount limit ensures only one item in each bundle is free.
- “Bundle any 4 books and get $10 off the whole order (up to $50 total).” → Discount multiplies with each bundle up to the set cap.
Bundle Multiplication
The Discount Effect can now be multiplied by the number of bundles in the cart.
Each bundle increases either the discount value or the discounted product limit, depending on the configured Discount Effect, up to the maximum eligible bundles limit.
Copy Bundle Button
Added an option to copy bundled items directly to discounted products with a single click. This feature works for all discount types except selected free product discounts.
Discount Tab
Updated the Discount tab with clearer sections for Bundled Items, Discounted Products, and Excluded Products in a simplified, read-only layout. A collection badge now indicates when a resource belongs to a product collection.
Bundle Discount Setup
Redesigned the setup flow for bundle discounts.
Areas and stores in the Management API
Added new endpoints for managing areas and area stores with the Management API. The endpoints allow you to:
- List areas in your project: GET
/management/v1/projects/{projectId}/areas
- Get details about a specific area: GET
/management/v1/projects/{projectId}/areas/{id}
- Create a new area: POST
/management/v1/projects/{projectId}/areas
- Update an existing area: PUT
/management/v1/projects/{projectId}/areas/{id}
- Delete an area: DELETE
/management/v1/projects/{projectId}/areas/{id}
- List all area stores: GET
/management/v1/projects/{projectId}/areas/{areaId}/stores
- Get a specific area store: GET
/management/v1/projects/{projectId}/areas/{areaId}/stores/{storeId}
- Create a new area store: POST
/management/v1/projects/{projectId}/areas/{areaId}/stores
- Update an existing area store: PUT
/management/v1/projects/{projectId}/areas/{areaId}/stores/{storeId}
- Delete an existing area store: DELETE
/management/v1/projects/{projectId}/areas/{areaId}/stores/{storeId}
Areas and stores
- Fixed an issue which failed to copy areas and stores assignments when cloning a campaign.
- Fixed an issue which failed store assignments to display in area details view.
- Fixed an issue which allowed the users without required permissions to see areas and stores tabs.
- Fixed an issue which prevented users from creating promotion campaigns.
- Fixed an issue which allowed restricted users to add and publish vouchers for campaigns that the restricted users could only view.