Offer Sales

On this page:


Preamble

Official upcoming Sales Dates

  • Sales start : Wednesday, June 25th, 8:00AM GMT+2
  • Sales end : Wednesday, July 23rd, 12:00AM GMT+2 (Tuesday 22nd up to midnight)

Scope

  • This only applies to offers targetted at Cdiscount.com offer publication
  • Sales are based on the french official sales periods
  • Current sales submission are only available through the Offers publication through XML/ZIP packages

Price history considerations

French law requires mentionning and taking into account the lowest public price of a product within the last 30 days on a given platform during the official sales period. See also “Omnibus” French Regulation

Lowest price point is considered at the product level, and includes lowest price from potential competing seller offers on the current product linked to your offer.

All sales percentages displayed to the customers will then be based on this lowest price point within the Cdisount.com marketplace, and not specifically on your declared reference pricing.


Package concepts

Package submission

As stated in the Offer documentation there are two ways to submit offers :

  • The JSON submission method (which only targets non-Cdiscount channels)
    this method does not support sales currently
  • The XML/ZIP submission method (which enables publishing to Cdiscount and other channels)
    this is the method to be used to submit offers with sales

Package format

Any given package can have two forms : (and will be refered to like that in this page)

  • A Full package, containing :
    • basic offer information (identification/pricing/inventory)
    • offer shipping methods along with preparation times
    • eventual sale declaration
  • A Light package, also known as Stock/Price, aimed only at updating your offers, containing :
    • basic offer identification
    • standard pricing
      and/or
    • available inventory

Offer declaration in packages

It is assumed here that you know how to build and created an offer package.
Including the fact that an xml Offer object is included with the OfferPackage/OfferPackage.Offers/OfferCollection node.

Static values not shown in brackets have to be specifically stated as sampled below.

Within a Light Package

An offer definition typically looks like :

<Offer SellerProductId="[your_reference]" ProductEan="[product_gtin]"
	Price="[decimal]" StrikedPrice="[decimal]"
	Stock="[integer]"
/>
  • StrikedPrice being optional but used in conjuction with Price
  • Stock being optional
  • Either one or both the declarations can be set
  • An offer must be existing and fully configured (with delivery modes and tax information) on the given gtin

This format does not enable managing sales but can have some impact as mentionned below.

Within a Full Package

An offer definition contains 3 parts :

  • The general offer identification and information as attributes of the <Offer> node
  • The shipping information as a child <Offer.ShippingInformationList> node
  • The optional sale pricing information as an <Offer.PriceAndDiscountList> node

And typically looks like this :

<Offer SellerProductId="[your_reference]" ProductEan="[product_gtin]"
	ProductCondition="[integer]"
	Price="[decimal]" StrikedPrice="[decimal]"
	EcoPart="[decimal]" DeaTax="[decimal]" Vat="[integer]"
	Comment="[text]"
	PreparationTime="[integer]"
	Stock="[integer]">
	<Offer.ShippingInformationList>
		<ShippingInformationList Capacity="[integer_count]">
			<ShippingInformation
				DeliveryMode="[delivery_mode]"
				ShippingCharges="[decimal]"
				AdditionalShippingCharges="[decimal]"
			/>
		</ShippingInformationList>
	</Offer.ShippingInformationList>
	<Offer.PriceAndDiscountList>
		<DiscountComponentList Capacity="1">
			<DiscountComponent Type="3"
				DiscountValue="[decimal]"
				SalesReferencePrice="[decimal]"
				DiscountUnit="1"
			/>
		</DiscountComponentList>
	</Offer.PriceAndDiscountList>
</Offer>

We’ll look below how the <Offer.PriceAndDiscountList> behaves when managing your sale prices.


Package values definitions

Note : Final price is considered before shipping calculation and eventual additional shipping charges you have declared.

Prices are specified as a dotted decimal with up to 2 decimals.
eg: Price="56.89"

Price
  • Refers to the public price of your product
  • Is considered outside of all active promotions or sales
StrikedPrice
  • Refers to the displayed striked price
  • Has no impact on pricing calculations and is only intended for display purposes
SalesReferencePrice
  • Is used to calculate the final price of your offer during sales
DiscountValue
  • The percentage applied to the SalesReferencePrice to calculate the final price
  • This is expected to be over 5%
  • Specified as a dotted decimal between "1.000" and "100", it will be rounded at up to 2 decimals for calculations

Before the sales start date

Preparing your pricing

You can upload any number of Full Packages before the official sales start point.

Only the last update will be taken into account.

  • Light Packages
    • only update the current price/striked price and/or inventory
    • will not change your sale configuration for the specified offers (if existing)
  • Full Packages
    • will enable sale declaration with the <Offer.PriceAndDiscountList> node
    • will enable sale removal when the <Offer.PriceAndDiscountList> is not specified

When the sales start

Note pricing calculations are still considered outside of shipping charges.

