B2C Commerce Estimated Delivery Dates
Provide estimated delivery dates in checkout
process providing actual dates for delivery, not ranges.
Supports both SFRA and SiteGenesis
Install the Zenkraft Cartridge
Setup Estimated Delivery Dates
Custom Preference Configuration
There are several custom site preferences that can be set as you can see below. Some are essential to connecting to the Zenkraft API and some allow you to enable/disable/customize certain pieces of functionality.
Zenkraft General
Site Preference | Description | Values to Use |
---|---|---|
Zenkraft Master API Key | You will need to get this from Zenkraft. The API key is required for all API calls. | |
Zenkraft Production Mode | Allows you to toggle between production mode and development mode. | |
Enable Zenkraft Shipping Methods | Allows you to toggle the Real-Time Shipping Rates for Shipping Methods | |
Enable Zenkraft Shipping Rates | Allows you to toggle the Real-Time Shipping Rates for Shipping Methods | |
Enable Zenkraft Debug Logs | If enabled, requests and responses will be logged in the Zenkraft API Admin for debugging reasons | |
Carrier ID | Carrier ID to use for Shipments to the customer. | |
Packaging Type | Packaging type to use for shipments to the customer. Values can be found in Zenkraft API documentation. | your_packaging |
Shipping Account ID | ID Number for the Carrier account for shipments to the customer. | |
Currency Code | 3 letter Currency Code to use with the Zenkraft API. Default value is USD and available values can be found in the Zenkraft API documentation. | |
Dimension Units | Units to be used for dimensions. | IN or CM |
Weight Units | Units to be used for weight. | LB or KG |
Default Product Weight | This is the default weight to be used for products when determining shipping rates. If the weight is not defined on the product, this is what is used. | |
Sender Street Address | This is the address used as the FROM address for shipments to the customer. | |
Sender Address City | This is the city used as the FROM city for shipments to the customer. | |
Sender Address State Code | This is the state code used as the FROM state code for shipments to the customer. This is optional as not all countries have states. | |
Sender Address Postal Code | This is the postal code used as the FROM postal code for shipments to the customer. | |
Sender Address Country Code | This is the country code used as the FROM country code for shipments to the customer. | |
Sender Company | This is the Company Name used as the FROM company name for shipments to the customer. | |
Sender Name | This is the name used as the FROM name for shipments to the customer. | |
Sender Phone Number | This is the phone number used as the FROM phone number for shipments to the customer. | |
Sender Email Address | This is the email address used as the FROM email address for shipments to the customer. | |
Google Maps API Key | API Key to use for the Google Maps API. Currently, a Google Map is used for the Drop Off Locations feature. |
Zenkraft Estimated Delivery
Name | Description |
---|---|
Enable Zenkraft Estimated Delivery Dates | Set to true if you want to show the estimated delivery dates on Checkout and PDP |
Delivery Date Cutoff Time | After this time of day, estimated delivery dates will have a day added to them. For example, if this time is set as 5pm, then the estimated delivery date will add an extra day. |
Company-wide Lead Time | Company-wide days required to send out product. |
Zenkraft Advanced Configuration
Name | Description |
---|---|
Enable Advanced JSON Configuration | This will enable/disable the Zenkraft Advanced JSON Configuration. If enabled, a valid JSON object needs to be configured in that JSON configuration site preference |
Zenkraft Advanced JSON Object | Set your advanced JSON code here
{ "EDD": { "id_132174644": { "ACCOUNT_ID": "132174644", "CARRIER_ID": "fedex", "SERVICE_TYPE": "fedex_ground", "PACKAGING": "your_packaging", "CURRENCYCODE": "USD", "DIM_UNITS": "IN", "WEIGHT_UNITS": "LB", "ADDRESS": { "STREET": "10062 Treena Street", "CITY": "San Diego", "STATECODE": "CA", "POSTALCODE": "92131", "COUNTRYCODE": "US", "COMPANY": "Zenkraft Default", "NAME": "Zenkraft Default", "PHONE": "1231231233", "EMAIL": "api@zenkraft.com" } }, "id_870435884": { "ACCOUNT_ID": "870435884", "CARRIER_ID": "ups", "SERVICE_TYPE": "ups_ground", "PACKAGING": "your_packaging", "CURRENCYCODE": "USD", "DIM_UNITS": "IN", "WEIGHT_UNITS": "LB", "ADDRESS": { "STREET": "10062 Treena Street", "CITY": "San Diego", "STATECODE": "CA", "POSTALCODE": "92131", "COUNTRYCODE": "US", "COMPANY": "Zenkraft Default", "NAME": "Zenkraft Default", "PHONE": "1231231233", "EMAIL": "api@zenkraft.com" } } }, "SHIP": { "US": { "ACCOUNT_ID": "870435884", "CARRIER_ID": "ups", "SERVICE_TYPE": "ups_ground", "PACKAGING": "your_packaging", "CURRENCYCODE": "USD", "DIM_UNITS": "IN", "WEIGHT_UNITS": "LB", "FILETYPE": "PDF", "ADDRESS": { "STREET": "10062 Treena Street", "CITY": "San Diego", "STATECODE": "CA", "POSTALCODE": "92131", "COUNTRYCODE": "US", "COMPANY": "Zenkraft Default", "NAME": "Zenkraft Default", "PHONE": "1231231233", "EMAIL": "api@zenkraft.com" } } }, "RETURN": { "US": { "ACCOUNT_ID": "474557840", "CARRIER_ID": "ups", "SERVICE_TYPE": "ups_ground", "PACKAGING": "your_packaging", "CURRENCYCODE": "USD", "DIM_UNITS": "IN", "WEIGHT_UNITS": "LB", "FILETYPE": "PDF", "ADDRESS": { "STREET": "10062 Treena Street", "CITY": "San Diego", "STATECODE": "CA", "POSTALCODE": "92131", "COUNTRYCODE": "US", "COMPANY": "Zenkraft Default", "NAME": "Zenkraft Default", "PHONE": "1231231233", "EMAIL": "api@zenkraft.com" } } } } |
zenkraftDeliveryInstructionsConfig | Set your available delivery instructions here[ { "id": "leave_with_a_neighbour", "value": "Leave with a neighbour", shippingMethods": [ "001", "003", "EUR001", "EUR003" ], "fields": [ { "nodeType": "input", "attributes": [ { "id": "type", "value": "text" }, { "id": "placeholder", "value": "Neighbour name:" }, { "id": "class", "value": "form-control mt-1" } ] }, { "nodeType": "input", "attributes": [ { "id": "type", "value": "text" }, { "id": "placeholder", "value": "Neighbour phone:" }, { "id": "class", "value": "form-control mt-1" } ] }, { "nodeType": "input", "attributes": [ { "id": "type", "value": "textarea" }, { "id": "placeholder", "value": "Additional info..." }, { "id": "class", "value": "form-control mt-1" } ] } ] }, { "id": "leave_at_front_porch", "value": "Leave at front porch", "shippingMethods": [ "001", "003", "EUR001", "EUR003" ] }, { "id": "Leave_at_reception", "value": "Leave at reception", "shippingMethods": [ "001", "003", "EUR001", "EUR003" ] } ] |
Shipping Method Configuration
Real Time Shipping Rates
In order to use the Zenkraft LINK Cartridge functionality, you’ll need to configure your SFCC Shipping Methods to map the shipping services in Zenkraft. To facilitate this, there is a new custom attribute on the Shipping Method.
To configure the methods, go to the Shipping Method in the Merchant Tools -> Ordering -> Shipping Methods and select your method.
Add your Zenkraft shipping method ID to the Zenkraft section to map it to the method. You can find the method IDs in the Zenkraft API documentation.
Add your Zenkraft carrier to the Zenkraft section to map it to the correct carrier.
Add your Zenkraft shipping account ID to the Zenkraft section to map it to the correct carrier
account.
NOTE: The Shipping Account ID is different from the account number. If you do not know the Account ID
please reach out to Zenkraft Support.
As you can see in the above screenshot, you also have the ability to add your own markup to the shipping method price that is returned from Zenkraft. To add markup, select the type (Amount or Percent), then add the Markup amount as a number (ex: 2.00 for a $2.00 or 2% markup).
Drop Off Shipments
To enable the Drop Off Shipments feature, you’ll need to designate a shipping method or methods to use for the Drop Offs. To set one up, simply create a shipping method as you normally would. Then, check the box in the Zenkraft section that sets the method as Drop-off, as seen in the following screenshot:
Once the order has been created the drop off location name and location code is saved to the shipment record
Named Day
To enable the Named Day feature you’ll need to designate a shipping method or methods to use Future date delivery. To set one up, simply create a shipping method as you normally would. Then, assign how many days you want to allow your users to determine their ship date for, as seen in the following screenshot:
One the order has been completed this date is saved on the shipment record.
Add Shipping account ID
The shipping account IDs are stored in a Site preference on SalesForce Commerce Cloud
Navigate to Merchant tools > Site Preferences > Custom Preferences and find the Zenkraft General
group.
Find the Shipping Account ID you have received from Zenkraft and update it with the appropriate value. If you haven't been given the Shipping Account ID yet, please contact support@zenkraft.com or your account manager.
Real Time Shipping Rates
In order to use the Zenkraft LINK Cartridge functionality, you’ll need to configure your SFCC Shipping Methods to map the shipping services in Zenkraft. To facilitate this, there is a new custom attribute on the Shipping Method.
To configure the methods, go to the Shipping Method in the Merchant Tools -> Ordering -> Shipping Methods and select your method.
Add your Zenkraft shipping method ID to the Zenkraft section to map it to the method. You can find the method IDs in the Zenkraft API documentation.
Add your Zenkraft carrier to the Zenkraft section to map it to the correct carrier.
Add your Zenkraft shipping account ID to the Zenkraft section to map it to the correct carrier
account.
NOTE: The Shipping Account ID is different from the account number. If you do not know the Account ID
please reach out to Zenkraft Support.
As you can see in the above screenshot, you also have the ability to add your own markup to the shipping method price that is returned from Zenkraft. To add markup, select the type (Amount or Percent), then add the Markup amount as a number (ex: 2.00 for a $2.00 or 2% markup).
Drop-off pick-up locations
The drop-off / pick-up locations are returned by the external Zenkraft API
To enable the Drop Off Shipments feature, you’ll need to designate a shipping method or methods to use for the Drop Offs. To set one up, simply create a shipping method as you normally would. Then, check the box in the Zenkraft section that sets the method as Drop-off, as seen in the following screenshot:
Once the order has been created the drop off location name and location code is saved to the shipment record
Future Delivery Dates
To enable the Named Day feature you’ll need to designate a shipping method or methods to use Future date delivery. To set one up, simply create a shipping method as you normally would. Then, assign how many days you want to allow your users to determine their ship date for, as seen in the following screenshot:
One the order has been completed this date is saved on the shipment record.
Same Day Delivery
Same Day Delivery shipping methods are returned by the external Zenkraft API
To enable the Same Day Delivery feature, you’ll need to create a specific shipping method in SFCC Business Manager. To set one up, simply create a shipping method as you normally would, but set the ID of the method to bringg_auto_dispatch.
Then, configure the Zenkraft section as seen in the following screenshot:
Zenkraft Shipping Method ID should be the same as the SFCC method ID - bringg_auto_dispatch.
Make
sure that you select the On-demand checkbox.
Own Fleet Delivery
Own Fleet Delivery shipping methods are returned by the external Zenkraft API
The shipping method allows the customer to select an available time slot for the delivery.
To enable the Own Fleet Delivery feature, you’ll need to create a specific shipping method in SFCC Business Manager. To set one up, simply create a shipping method as you normally would, but set the ID of the method to bringg_scheduled.
Then, configure the Zenkraft section as seen in the following screenshot:
Zenkraft Shipping Method ID should be the same as the SFCC method ID - bringg_scheduled.
Make sure
that you select the Delivery Slots Method checkbox.
The ZK API returns a special Quote ID for all shipments with a Same Day Delivery or Own Fleet Delivery
shipping methods.
That ID is stored on shipment level, for each of the shipments in an
order
Split delivery for orders in SFCC
Architecture
We have introduced a new feature switch in the Zenkraft OCI Settings group. If the switch is turned on, SFCC will request the inventory data for each of the items in the basket from OCI.
OCI will return a list of stores where the item is available. The Store ID from the response should match to a native SFCC Store object ID.
If Store objects exists, the code will pull the store address and use that in the /rates call as a sender address.
Then a /rates request will be executed for each of the shipments and display the possible shipping methods for each of the shipments.
NOTE: When multiple stores are returned, an optimizations logic needs to be implemented.
Configuration
The split delivery can be enabled by setting the Enable Zenkraft OCI services site preference in the Business Manager.
Navigate to Merchant Tools > Site Preferences > Custom Site Preference Groups > Zenkraft OCI Settings
And configure the organization ID and set the Enable Zenkraft OCI Services to true.
Once the OCI is enabled, the items in the basket will be split based on the data / store that's returned from Omni Channel Inventory service
Note: Due to limitation in Commerce Cloud, this does not work for baskets that have more than 10 items, because it is reaching the SFCC httpClient.send quota. Current quota limit is 8 httpClient calls per request, with release 22.8 this will be increased to 16.
Warehouse processing & cut-off times & product lead time
Warehouse processing times consist of two separate site preferences that can be found under Merchant tools > Site Preferences > Customer Preferences > Zenkraft Estimated Delivery
- Enable Zenkraft Estimated Delivery Dates - Enables/Disabled the EDD functionality
- Delivery Date Cutoff Time - Set the Cut off time. After this time of day, estimated delivery dates will have a day added to them. For example, if this time is set as 5pm, then the estimated delivery date will add an extra day.
- Company-wide Lead Time - Company-wide days required to send out product. This value will be applied to all shipments, if none is configured on the product itself.
You can set up product processing lead times as well. All you need to do is fill in Zenkraft field called "Lead Time of the product" which you can find on the product object.
Site Preferences Reference
You can find the list of all the Site Preferences available for configuration within the B2C Business Manager by following this link.
Run tests
There is no custom code necessary to enable the Estimated Delivery Dates feature. To enable it, you simply need to configure the shipping methods with Zenkraft IDs as mentioned in the above section of this document, then enable the site preference named ‘Enable Zenkraft Estimated Delivery Dates’.
Once this is set up, you can test the shipping rates simply by going to the shipping page and entering an address. The estimated delivery dates should display with the shipping methods. You can enable Communication logging for the zenkraft.http.rate service in the SFCC Service Framework to verify that API responses are successful.
Please contact us for any more information and for next steps.