Skip to main content

shipping

Optional Field

This field is optional, but omitting it may leave out functionality on Prisjakt for your offers

Description​

The shipping attribute is used to set cost, time and methods of delivery. It is a nested and repeatable attribute, send one entry per combination of country, delivery service and price. Shipping can be built from two different sources, the values you send in your feed and the shipping services you configure in Business Center. The two sources are never combined for the same offer. If an offer has at least one valid shipping entry in the feed we use the feed values and ignore your Business Center configuration completely. Only when an offer ends up without any valid shipping entry do we fall back to your Business Center shipping configuration. This means that a shipping entry that is rejected during validation is not repaired by Business Center values, it is simply removed. Please note, that shipping is required for all products sold on French market.

Sub-attributes​

This is a nested attribute, every entry is built from the sub-attributes below.

Sub-attributeRequiredTypeLimitDescription
countryyesenum2 charactersCountry the entry applies to, as an ISO 3166-1 alpha-2 code, for example SE. You can send it in any casing, we normalise it to upper case before validating. A missing or unknown country code discards the whole entry.
priceyesprice255 charactersDelivery cost including VAT, written as amount and ISO 4217 currency code, for example 49.00 SEK. Use 0 SEK for free delivery. If you leave the currency out we use the currency of your feed. A missing or unparseable price discards the whole entry.
regionnostring50 charactersRegion or state inside the country, for example Skåne. Accepted for compatibility with the Google specification, but it is currently not shown to users. A value longer than 50 characters discards the whole entry.
servicenostring50 charactersName of the delivery service as you want it presented to users, for example Express. A value longer than 50 characters discards the whole entry.
min_handling_timenointegerwhole days, 0 or higherLowest number of days between receiving the order and handing the parcel over to the carrier. Must be lower than or equal to max_handling_time. If any one of the four time sub-attributes is missing or invalid, all four are dropped from the entry.
max_handling_timenointegerwhole days, 0 or higherHighest number of days between receiving the order and handing the parcel over to the carrier. If any one of the four time sub-attributes is missing or invalid, all four are dropped from the entry.
min_transit_timenointegerwhole days, 0 or higherLowest number of days the carrier needs to deliver the parcel. Must be lower than or equal to max_transit_time. If any one of the four time sub-attributes is missing or invalid, all four are dropped from the entry.
max_transit_timenointegerwhole days, 0 or higherHighest number of days the carrier needs to deliver the parcel. If any one of the four time sub-attributes is missing or invalid, all four are dropped from the entry.
carriernostring50 charactersPrisjakt extension, not part of the Google specification, and only read from feeds in the Prisjakt format. Name of the carrier, for example PostNord. A value longer than 50 characters drops only carrier and keeps the rest of the entry.
delivery_typenoenumone of the allowed values, lower casePrisjakt extension, not part of the Google specification, and only read from feeds in the Prisjakt format. One of home, in_store_pickup, mailbox, package_locker or service_point, written in lower case. Any other value drops only delivery_type and keeps the rest of the entry.

Effects When Used​

  • This information will be visible for the users in offer listing.
  • Your feed values are used exactly as you sent them, and your Business Center shipping configuration is ignored for that offer. There is no per sub-attribute merge between the two sources.

Effects When Omitted​

  • If your shop has shipping services configured in Business Center, we build the shipping entries from them instead, one entry per country configured on every service that matches the offer.
  • A Business Center shipping service only matches an offer when all of the following are true. Its label condition matches the shipping_label values of the offer, its weight and size condition matches the shipping_weight and dimensions of the offer, and a price can be determined for the offer. If nothing matches, the offer is published without shipping information
  • Business Center services can hold delivery information that cannot be expressed in a feed at all, such as order cut off time, which weekdays count as handling and transit days, sustainable delivery and services that are only available to members.
  • Business Center services can hold price rules, for example free delivery above a given order value. Such rules are evaluated against the current selling price of the offer, and are recalculated whenever the price changes, so a sale price can move an offer into free delivery automatically.
  • If your shop has no shipping configuration in Business Center either, the offer is published without any shipping information.

Validation Rules​

  • A maximum of 100 shipping entries is allowed per offer
  • Submit complete shipping information. country and price are required in every entry
  • Entry level errors. An error in country, price, region or service discards that whole shipping entry. The offer itself is still ingested, it is only that shipping entry that is lost
  • Sub-attribute level errors. An error in carrier or delivery_type only drops that single sub-attribute, the rest of the entry is kept
  • All entries discarded. If every shipping entry you sent is discarded, the offer is treated as having no shipping at all, and your Business Center shipping configuration is used instead if you have one
  • Submit shipping cost including VAT, written as amount and ISO 4217 currency code, for example 49.00 SEK. The amount must be 0 or higher and lower than 1000000000. If you leave the currency out we use the currency of your feed
  • Handling time and transit time should be specified in whole days, 0 or higher
  • Times are all or nothing. If you provide any of min_handling_time, max_handling_time, min_transit_time or max_transit_time you must provide all four. If you provide only some of them, all four are dropped and the entry is published without any delivery times (validation_shipping_time_missing_values)
  • If you provide information about handling or transit time then min_handling_time should be lesser or equal to max_handling_time and min_transit_time should be lesser or equal to max_transit_time. If not, all four time values are dropped
  • Attributes carrier and delivery_type are specific to Prisjakt and are not available in the Google Specification. They are used to provide a richer UI to end users on our page
  • Attributes carrier and delivery_type are only read from feeds in the Prisjakt format, that is XML using the Prisjakt namespace or CSV using the Prisjakt column format. In a plain Google feed they are ignored
  • Attribute carrier can be any string value up to 50 characters, but only the following values will be represented with icons airmee, best, bring, budbee, city, dachser, db, dhl, dooris, early, fedex, instabox, jetpak, postnord, ups, gls
  • Attribute delivery_type can only take specific enum values, written in lower case. If the provided value is not in the allowed enum values or is not provided, the status is unset. Allowed values are home, in_store_pickup, mailbox, package_locker, service_point
  • Casing. Casing is handled per sub-attribute. country is normalised to upper case before it is validated, so you can send it in any casing. delivery_type is not normalised and must be sent in lower case, any other casing is treated as an unknown value and dropped. region, service and carrier are free text and are stored exactly as you send them

