Three Useful B2B Features You May Not Know About

One of the great things I like about the SuiteCommerce Advanced platform is how flexible it is. Whether you sell to customers or businesses, SCA offers functionality appropriate for all kinds. If you run a B2B web store then you may not be aware of all the functionality that can enhance your site.

We include a number of useful features for B2B web stores out of the box, such as autocompleting search and the ability to quickly reorder items. However, there are some features that we provide that you may not have enabled or considered. With that in mind, I'm going to run through three pieces of functionality that might fit with your B2B site.


Quotes are a way for you, the vendor, to create an estimate cost of a transaction. It typically starts by the buyer indicating the items they want via a 'quote cart', and then submitting a request. This creates an Estimate record, which uses the Standard Quote form. This allows shoppers to then purchase from this quote.

The fact that this is self-service is appealing to both buyer and vendor. Without this functionality, the buyer would have to contact one of your reps, have a phone conversation and try to put something together. This way, they're free to do things in their own time and get what they want themselves.

As a buyer, you can minimize the amount of time your team has to spend with each customer. After all, if a user is able to log in and create a quote, they must have already contacted your organisation and had an account set up. You only get involved when you need to.

We've detailed all the steps required to set this up in the developer documentation, so let me summarize the steps below:

#1 Get the Bundles

First and foremost, if you're not running Mont Blanc or newer than you will need to. This means updating your bundles and getting the code for the quote functionality.

There's also another bundle we recommend: Reference Product List Records. We suggest getting this because makes the lists the buyer generate persistent. Without this bundle, any items the user selects will be lost if they leave the site before generating a quote.

#2 Edit Role Permissions

The Customer Center rule needs to be customized so that they have the ability to create estimates (quotes), not just view them.

The important thing to keep in mind when customizing a role is that you're not editing the original role, instead you're creating a clone of it with the modifications you want. This role can then be assigned to the buyers who you want to be able to create quotes. This can be done individually and manually, or you can generate a CSV of customers and assign the role in bulk.

#3 Set up Search Fields and Field Set

In order for buyers to be able to search for the products they want, you need to configure how they're able to search and the data that is returned to the templates from the results. This means defining what search fields and field sets are available.

If your site is already running Mont Blanc or newer, the Items Searcher field set may already be set up.

#4 Set up the Forms

As previously mentioned, quoting works on the back of NetSuite's estimates functionality — it operates like a self-service frontend to it, in fact. To accommodate this, you need to modify the standard form it uses as, by default, it will not allow the buyer to modify the shipping address. To do this you'll need to modify the Standard Quote form

#5 Configurate Associated Files

In Modules > SspLibraries > SuiteScript > Configuration.js are three configuration values that may need to be overridden. They are:

  1. quote > days_to_expire — determines the length of time that the quote is active for. If it is not acted on before this time, it expires and cannot be converted into a sales order. By default this is set to 7.
  2. quote > purchase_ready_status_id — the ID used in the backend for the status the sales representative must give the quote before the buyer can convert it into an order. By default we recommend 12, which is the Purchasing status.
  3. quote_to_salesorder_wizard > invoice_form_id — the ID of the form used to generate the sale order from the quote. For this, you need to use the Standard Sales Order - Invoice form. The default is 68.

There are additional configurations you can make, for example with the details of your sales reps, or for the disclaimer message. You'll probably want to change this information, but it's not mandatory to get the code to work.

#6 Testing and Troubleshooting

You'll probably need or want to make some modifications to your templates and styling, but it's good to test.

A note on the sales order creation workflow: a number of things must be in place before a buyer can convert a quote into a sales order. The following requirements must be met:

  1. The buyer must have the correct Customer Center role permissions, a shipping address and method
  2. The merchant must have a sales representative assigned to the quote
  3. The quote must not contain gift certificates
  4. The quote's status must be set to the one defined in the purchase_ready_status_id property
  5. An invoice/transaction form must be defined, which is used to convert the estimate to a sales order

Some feedback is given to the buyer as to why they can't convert their quote into a sales order. For example, because the sales rep hasn't changed the status of the quote, I see the following:

