Can I offer free shipping for orders over a certain amount?

Category: 
User
Topic: 
Features

Sure! Ubercart has a very flexible shipping quotes system that allows you to create all sorts of shipping options for your customers.

Offering free shipping for orders over a given dollar amount is a two step process. The first step is to set up the shipping method (or methods) you want to use for orders less than or equal to your cutoff amount. The second is to set up a Flat Rate shipping method to charge $0 for orders over your cutoff.

At admin/store/settings/quotes/methods you can enable the shipping method(s) you want to use. By default, there are no Flat Rate methods shown. Go to admin/store/settings/quotes/methods/flatrate and select "Add a new shipping method" to create a Flat Rate method called something like "Free Shipping for orders over $xxx" - the exact name doesn't matter, just use something meaningful to your customers. Set both the "Base Price" and the "Default product shipping rate" to zero and press "Submit". (If you want to also charge a flat rate for orders under your cutoff, you should now select "Add a new shipping method" again to create a second flat rate with the appropriate dollar amounts.)

Now that your shipping methods are set up, you'll have to configure Workflow-ng display each quote to the user only under certain conditions: Namely, when the order total is above or below your cutoff value.

On the admin/build/workflow-ng page, you will see a list of Active Workflow-ng configurations for each shipping method you've enabled. Click on the name of the shipping method, then click on "Add a condition". You will be presented with a select box of available conditions - select "Check the order total" and press the "Add" button. Fill in the "Order total value" textfield with your cutoff amount and select the appropriate radio button - either "Total is less than or equal to specified value" or "Total is greater than specified value". Pressing the "Submit" button will apply these changes to the quote method. Return to admin/build/workflow-ng and follow these same steps for all your active shipping methods.

When your customer checks out, the shipping options that appear will now depend on the order total. If you did everything right there should only be one option, "Free Shipping", shown if the order total is greater than your cutoff!

Joined: 02/16/2009
Juice: 11

Hello,

I did it exactly that. But, it sometimes works and sometimes it's no shipping costs calculated at all. In this case, not even "free shipping" is shown on the review-page.

What I found out is: It happens in case I'm not logged in, have enough items in my cart to get free shipping, continue to the review-page("free shipping" is shown, so perfect). Then I go back and drop something from the cart -> review-page: Now, nothing is shown, an no shipping is calculated, when I order.

Sometimes it also happened when I was logged out and had not enough items for free shipping and went directly to the review-page and: not shipping-anything was shown.

This happened also to a customer of mine, so it's a serious bug for me.

My Website is here: http://www.getvinyl.de

Please help.

BTW: Thanks for Ubercart.

Joined: 02/16/2009
Juice: 11

I couldn't find the problem but disabling the "taxes"-module solved it.

Joined: 02/27/2009
Juice: 53

There's no workflow-ng in Ubercart 2 (Drupal 6), so I installed the rules module which is the updated version.
But I can't find where to add a workflow to set free shipping if the total ammount is more than 500€ or if there's one of the products that get free shipping.

Any help will be appreciated!

Joined: 08/07/2007
Juice: 15046

Check out the first child page of this: What's new in Ubercart 2.x?

Joined: 02/27/2009
Juice: 53

Great! Using "Conditional Actions" I could do that!
Thanks

Joined: 07/31/2009
Juice: 5

Could you write a step by step on how you set up conditional actions to offer free shipping.
Thanks

Joined: 09/24/2008
Juice: 66

I just got this to work.

Basically, you need to set up 2 Flat rate shipping types. Each of those shipping types gets a "predicate" on the Conditional Actions page. Set up the predicates so that one has a condition of what qualifies for free shipping (or any other special shipping) and set up the other to have the opposite conditions. Then on the checkout page, the correct shipping type shows up.

Joined: 09/26/2009
Juice: 26

How can I inform the user that they qualify for the Free Shipping method before they are in the checkout page?

Joined: 11/13/2009
Juice: 10

My situation is similar, but opposite
[when "Getting shipping quote via (flatrate) standard nationwide" ]
- [if "number of items is greater than three"]
- - ["add $2 to the quote" (custom PHP)]

It looked like CA would be perfect, but no actions I add to the [when "Getting shipping quote via (flatrate) standard nationwide" ] is triggering, not even a condition-less "message to user"

I traced the code and started putting in debug logs, but it feels the quote calculation is a stand-alone action that's just not pulling any triggers.

So the intuative way didn't work.

I also tried the work-around from rosswog 10/19/2009
- create both an $8.00 and a $10.00 'flat rate'
- added a condition to the $8 to run if 3 or less
- added a condition to the $10 to run if more than 3

And after some fiddling that works!

Those default CAs provided by flatrate are a little confusing, because they don't contain any action - 'the get quote' uc_flatrate_ca_predicate() at the end of the process ... although they seem to just work anyway. But yes, putting conditions on them does work.
I tried weightquote as well, but tracing that showed the same thing.

Is uc_flatrate just not 100% integrated with the CA way of doing things?
uc_quote_request_quote() ->
_uc_quote_assemble_quotes() ->
... looks like it's calling ca_load_trigger_predicates('get_quote_from_
to find out IF to run, but does not follow up with the THEN do this. It ignores the user input and just does its own thing.
I'm thinking it needs to execute the #actions there.
And that uc_quote_action_get_quote() should be one of the actions - not inlined code.
...
.. yes, I patched that in and it's nicer.

Maybe I'll put an issue into d.o for this.