Shipping
Customers are a funny lot. If you sell them something, they seem to expect that they can have their item(s) delivered somewhere. What a bother, eh?
But fear not! Dynamicweb Ecommerce supports integrating with several popular delivery services, such as Post Danmark, GLS or FedEX, by setting up one or more shipping methods.
Setting up shipping in Dynamicweb Ecommerce consists of:
- Creating a new shipping method
- Selecting and configuring a shipping provider
- Configuring the matching delivery service
In this article, you can read about creating and configuring a new shipping method in Dynamicweb on a general level.
Additionally, each shipping provider provided by Dynamicweb comes with a dedicated how-to outlining the setup process for that particular provider.
Basic Concepts
In this section, you will learn about:
- Creating a shipping method
- The Fee Rules shipping provider and how to use it
- The other shipping providers available to you, e.g. FedEx, GLS and Post Danmark ServicePoint, etc.
Creating a shipping method
To create a new shipping method:
- Go to Management Center > Ecommerce > Orders > Shipping
- Click New shipping in the toolbar (Figure 3.1)
This opens the shipping method window (Figure 3.2).
From here, you can:
- Name the shipping method – and optionally provide it with a description and an icon
- Select one or more countries that the shipping method should be available for
- Set a default fee if the provider does not return a value, and perhaps an order amount which will result in no shipping fee being charged
- Finally, select a shipping provider
When selecting a shipping provider, you can choose between selecting the default provider – Fee Rules – which allows you to define shipping fee rules and handle them on the Dynamicweb side of things, or an external shipping provider.
Calculating fees based on the delivery country
To calculate your shipping/payment fees based on the delivery country, and not the billing country, go to Management Center > Ecommerce > Advanced configuration > General and modify the fee calculation settings (Figure 4.1) to suit your purposes.
The Fee Rules Matrix
Some shipping providers – e.g. FedEx – return a shipping fee based on shipping fee parameters, such as service type, weight and size.
Some, however, don’t.
And for those we have the Fee Rules matrix (Figure 5.1), with which, you can assign shipping fees to orders based on various criteria, e.g. weight, volume, and so forth.
Alternatively, if you prefer to handle shipping on your own – or if you use an external delivery service not supported by Dynamicweb – you can use the Fee Rules matrix on its own with no shipping provider.
To configure the fee rules matrix:
- Activate it by selecting Use custom fee rules – or deactivate it by selecting Use fee rules from provider
- Set it to use either the lowest or the highest applicable fee
- Decide if both weight and volume must apply for a rule to trigger, or if either weight or volume is enough
- Create fee rules appropriate to your scenario
To create a fee rule, click the Click here to add a new row text to open the rule-window (Figure 5.2).
From here, you must:
- Name the rule and activate/deactivate it (as appropriate)
- Specify a timespan during which the rule is valid (can be triggered)
- Specify a fee – and a fee type (currency or percentage), as well as any weight and volume limits – e.g. $5 for orders below 10”x10”x10” under 10lb
You can also create rules limited to triggering for:
- Certain users, user groups or a particular customer number
- Certain shops, products or product groups
- Orders above a certain total price, or in a particular order context, country/region, currency or zip code
You need only create only the rules relevant for your shipping setup – so in reality, you won’t need to use all the options in the rules window but only those relevant for your setup.
Shipping Providers
In addition to the Fee Rules shipping provider, Dynamicweb provides a number of shipping providers integrating with external delivery services, such as GLS and FedEx.
An error occurred while attaching module (Dynamicweb.Frontend.Content)
System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'Providers_Keywords'.
Invalid column name 'Providers_Keywords'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at Dynamicweb.Data.Database.CreateDataReader(IDbCommand command, CommandBehavior behavior)
at Dynamicweb.Data.Database.CreateDataReader(CommandBuilder commandBuilder, IDbConnection connection, IDbTransaction transaction, CommandBehavior behavior, Int32 commandTimeout)
at Dynamicweb.Data.Database.CreateDataReader(CommandBuilder commandBuilder, IDbConnection connection, IDbTransaction transaction, Int32 commandTimeout)
at Dynamicweb.Content.Items.Queries.Repository.SelectByParentPageIds(IEnumerable`1 parentIds, Query query, Boolean includeParagraphs, Boolean includeChildItems, Boolean checkPermissions, Boolean includeInheritedItems)
at Dynamicweb.ItemPublisher.Frontend.GetItems()
at Dynamicweb.ItemPublisher.Frontend.List()
at Dynamicweb.ItemPublisher.Frontend.GetContent()
at Dynamicweb.Frontend.Content.GetModuleOutput(Paragraph paragraph, PageView pageview)
ClientConnectionId:e3def9fd-c0dc-4a16-b1a2-f9ebbcb57e17
Error Number:207,State:1,Class:16
System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'Providers_Keywords'. Invalid column name 'Providers_Keywords'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at Dynamicweb.Data.Database.CreateDataReader(IDbCommand command, CommandBehavior behavior) at Dynamicweb.Data.Database.CreateDataReader(CommandBuilder commandBuilder, IDbConnection connection, IDbTransaction transaction, CommandBehavior behavior, Int32 commandTimeout) at Dynamicweb.Data.Database.CreateDataReader(CommandBuilder commandBuilder, IDbConnection connection, IDbTransaction transaction, Int32 commandTimeout) at Dynamicweb.Content.Items.Queries.Repository.SelectByParentPageIds(IEnumerable`1 parentIds, Query query, Boolean includeParagraphs, Boolean includeChildItems, Boolean checkPermissions, Boolean includeInheritedItems) at Dynamicweb.ItemPublisher.Frontend.GetItems() at Dynamicweb.ItemPublisher.Frontend.List() at Dynamicweb.ItemPublisher.Frontend.GetContent() at Dynamicweb.Frontend.Content.GetModuleOutput(Paragraph paragraph, PageView pageview) ClientConnectionId:e3def9fd-c0dc-4a16-b1a2-f9ebbcb57e17 Error Number:207,State:1,Class:16