Skip to main content

Promotions

In this guide you'll learn how to create and manage promotions for your products.

Overview

Promotions can be created for stores by suppliers. These can be time limited and offer different types of discount for product prices based on different conditions.

Promotion conditions

There are six different conditions that can be configured to determine which products a promotion applies to. A product must meet all of the defined conditions for the promotion to be applied.

  • Products can be included by selecting their product identifiers.
  • Variants can be included by selecting their variant identifiers.
  • Categories can be selected to include all products within them.
  • Brands can be selected to include all products that match.
  • Manufacturers can be selected to include all products that match.
  • Countries can be selected to include all products that are sold in them.
  • Currencies can be selected to include all products that are priced in them.

Promotion actions

Amount off

An absolute discount from the price e.g. a discount of $100.

Percentage off

A percentage discount from the price e.g. a discount of 20%.

Fixed Amount

A fixed price to sell the product at e.g. $51.50.

Promotion Resolution

Here is the logic for how prices are calculated:

  1. The system first fetches the base price for the product based on the quantity, country and currency of the buyer.
  2. If there are any promotions of type fixed_price, they are applied first. These promotions override the base price.
  3. If there are no fixed_price promotions, it applies percentage_off promotions first, and then amount_off promotions.
    • percentage_off promotions are applied one after the other, each time reducing the running price by a certain percentage.
    • amount_off promotions are applied one after the other, each time reducing the running price by a certain amount.
  4. If the running price becomes less than 0 after applying all promotions, it is set to 0.
  5. Finally, the method returns the base price and the final price after applying all promotions.
INFORMATION

The order of application and the type of promotion (percentage off or amount off) can affect the final price.

Promotion Approvals

The B2B relationship is very different to the B2C relationship in that there is a need for auditability and approval of all price changes from procurement, including through promotions.

Guides

I am a supplier, how do I add a promotion for my client?

To create a promotion for a store:

  1. Head over to the Promotions page then click + New Promotion to begin creating a new promotion

  2. Select the Promotion Type from the options then click continue Continue.

  3. Choose a name, and optionally choose description, promotional message, promotion URL, start date and end date. If no start date is provided it will begin from the moment of creation. If no end date is provided it will continue indefinitely until edited or deleted.

  4. Choose your client's store from the dropdown

  5. Click + Add condition then select the desired condition type. Select conditionality for every condition chosen type chosen. Finally, click Save Condition. Repeat to add more conditions.

  6. Click Save on the upper right part of the page to complete the promotion creation.

Promotion Type

Choose and configure the action for the promotion.

Fixed Price

Configure a fixed price to sell the product at e.g. £50.

Percentage Off

Configure a percentage discount from the price e.g. a discount of 20%.

Amount Off

Configure an absolute discount from the price e.g. a discount of £5.

Promotion Conditions

You can configure one or more conditions for the promotion. To add your first condition, click + Add Condition, then select the condition type.

Conditions can be either type include (only selected items) or all. To finish adding a condition, click Save Condition.

Products

If type include is selected, you can search for specific products to include in your condition.

Categories

If type include is selected, you can select specific categories to include in your condition.

Brands

You can enter and add specific brands to include in your condition.

Manufacturers

You can enter and add specific manufacturers to include in your condition.

Countries

If type include is selected, you can select specific countries to include in your condition.

Currencies

If type include is selected, you can select specific currencies to include in your condition.

How do I see if my promotions have been approved?

Navigate to the Promotions page and find the desried promotion/s within the table. Here you can see the status of each promotion: Pending, Approved or Rejected.

Complex Pricing Models

If volume or graduated pricing models are selected, the currency must be selected, and then the table can be populated.

New rows/tiers can be added to the table by clicking + Add another tier, and can be deleted with the trash icon.

For each row of a volume pricing model table, the last unit value refers to the inclusive cutoff quantity for that tier. Per unit is the price per unit for all units, if the total quantity falls within that tier, and flat amount is an optional additional price for that tier.

For each row of a graduated pricing model table, the last unit value refers to the inclusive cutoff quantity for that tier. Per unit is the price per unit for just the units within that tier, and flat amount is an optional additional price for that tier.

Create a Promotion with the API

Choosing the Store

The store ID must be provided in the request URL. To find the Store ID for a particular store, search for the store on the Stores page.

Promotion Fields