Note the Review and Place Order button is disabled, preventing the buyer from attempting to convert it to a sales order.

So, in summary, the quotes functionality is a great way to automate some of the estimation to sales order process, common in B2B web stores. My letting your buyers do some of the work themselves, this gives them the freedom to take their time and enjoy the benefits typical in B2C sites while your sales team can focus on more important things.

Website Access Restriction

This comes in two flavours: entire access restriction, and restriction of prices. Restricting access to your site can offer a number of benefits:

  1. Users must register, and thus submit personal/business information to you before they can shop. This de-anonymizes your visitors, so you know who's visiting, and also means that you can enforce some of sort of approval workflow; in other words, you can pick and choose who can browse your site.
  2. Protect yourself from competitors and search engines. Generally, we recommend improving your openness and likelihood of discovery, but some business don't operate that way and don't want to reveal everything that's in their inventory or how much it costs.
  3. You may restrict your pricing if you don't really have a 'common' rate at which you sell your goods. For example, you may have special customers who fall into many different pricing groups, and you don't want to show them prices unless they are specifically the ones they're going to pay. The only way to do this is to restrict pricing.

Let's talk about each of these.

Password Protected Site

When you password protect your site, you require users to be logged in before they can see anything on your site. Whenever they access a URL on the site, they will automatically be redirected to the login page.

Refer to the documentation to set this up but, to summarize, in order to enable this feature, you'll need to override the passwordProtectedSite value in Modules > SspLibraries > SuiteScript > Configuration.js, setting it to true.

If you do go down this route, I'd recommend putting time into customizing your login page. This effectively becomes your homepage, as all new and logged-out visitors, so I'd certainly make an effort to make it accommodating. For example, you should probably have a message stating that only registered users can browse the site.

Password Protected Pricing

Also known as Log In To See Pricing, you can restrict pricing information to registered users only. Visitors can visit your site like normal, except every price is replaced with a link to the login page.

Doing this is useful if you wish to force customers to register, hide your prices from search engines, or make it harder for your competitors or wholesalers to see your prices.


Just a couple of notes to say that, firstly, again, you'll need to be running Mont Blanc or newer to take advantage of this feature. And, secondly, the Search API is public and contains all of the information exposed by the field set — if a user knows a URL for a part of your site that uses the Search API, they will be able to access some of this information.

Multiple Shipping Addresses

Although a useful B2C feature, MST allows shoppers to send items or groups of items to separate shipping addresses. The reason I think this could be a useful B2B feature is because many business operate from more than one premises. For example, a buyer may want to send some of their order to the back office, some items to the warehouse, some may even to their home. Rather than having order multiple times, or have it delivered all to one place, they have the flexibility to request that the order be split across multiple locations.

Again, you should refer to the documentation around this. However, let me summarize the steps:

Firstly, there are two things you need to do in NetSuite: one is to enable the Multiple Shipping Routes feature, and the other is to configure your site record so that it uses the Standard Sales Order type.

Secondly, you need to enable the feature in the backend configuration file. You'll need to create an override file, which changes the isMultiShippingEnabled value in Modules > SspLibraries > SuiteScript > Configuration.js, setting it to true.

When that is done, you should see the option appear on your checkout page, eg:

Note that before you proceed with implementing this functionality, you should be aware of the limitations around it. To summarize the documentation:

  • Shoppers can't use both promo codes and MST on the same order
  • Only one shipping method can be used per shipping address
  • There is a performance impact if you use real-time shipping rates, which is exacerbated by MST
  • Minimum quantity amounts are defined per shipping package, not per order
  • Scriptable carts and customized online forms are not compatible with MST


We consider SuiteCommerce Advanced to be the ideal platform for both B2B and B2C web stores. I've listed just three of the great features that are available to B2B web stores, though there are a lot of great things available to you.

The reason I've highlighted quotes, access restriction and MST is because these are disabled by default and can affect a big change in behavior on the site. Therefore, you should think carefully before using them on your site.

Further Reading

What B2B features do you use on your B2B site?