Best Practices​

Do​

  • Keep shipping information as precise as possible. Add multiple shipping attributes if shipping cost or time varies for different country, region or service.
  • Decide whether you want to manage shipping in the feed or in Business Center, and keep that choice for the whole offer. The feed always wins as a whole, so a partially filled feed entry cannot be completed from Business Center.
  • If any of min_handling_time, max_handling_time, min_transit_time, max_transit_time is present then all those fields must be present for the current shipping item.
  • If you rely on Business Center shipping and your services use labels, send a matching shipping_label on your offers. A service that has labels only applies to offers carrying at least one of those labels, and a service without labels only applies to offers that have no shipping_label at all.
  • If you rely on Business Center shipping and your services have a weight condition, send shipping_weight. If they have a size condition, send all three of shipping_length, shipping_width and shipping_height. Offers that are missing the values a condition refers to will never match that service.
  • If you rely on Business Center price rules, make sure the currency of the shipping service is the same as the currency of your offers. Price rules are only applied when the two currencies match.
  • Overestimate if you can't provide accurate shipping cost or delivery times.

Don´t​

  • Don't send a shipping entry with only some of the four time values. Sending min_handling_time and max_handling_time without the transit times means the entry is published with no delivery time at all.
  • Don't expect Business Center to fill in the gaps of an incomplete feed entry, the two sources are never merged.
  • Don't use a region or service value longer than 50 characters, it discards the whole shipping entry and not just that value.
  • Don't provide comma or point as separator for both thousands and fractional part of the shipping price, i.e. we don't support 1,000,00 SEK and 1.000.00 SEK formats
  • Don't send carrier or delivery_type in a plain Google formatted feed, they are only read from feeds in the Prisjakt format.

Example Values​

Here are examples of how a valid shipping value should look like in XML and CSV (with header) respectively.

Valid Value
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>25.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>2</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
<g:max_transit_time>3</g:max_transit_time>
<g:delivery_type>home</g:delivery_type>
<g:carrier>PostNord</g:carrier>
</g:shipping>
Click to show more valid XML examples
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>25.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>2</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
<g:max_transit_time>3</g:max_transit_time>
<g:delivery_type>home</g:delivery_type>
<g:carrier>PostNord</g:carrier>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:price>49.00 SEK</g:price>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Home Delivery</g:service>
<g:price>0 SEK</g:price>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>25.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>2</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
<g:max_transit_time>3</g:max_transit_time>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>POST</g:service>
<g:price>5.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>5</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
<g:max_transit_time>3</g:max_transit_time>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>45.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>8</g:max_handling_time>
<g:min_transit_time>3</g:min_transit_time>
<g:max_transit_time>10</g:max_transit_time>
</g:shipping>

Error Codes​

Below you will find possible error codes generated when validating this field alongside with an example in XML and CSV that would trigger the code. Please refer to the validation rules to understand the cause.

<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>5.00 SEK</g:price>
<g:min_handling_time>-1</g:min_handling_time>
<g:max_handling_time>2</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
<g:max_transit_time>3</g:max_transit_time>
</g:shipping>
<g:shipping>
<g:country></g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>5.00 SEK</g:price>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price></g:price>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>5.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>5.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>2</g:max_handling_time>
</g:shipping>
<g:shipping>
<g:country>SE</g:country>
<g:region>Skåne</g:region>
<g:service>Express</g:service>
<g:price>5.00 SEK</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>2</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
</g:shipping>

Properties​

PropertyValueDescription
Data TypeList[Nested]Closest data type in code
NestedTrueDefines if this field consists of one or more sub-fields
Case SensitiveTrueIf small or large letters matter for this field
RepeatableTrueIf you can supply multiple items of this field (it´s a list)
Repeatable limit100If a list, this specifices the max number of items

Changelog​

📅 2026-08-17

Changed

Documented how feed shipping and Business Center shipping relate to each other, and what happens to incomplete or invalid shipping entries.

Changed

Added a description of every sub-attribute, and clarified which errors discard a whole shipping entry and which only drop a single sub-attribute.

📅 2024-04-16

Added

Added carrier and delivery_type support

📅 2022-12-07

Added

Initial definition

References​