How to build a membership site in WordPress for Indian audiences
12 min read · 15-Apr-2024
villagehosting.in team
15 April 2024
A membership site lets you gate premium content behind a subscription or one-time payment. Courses, newsletters, communities, and resource libraries all use this model. WordPress has mature plugins for it — but the setup choices matter a lot for an Indian audience, particularly around payment gateways.
Membership vs LMS vs Community
Membership plugins restrict content. LMS plugins (Learning Management Systems like LearnDash or LifterLMS) add course structure, lesson tracking, and quizzes. Community plugins (BuddyPress, BuddyBoss) add social features. You can combine them — a membership plugin handling payments + an LMS handling the course experience is a common stack.
Choosing a membership plugin
MemberPress (₹14,000–40,000/year)
MemberPress is the most comprehensive WordPress membership plugin. It handles content restriction, subscriptions, drip content, and built-in course functionality (Courses add-on).
Strengths:
- Best-in-class access rules (restrict by post, page, category, custom post type, part of a post)
- Subscription plans with free trials, coupons, and grace periods
- Built-in affiliate program
- Works with Razorpay via unofficial integration or webhooks
Weaknesses:
- Expensive (starts at ~$179/year, paid in USD)
- Razorpay integration requires manual configuration
- No built-in multilingual support
Restrict Content Pro (₹10,000–25,000/year)
A simpler, developer-friendly option from the team behind Easy Digital Downloads.
Strengths:
- Clean code, well-documented
- Good for digital downloads + membership combinations
- Extensible via add-ons
Weaknesses:
- Less feature-rich out of the box
- Razorpay requires a third-party add-on
WooCommerce Memberships (₹15,000/year)
Best choice if you're already running WooCommerce for physical products or other digital sales.
Strengths:
- Integrates directly with WooCommerce — one checkout flow for everything
- Works with all WooCommerce payment gateways including Razorpay and PayU
- Content dripping, purchase notes, member discounts
- Pairs with WooCommerce Subscriptions for recurring billing
Weaknesses:
- Requires both WooCommerce Memberships and WooCommerce Subscriptions (separate licenses)
- More complex setup than dedicated membership plugins
- WooCommerce overhead if you only need memberships
Free options
Paid Memberships Pro has a free version with one membership level — good for testing the concept before investing in premium plugins. Supports Razorpay via add-on.
Ultimate Member focuses on community/profile features but has basic content restriction.
Payment gateway considerations for India
This is where most Indian membership site tutorials miss the point entirely. Global membership plugins default to Stripe and PayPal — neither is ideal for Indian customers.
Razorpay (recommended for Indian memberships):
- Supports UPI, net banking, credit/debit cards, EMI, and wallets
- Indian customers trust and recognise it
- Provides recurring billing (subscriptions) with proper RBI mandate compliance
- Integration: available as a WooCommerce payment gateway plugin (official) or Razorpay's WordPress plugin
PayU:
- Alternative to Razorpay
- Slightly better rates for some card types
- WooCommerce integration available
Stripe (for international subscribers):
- Works well for overseas customers paying in USD
- Poor experience for Indian customers (many banks block international transactions or require calling to enable them)
- If your membership targets Indian users, Stripe will cause checkout abandonment
Instamojo (for simple one-time payments):
- Good for one-time course purchases under ₹50,000
- Not suitable for recurring subscriptions
Offer both Razorpay and international options
If your membership appeals to both Indian and international audiences (e.g., a course for Indian diaspora), set up Razorpay as primary and Stripe as secondary. Let users choose at checkout. Indian users pick Razorpay; international users pick Stripe.
Step-by-step: WooCommerce Memberships setup
This is the recommended stack for Indian membership sites: WooCommerce + WooCommerce Memberships + WooCommerce Subscriptions + Razorpay.
1. Install required plugins
WooCommerce (free)
WooCommerce Memberships (paid)
WooCommerce Subscriptions (paid — for recurring billing)
Razorpay for WooCommerce (free official plugin)
2. Configure Razorpay
Install Razorpay's WooCommerce plugin. In WooCommerce → Settings → Payments → Razorpay, enter your:
- Key ID (from Razorpay dashboard)
- Key Secret (from Razorpay dashboard)
Enable "Automatic Payment Capture" and test with Razorpay's test mode credentials before going live.
For subscriptions, enable "Auto Debit" (Razorpay's recurring mandate feature). Indian banks require customers to approve an e-mandate via net banking or debit card OTP — Razorpay handles this flow automatically.
3. Create a subscription product
In WooCommerce, create a new product. Set the product type to Simple subscription (requires WooCommerce Subscriptions):
Product name: Monthly Pro Membership
Price: ₹499 / month
Sign-up fee: ₹0 (or add a one-time setup fee)
Free trial: 7 days (optional)
4. Create a membership plan
In WooCommerce → Memberships → Membership Plans → Add Plan:
Plan name: Pro Member
Products that grant access: [Select your subscription product]
Access:
- Restrict all posts in category "Premium Content"
- Restrict all pages tagged "members-only"
Content dripping: delay access to specific content by X days after sign-up
5. Restrict content
With the plan created, you can restrict content two ways:
Bulk restriction (recommended): In the plan's Members Area Rules, select content types or categories to restrict. All matching content requires this membership.
Per-post restriction: In the post/page editor, a "Membership" meta box appears. Select which plan grants access to this specific post.
Partial content restriction (teasers): Show the first 100 words of a post free, then prompt for login. In the plan settings, enable "Content dripping" and add teaser text.
Hosting requirements for membership sites
Membership sites have higher server requirements than standard WordPress sites:
Why: Every page load checks the current user's membership status against the database. WooCommerce subscription renewals run as background cron jobs. Member profiles and content dripping add database queries.
Shared hosting limitations:
- WooCommerce Subscriptions' cron jobs require reliable cron execution (at least every 5 minutes, preferably every minute)
- Shared hosting cron frequency is often limited to every 15–60 minutes
- Missed cron jobs mean subscriptions don't renew, content doesn't drip on schedule, and members get access errors
Recommended setup:
- VPS with 2–4 GB RAM
- Redis for WordPress object caching (caches membership status checks)
- PHP 8.2 with OPcache enabled
- Server cron (
crontab) running WP-Cron every minute
WP-Cron crontab entry:
* * * * * wget -q -O /dev/null "https://yourdomain.in/wp-cron.php?doing_wp_cron" 2>&1 | head -c0
Disable WP-Cron from auto-triggering on page load (add to wp-config.php):
define('DISABLE_WP_CRON', true);
Member experience: emails and account area
Transactional emails: Configure WooCommerce's email settings (WooCommerce → Settings → Emails). Membership events that trigger emails:
- New member signup
- Membership renewal reminder (7 days before)
- Payment failed
- Membership cancelled
Use a transactional email service (Mailgun, AWS SES, Postmark) instead of PHP mail. Hosting servers often have poor email deliverability.
Member dashboard: WooCommerce Memberships automatically adds a "Members Area" to the WooCommerce account page (/my-account/members-area/). Members can see their membership status, expiry date, and what content they have access to.
Protecting your content
PDF and file protection: Files uploaded to WordPress media library are publicly accessible by URL even if you've restricted the post. For protected downloads:
- Move files outside the web root (
/home/user/protected-files/) - Serve them via a PHP script that checks membership status before streaming
Or use a plugin like Easy Digital Downloads File Store, which handles protected file serving.
Video protection: Do not upload videos directly to WordPress — the media URLs are public. Options:
- Vimeo Pro (password-protected or domain-restricted embeds)
- Bunny.net Stream (affordable CDN video with token authentication)
- AWS CloudFront signed URLs
Copy protection: You cannot fully prevent determined users from copying content. JavaScript copy-protection is trivially bypassed. Focus on value-added experience (community, live sessions, direct access to you) rather than trying to lock down static content.
Pricing strategies for Indian markets
Indian audiences are more price-sensitive than Western markets. Strategies that work:
Annual discount: ₹499/month or ₹4,199/year (30% discount). Most serious members choose annual.
Founder pricing: Early-bird rate locked in for life — creates urgency and rewards early adopters.
INR pricing prominently: Show prices in ₹ first, not USD. USD pricing triggers mental conversion friction.
EMI via Razorpay: For courses priced above ₹5,000, enable EMI options. Razorpay shows EMI plans from multiple banks at checkout with no-cost EMI option.
Free tier: A free membership level with limited content lowers the barrier to sign up. Once someone is a registered member, converting to paid is easier than cold conversion.
A well-configured membership site on a reliable VPS handles hundreds of concurrent members. The plugin setup takes time but is a one-time investment — once operational, membership revenue can be largely automated.