80% of the shoppers make buying decisions based on ship cost and delivery speed during pre-purchase. Fenix Delivery Experience Platform enables retailers to offer a personalized delivery experience to their customers through the entire shopping journey from pre-purchase to post-purchase.
Pre-requisites before making API requests to Fenix Delivery Experience Platform
Carrier Information: The retailer should provide the current Carriers, the services opted for, carrier account information, or rate cards ( any specific). Kindly configure the carrier account information for fulfillment location-specific carrier accounts at a fulfillment location to get the most accurate rates. Global Credentials are always on priority.
Fulfillment locations: Configure all the USA Fulfillment locations, including DC/Store, in the Business Console
Lead Time (Time required to pick/pack/ship) for each fulfillment location after the order gets allocated
Shipment Pick-up times for each carrier or by carrier service.
Cut-off Time for the location
Holidays for the location
Inventory and Product: Various channels to share the inventory and product information with Fenix. Fenix's technical team helps you to choose the most appropriate method via SFTP/S3/Rest API.
Integration varies from platform to platform. In the case of Bigcommerce or Shopify Fenix team will install the private app in the checkout, then retailer-specific PDP and CART Rest API endpoints will be provided by the Fenix team.
Integration Architecture
...
Info |
---|
Zipcode Detection APIFenix recommends zipcode detection on the PDP page load. If an existing API detects the buyer's zipcode using the customer IP address, kindly pass the zipcode as input to the Fenix EDD API. If not, please use fenix recommended zipcode detection API API : https://ipapi.co/json/?key=<APIKEY>
|
Delivery Estimate Rest API
Request & Response formats
All the request and response formats are accepted in application/JSON
...
API | /fenixdelest/api/v3/deliveryestimates | ||
Method | POST | ||
Request Headers
|
| ||
Request body sample |
| ||
Response body sample |
|
Request Body Attribute Definitions
Attribute | Description | ||
sessionTrackId mandatory | "sessionTrackId":"123123-2323-1231-23123"
| ||
orderId
| "orderId": "123123123"
| ||
cartId | "cartId": "123123123"
| ||
buyerZipCode mandatory | "buyerZipCode" : "95129"
| ||
pageType mandatory | "pageType": "cop"
E.g., Show fastest EDD on PDP and show all EDD options on COP. PDP - Product Detail Page CART - CART page/shopping Bag page COP - Check out Page MC - Mini Cart CA - Cart Abandonment OC - Order Confirmation SC - Shipping Confirmation Send Values as part of a delivery estimate request | ||
moneytoryValue mandatory | "monetaryValue": 50.0
| ||
responseFormat | "responseFormat" : "json"
| ||
additionalProcessing | "additionalProcessing": true
| ||
skus mandatory |
| ||
buyerAddress mandatory |
| ||
shippingInfo mandatory |
|
Response Attribute Definitions
Delivery Estimates response vary from the type of rule configured in the business console.
Attribute | Description |
eddResponses | This field contains a list of shipping estimates |
webId | "webId": "0194NCOS"
|
hours | "hours": "2" |
minutes | "minutes": "1"
|
carrier | "carrier": "fedex"
|
Response | "response": "Order within <span class=fenix-resp-span-time>2 hrs 1 mins</span><br>Get it by <span class=fenix-resp-span-date>Fri, May 21</span> with <span class=fenix-resp-span-shippingname>Federal Express </span>" E.g. Order within 2 hrs 1 mins Get it by Fri, May 21 with Federal Express ·
|
shippingCost | "shippingCost": {
|
shipperLocId | "shipperLocId": null,
|
buyerZipCode | "buyerZipCode": "10001"
|
shipperZipCode | "shipperZipCode": "10001",
|
shippingMethod | "shippingMethod": null,
|
shippingDateTime | "shippingDateTime": "19 May 2021, 19:00",
|
actualMethodDesc | "actualMethodDesc": "Fedex Ground" ,
|
shippingMethodCode | "shippingMethodCode": "Free Standard Delivery"
|
shippingMethodDesc | "shippingMethodDesc": "Free Standard Delivery"
|
ShippingDeliveryDate | "shippingDeliveryDate": "Wed, 26 May 2021" · The minimum delivery date that item will be delivered. In few cases this will be date range |
formattedDeliveryDate | "formattedDeliveryDate": "Wed, May 26" · The formatted delivery date to show it to end customer on various pages |
guaranteedDeliveryDate | "guaranteedDeliveryDate": "Wed, 26 May 2021" · The guaranteed delivery date provided by Fenix Commerce |
errorMessage | "errorMessage": null,
|
Packages | "packages": [{ "carrier": "DHL", "wrapperType": "DEFAULT", "shipperLocId": "manual", "shipperZipCode": "90058", "actualMethodDesc": "DHL SM Parcel Ground", "contents": { "0194NCOS": 100 } }]
The number of shippable packages information per service response basis
"SKU":quantity |
pickUpTimes
| "pickUpTimes": { · The configured pickup time of each shipping service method code "shipping service method code" : "Configured pickup time." |
pickFromStoreResponse | This field contains a list of pick up responses |
locationsWithIn | This field shows the distance (in miles) within which the fulfillment locations are considered |
storeInfos | This field contains a list of stores the customers can go and pick up their order |
locId | The location Id of the pick up store |
address | The address of the pick up store |
distance | The distance of the store to the buyer |
pickUpCost | This field lets the user know if there is any cost associated with the pick up |
mapsRoute | Shows the Google Maps url |
leadTimeForPickUp | This field tells the customers how soon they can pick the order after it is placed |
lineItems | The products that are included in this pick up |
workingHours | This field tells you the working hours of the store. |
The above request is a Fenix commerce master request with all the attributes the request body will change based on the retailer, such as inventory product feed integration.
PDP Integration Procedure
Precheck
Restrict the delivery estimates to only USA region and for only USA Customers
Don't make a delivery estimate call if the item is out of stock and other exceptional handling cases
...
Show fastest estimates at CART level
API | /fenixdelest/api/v3/deliveryestimates | ||
Request Headers
|
| ||
Request Body Sample:
| |||
Response Body Sample
|
CART and Checkout Page Integration Procedure
...
Show fastest estimates at CART level
API | /fenixdelest/api/v3/deliveryestimates | ||
Request Headers
|
| ||
Request Body Sample:
| |||
Response Body Sample
|
Checkout Page Request and Response
API | /fenixdelest/api/v3/deliveryestimates |
Method | POST |
Request Headers
|
|
Request Body
Code Block |
---|
{ "buyerAddress": { "country": "US", "zipcode": "10002" }, "orderId": "no-token", "sessionTrackId": "MTYxNzc2MTI0MzE5MS10b21ib3l4LmNvbS02OTQ1Mw==", "internalSessionUUID": "cf500124-a374-4095-abed-d570250174da", "buyerZipCode": "10002", "monetaryValue": "30.00", "pageType": "cop", "responseFormat": "json", "skus": [ { "quantity": 1, "sku": "black-leather-bag", "skuInventories": [ { "locationId": "manual", "quantity": 1 } ] } ] } |
...
Code Block |
---|
{ "sessionId": null, "responseTimeInMs": 1065, "eddResponses": [ { "webId": "black-leather-bag", "hours": "1", "minutes": "55", "response": "Order within <b>1 Hrs 55 Mins</b> to get it by <b>Mon, Jul 18</b>", "shippingCost": { "amount": 4.99, "currency": "USD" }, "buyerZipCode": "10002", "deliveryZone": "DEFAULT", "shippingDateTime": "15 Jul 2022, 16:30", "shippingMethodDesc": "Standard", "internationalOrder": false, "formattedDeliveryDate": "Mon, Jul 18", "guaranteedDeliveryDate": "Mon, 18 Jul 2022", "errorMessage": null, "packages": [ { "carrier": "FEDEX", "wrapperType": "DEFAULT", "shipperLocId": "64364413079", "deliveryDate": "Mon, Jul 18", "shippingDate": "15 Jul 2022, 16:30", "shipperZipCode": "10011", "shippingMethod": "FEDEX_GROUND", "actualMethodDesc": "FEDEX_GROUND", "externalShippingMethod": null, "contents": { "black-leather-bag": 1 } } ], "shipCostBreakUp": { "breakups": [ { "name": "BASE_CHARGES", "charges": { "amount": 11.16, "currency": "USD" } } ] }, "orderRoutingInfo": [ { "sku": "black-leather-bag", "location_id": "64364413079" } ], "prePurchaseShippingInfos": null, "shippingDeliveryDate": "Mon, 18 Jul 2022", "code": null } ], "smartShippingResponses": null, "pickFromStoreResponse": { "locationsWithIn": "50.0 miles", "storeInfos": [ { "locId": "64364413079", "address": { "id": null, "address1": "156 10th Avenue", "address2": "", "city": "New York", "country": "US", "state": "NY", "zipcode": "10011", "phone": null, "timeZone": null, "shortZone": "CT" }, "distance": "0.00 miles", "pickUpCost": 0.0, "mapsRoute": null, "leadTimeForPickUp": 4, "lineItems": { "black-leather-bag": 1 }, "workingHours": { "Sunday": "09:00 - 18:00", "Monday": "09:00 - 18:00", "Tuesday": "09:00 - 18:00", "Wednesday": "09:00 - 18:00", "Thursday": "09:00 - 18:00", "Friday": "09:00 - 18:00", "Saturday": "09:00 - 18:00" }, "pickUpTitle": "Pick at New York in 4 hrs", "pickUpDescription": "156 10th Avenue,New York,NY,10011" } ] } } |
Exception Use Cases :
Use Case | HTTP Status Code | Response Payload |
---|---|---|
Invalid Inventory | 400 | { |
Invalid TenantId | 400 | { |
Invalid Zipcode | 400 | { |
Invalid Page Type | 400 | { |
Invalid Product Info | 400 | { |