How to make drupal a paid membership/subscription site

This is a quick how-to article on making drupal website a paid membership website (subscription). This is a very important feature and it can help you make money using  drupal website or blog. You can use UberCart or Drupal commerce to grant memberships. I am giving the steps below for UberCart.  Generally Paid websites collect some more personal info from a user on registration by adding fields in Administer » User management » Profiles page. You can do that if you like. 

Steps using UberCart Module 

Step 1 – Let’s start with what modules can be used , you can download and install these modules in your Drupal website.

  1. 1.       Ubercart -
  2. 2.       Ubercart recurring -
  3. 3.       UberCart Payment Gateway module , whichever you plan to use.
  4. 4.       Auto assign roles
  5. 5.       Node limit number – In case you want to limit number of nodes 

Step 2- You will have to create a role for your Free users and Paid users. Free users anyway have a role, auto assigned so you only need to create a role for paid users. Goto Administer » User management » Roles. You can have multiple membership levels in your website. Say Free, Paid member monthly, Paid member yearly etc. Auto Assign role module will assign the free members. Lets say you have following membership types.

  • 1.       Free Membership – read all content and post X nodes (create limit done with node limit number module - )
  • 2.       Mem1 – read all content, post unlimited nodes of type 1
  • 3.       Mem2 – read all content, post unlimited nodes of type 1 and 2

Through the  permissions page you can setup appropriate access, read, create and edit permissions to the different membership types “roles”

Step 3- Create term like “Paid member” for Ubercart catalog in Administer » Content management » Taxonomy » Catalog » Add term

Goto Administer » Store administration » Configuration » Product settings >> Product features  and Change “Role assignment settings” and “Recurring fee settings”

If you setup the role expiration correctly in role assignment settings, the access to that membership will be taken away “1 month” after last payment. If you setup the recurring setting correct, the user will be notified “5” days before membership expires, asking to renew membership, and same process follows. If you setup the settings correct in role assignment settings, the user will be able to buy 3, 4, 5 months and pay in advance.

Step 4 - Create product for a membership type in Administer » Content management » Create content » Product

  • ·         Once product is created, Edit that product. Choose features tab on the top of the page
  • ·         Add new feature – role assignment and make appropriate settings there
  • ·         Add new feature – recurring fee and make appropriate settings there
  • ·         Go through all Ubercart’s settings and make appropriate changes where needed.

You can now create a block asking the free members to upgrade to Paid membership and showcase them the benefits. This block will link to Ubercart Catalog index page. Ensure that you make this block visible to all users. There is a challenge ,, that unregistered or anonymous users will not be able to see that block. This is because of ubercart’s cart that gives problems with anonymous user checkout. You will have to force users to register first and then buy the desired membership.

You will need to setup the upgrade now block such that they can see it on every page and realize the benefits of upgrading. Its like selling a product.  The block link will take them to the catalog page where they can choose between the membership types. Writing the sales pitch and product description is totally upto you. 

User can make the payment through payement gateway and finish the checkout process. Ubercart will grant them the role if payment has been done successfully.

References - Watch this Video 

Steps using Drupal Commerce

Using Drupal commerce you can also assign memberships. You will need module and Membership Entity Commerce module. See the links below for options.