When creating a promotion, you will be asked to provide certain information. Here is a description of each field:

  • Name (required): This is the name of the promotion. It should be unique and descriptive, so that it's easy to identify.
  • Description (optional): You can provide a brief description of the promotion. This can be helpful for your own reference or for other users who might need to understand the purpose of the promotion.
  • Promotional Message (optional): You can provide a message for the user.
  • Promotion URL (optional): A link to more information on the promotion if available
  • Start Date (optional): If you want the promotion to be valid from a specific date, you can specify that date here. If you leave this field blank, the promotion will be valid from the time of creation.
  • End Date (optional): If you want the promotion to be valid until a specific date, you can specify that date here. If you leave this field blank, the promotion will be valid indefinitely.
  • Conditions (optional) If you want to specify certain conditions to include one or more products in the promotion, use this field.
  • Actions (required) This is the action the promotion performs, e.g. 10% off, and must be populated.
POST

https://api.axiomdata.io/api/suppliers/promotions/stores/:storeId

Examples

Amount off promotion

New promotion for store ID 1 with a discount of $10 for all products in category ID 2.

curl --location --request POST 'https://api.axiomdata.io/api/suppliers/promotions/stores/1' \
--data-raw '{
"name": "Promotion Name",
"description": "A description of the promotion",
"promotion_message": "Check out this promotion",
"promotion_url": "http:\/\/www.example.info",
"conditions": [
{
"categories": {
"type": "include",
"ids": [
2
]
}
}
],
"actions": {
"amount_off": [
{
"currency": "USD",
"unit_amount": 10,
"billing_scheme": "standard"
}
]
}
}'

Percentage off promotion

New promotion for store ID 1 with a discount of 10% for product identifiers product1, product2 and product3.

curl --location --request POST 'https://api.axiomdata.io/api/suppliers/promotions/stores/1' \
--data-raw '{
"name": "Promotion Name",
"description": "A description of the promotion",
"promotion_message": "Check out this promotion",
"promotion_url": "http:\/\/www.example.info",
"conditions": [
{
"products": {
"type": "include",
"ids": [
"product1",
"product2",
"product3"
]
}
}
],
"actions": {
"percentage_off": [
{
"percentage": "20",
"billing_scheme": "standard"
}
]
}
}'

Fixed amount promotion

New promotion for store ID 1 with a fixed price of $50 for variant identifier variant1.

curl --location --request POST 'https://api.axiomdata.io/api/suppliers/promotions/stores/1' \
--data-raw '{
"name": "Promotion Name",
"description": "A description of the promotion",
"promotion_message": "Check out this promotion",
"promotion_url": "http:\/\/www.example.info",
"conditions": [
{
"products": {
"type": "include",
"ids": [
"variant1"
]
}
}
],
"actions": {
"fixed_price": [
{
"currency": "USD",
"unit_amount": 10,
"billing_scheme": "standard"
}
]
}
}'

Complex amount off promotion

Amount off promotion

New promotion for store ID 1 with a graduated discount for all products with a brand of Example.

curl --location --request POST 'https://api.axiomdata.io/api/suppliers/promotions/stores/1' \
--data-raw '{
"name": "Promotion Name",
"description": "A description of the promotion",
"promotion_message": "Check out this promotion",
"promotion_url": "http:\/\/www.example.info",
"conditions": [
{
"brands": {
"type": "include",
"names": [
"Example"
]
}
}
],
"actions": {
"amount_off": [
{
"currency": "GBP",
"billing_scheme": "graduated",
"tiers": [
{
"up_to": 10,
"flat_amount": "5",
"unit_amount": "10"
},
{
"up_to": 100,
"flat_amount": "5",
"unit_amount": "20"
},
{
"up_to": 1000000000,
"flat_amount": "5",
"unit_amount": "25"
}
]
}
]
}
}'

Edit a Promotion

To edit a promotion, either click the row in the promotions table, or open the menu for the row and select Edit.

Delete a Promotion

To delete a promotion, open the menu for the row and select Delete.

Other Common Scenarios

QuestionAnswer
How do I change a promotion?Click on a promotion in the promotions table to begin editing the promotion. Click Save once finished.
How do I create a store specific promotion?Promotions have to be created for a single store, the store operator will then be notified and must approve it.
What if I don't provide an end date for the promotion?The promotion will run indefinitely.