Calculations will only be considered IF there as been at least one Full Package sent before the starting time not overwritten with a disabling Full Package.
or refer to “During Sales” below.

  1. Lowest price point within the last 30 days is considered as a reference price.
    • the lowest final price of any offer including yours on the given product id/gtin is considered.
  2. Expected final price is calculated from your sales declaration
  3. Effective promotional rate for your offer is calculated
  4. Best offer selection is performed by the marketplace

See below “Sales calculations”


During sales

Updating the sales definition

This is as simple as submitting a Full Package.

Submitting with the <Offer.PriceAndDiscountList> node will update the sale calculation to the new values you set.

Submitting without this node, will disable the sale state for your offer and revert to using only your Price and StrikedPrice information.

Light Package updates impacts
  • Submitting only inventory information
    <Offer SellerProductId="[your_reference]" ProductEan="[product_gtin]" Stock="[integer]" />
    • will only update the inventory
  • Submitting with price information (with or without inventory)
    • If the submitting a Price point equal or below the current Final price will overtake the lowest price and disable the active sale state

Sales Calculations

Defining the “Lowest Price Point

The lowest price point is considered over all offers on a given product (same gtin/internal product reference) for the previous 30 days and is measured by cdiscount, it is also verified by government operations and consumer protection agencies through parsing and sampling.

It is considered outside of shipping charges and active sales operations.

A low point as an active sale will not be taken into account.

Using only Price and StrikedPrice is not considered a sale between the official dates. The Price value will be considered a low point.

Striked Price versus Lowest Price

Before the sales start date :
When it exists, the StrikedPrice display is limited to the available strikedPrice of the BestOffer (the offer having the buybox)

After the sales start date :
The displayed Striked Price is enforced to the Lowest Price Point for the given product, considering a sale is ongoing on the current BestOffer

Note : Lowest Price Point being at the product level, it is not displayed on offer lists

Defining the displayed “Sale percentage

Note : Octopia does not enforce display rules through the API, wether a “Soldes“* (french for “Sales“) visual is available for a given product/offer are based on Cdiscount.com internal rules and management.

The final sale percentage is based on the Lowest Price compared to your actual Final Price and not purely on your SalesReferencePrice.


Examples

Case : Final price higher than 30days history
Context :

  • 30d Lowest Price Point : 80€
  • SalesReferencePrice : 100€
  • DiscountValue : 10%


Result :

  • Offer Final Price : 100×10% = 90€
  • Published Final Price : 90€
  • Sale state : Disabled (current price higher)

Though you provide a sale, it is still too high to be considered a price reduction as an end customer.

Case : Final price equal to 30days history
Context :

  • 30d Lowest Price Point : 80€
  • SalesReferencePrice : 100€
  • DiscountValue : 20%


Result :

  • Offer Final Price : 100×10% = 80€
  • Published Final Price : 80€
  • Sale state : Disabled (current price equal)

There is no change in final price.

Case : Final price lower than 30days history
Context :

  • 30d Lowest Price Point : 80€
  • SalesReferencePrice : 100€
  • DiscountValue : 30%


Result :

  • Offer Final Price : 100×10% = 70€
  • Published Final Price : 70€
  • Sale state : Enabled (current price lower)
  • Discount Sale : 12.25% (70 compared to 80)

Sales percentage has been recalculated.

Case : Full package high Price AND Sales update
Context :

  • 30d Lowest Price Point : 80€
  • SalesReferencePrice : 100€
  • DiscountValue : 30%
  • Additional Price update :
    • Price 90€
    • StrikedPrice 100€


Result :

  • Offer Final Price : 100×10% = 70€
  • Published Final Price : 70€
  • Sale state : Enabled (current price lower)
  • Discount Sale : 12.25% (70 compared to 80)

The Price and StrikedPrice provided here will not change the outcome.

Case : Full package low Price AND Sales update
Context :

  • 30d Lowest Price Point : 80€
  • SalesReferencePrice : 100€
  • DiscountValue : 20%
  • Additional Price update :
    • Price 75€
    • StrikedPrice 100€


Result :

  • Offer Final Price : 100×10% = 70€
  • Published Final Price : 70€
  • Lowest Price Point Update : 75€
  • Sale state : Disabled
  • Discount Sale : 6.67% (70 compared to 75)

The Price given implies a 30 days price history update.

Usecases

Here are considered updates on your offer, on a product with pricing competition or an existing low price point below current offer pricing.

UseCase30 days Lowest Price PointPriceSalesReferencePriceDiscountValueSalePriceOffer Final PriceSale stateSale percentageLowest Price Point reviewed
Price only, higher than LPP809090N/AN/A
Price only, lower than LPP807070N/AN/A70
Sales, equal to LPP80100100208080NoneNone
Sales, higher than LPP809090108181NoneNone
Sales, lower than LPP8090100257575Enabled6,25
Sales, price lower than sale8060100307060Disabled60
Scroll to Top