Hyphen User Guides

Reader Management System

Complete guide to reader registration, subscriptions, institutional access, sessions, GDPR compliance, and reader portal

Version 1.0|Updated 2026-04-12|Operations Teams, Customer Success Teams, Admin Users

1. Simple Feature Overview

The Reader Management System is the central hub for managing everyone who reads content on Hyphen. It covers the complete reader lifecycle — from the moment a person signs up, through their subscription journey, all the way to account deletion if they choose to leave.

What You Can Do

CapabilityWhat It Means
Reader RegistrationReaders sign up via email/OTP, Google, or Facebook on the Reader Portal
Reader DirectoryBrowse, search, filter, and manage all readers from the Admin Console
Profile ManagementView and edit reader profiles, including personal information and account status
Subscription PlansCreate and manage subscription tiers (Digital Only or Print+Digital) with pricing and features
Subscription AssignmentGrant complimentary subscriptions, manage upgrades, cancellations, and renewals
Gift SubscriptionsTrack gifted subscriptions from purchase through activation
Institutional SubscriptionsManage institution-wide access with seat-based licensing and user invitations
Bulk SubscriptionsHandle large subscription requests with seat allocation and email processing
Session ManagementMonitor reader devices, revoke sessions, configure security settings
NotificationsReaders receive notifications for new issues, renewals, content, and comments
Email PreferencesReaders control what emails they receive — newsletters, reminders, promotions
Bookmarks & HistoryReaders save articles and track their reading progress
GDPR ComplianceExport reader data, anonymize accounts, and handle deletion requests
Reader ModerationBan/unban readers, moderate comments, manage reports
Future Readers ProgramManage student enrollments, institutes, and discount programs

How the Reader Journey Works

Reader visits Reader Portal

Signs up with email/OTP, Google, or Facebook → Free account created

Optionally subscribes to a plan → Becomes a Subscriber

Reads content, saves bookmarks, comments on articles

Admin monitors engagement, handles support, manages subscriptions

Reader manages their own account, preferences, and sessions

If needed: GDPR export, account deletion, or anonymization

2. Who Should Use This Feature

RoleWhat You'll Do
Operations TeamMonitor reader metrics, manage the reader directory, handle subscription issues, process bulk requests
Customer SuccessHelp readers with account problems, grant complimentary access, troubleshoot login/session issues, handle GDPR requests
QA TeamTest registration flows, verify subscription behavior, validate notification delivery, check Reader Portal pages
Admin UsersConfigure subscription plans, session settings, moderation rules, and RBAC permissions
Marketing TeamView reader growth metrics, manage the Future Readers Program, track subscription conversions
Finance / BillingReview payment history, track revenue metrics, manage refunds
Readers (self-service)Register, manage their profile, subscriptions, bookmarks, sessions, preferences, and account deletion via the Reader Portal

3. Before You Begin

Prerequisites Checklist

StepWhat to CheckWhere to Check
1. Admin accountYou have an Admin Console login with the appropriate permissions (see Section 5.17 for required permissions)Ask your Admin to create your account under Settings → Admin Users
2. Subscription plansAt least one subscription plan exists and is activeReaders → Subscriptions in Admin Console
3. Payment gatewayRazorpay and/or Stripe credentials are configured if you need paid subscriptionsSettings → Payment Settings — your DevOps team sets this up
4. Email/SMTPEmail sending is configured for OTP delivery, password resets, and notificationsSettings → Email Settings — confirm SMTP is working
5. Reader PortalThe Reader Portal is deployed and accessible to readersVisit your Reader Portal URL and confirm the login page loads
6. Session settingsSession timeout, device limits, and security settings are configuredSettings → Sessions in Admin Console
7. Moderation settingsComment moderation rules and profanity filters are configured (if comments are enabled)Readers → Moderation → Settings tab
8. OAuth providersGoogle and/or Facebook OAuth are set up (if you want social login)Your DevOps team configures OAuth credentials

Important: Subscription plans must be created before you can assign subscriptions to readers. Payment gateways must be configured before readers can purchase subscriptions on their own. Email/SMTP must work before OTP login, password resets, and notifications will function.

Dependencies Between Modules

If You Want To...You Also Need...
Let readers sign up with OTPEmail/SMTP configured
Let readers sign up with Google/FacebookOAuth provider credentials configured
Let readers purchase subscriptionsAt least one active subscription plan + Razorpay/Stripe configured
Send renewal remindersEmail/SMTP configured + automated tasks running
Grant complimentary subscriptionsAt least one active subscription plan created
Set up institutional subscriptionsInstitutions module configured under Sales → Institutions
Send push notificationsVAPID keys configured (DevOps)
Process gift subscriptionsAt least one plan with "Allow Gift" enabled
Print magazine deliveryMagazine schedule configured + print delivery settings on subscription plan

4. Key Terms in Simple Language

TermWhat It Means
ReaderAnyone who has an account on the Reader Portal — they may be a free user or a paying subscriber
SubscriberA reader who has an active subscription plan (paid, complimentary, gift, or institutional)
Free ReaderA registered reader without a subscription — they can access free content, bookmark articles, and comment
TierThe access level of a reader: Free, Registered, Subscriber, Institutional, or Admin
Subscription PlanA predefined package (e.g., "Monthly Digital" or "Annual Print+Digital") with specific pricing and features
Complimentary SubscriptionA subscription granted manually by an admin at no cost to the reader — e.g., for authors, partners, or promotions
Gift SubscriptionA subscription purchased by one person (the buyer) for another person (the recipient)
Institutional SubscriptionA subscription purchased by an organization (university, library, company) that gives access to multiple readers (seats)
Bulk SubscriptionA large subscription request (multiple seats) handled through a negotiation and fulfillment process
OTPOne-Time Password — a 6-digit code sent to the reader's email for login verification
SessionA record of a reader being logged in on a specific device or browser
Device LimitThe maximum number of devices a reader can be logged in from at the same time
RenewalWhen a subscription period ends and the next billing cycle begins automatically
ChurnWhen a subscriber cancels or lets their subscription expire
GDPRGeneral Data Protection Regulation — privacy rules that give readers the right to access, export, and delete their personal data
AnonymizationPermanently removing all personal information from a reader's account (email is hashed, name/phone/profile are erased) — this cannot be undone
Data ExportDownloading all of a reader's data as a JSON file — includes profile, subscriptions, bookmarks, comments, and reading history
BanBlocking a reader from accessing the platform — can be temporary or permanent
ModerationReviewing reader comments and reports to enforce community standards
EntitlementA specific feature or access right included with a subscription plan (e.g., unlimited access, archive access, print delivery)
Billing PeriodHow often a subscription is charged: monthly, quarterly, annual, or one-time
Past DueWhen a subscription payment has failed but the subscription hasn't been cancelled yet
Magazine ScheduleA calendar of print magazine delivery dates for Print+Digital subscribers
Future Readers ProgramA program offering discounted or free subscriptions to students through competitions or verified student discounts

5. Step-by-Step Setup Guide

5.1 Reader Registration and Login Flows

Readers create their accounts on the Reader Portal (not the Admin Console). There are several ways to sign up and log in.

How a Reader Registers (Reader Portal)

  1. The reader visits the Reader Portal and clicks "Don't have an account?" (or navigates to /register).
  2. They see the "Create your account" page with these benefits listed:
    • Save articles to your bookmarks
    • Comment on articles
    • Weekly newsletter with top picks
    • Access to free content library
  3. They fill in:
    • Full name (optional)
    • Email address (required)
    • Subscribe to our weekly newsletter checkbox (checked by default)
    • I agree to the Terms of Service and Privacy Policy checkbox (required)
  4. They click "Create Account".
  5. A 6-digit OTP is sent to their email.
  6. They enter the OTP on the verification screen and click "Verify & Sign In".
  7. Their account is created and they are logged in.

Alternative — Social Sign-Up:

  • The reader can click "Sign up with Google" or "Sign up with Facebook" instead.
  • They must accept the Terms of Service checkbox before social sign-up buttons become active.
  • A message appears: "Please accept the terms above to use social sign-up" if they try to click before accepting.

How a Reader Logs In (Reader Portal)

  1. The reader visits the Reader Portal and navigates to /login.
  2. They see the "Welcome back" page.
  3. They enter their email address and click "Send OTP".
  4. A 6-digit OTP is sent to their email.
  5. They enter the code and click "Verify & Sign In".
  6. They are logged in.

Alternative — Social Login:

  • Click "Sign in with Google" or "Sign in with Facebook".

Alternative — Password Login:

  • If the reader has set a password (e.g., through password reset), they can use email + password to log in.

Forgot Password Flow

  1. From the login page, the reader clicks "Forgot your password?".
  2. They enter their email address and click "Send Reset Link".
  3. They see: "If an account exists for [email], you'll receive a password reset link shortly."
  4. They check their email for the reset link.
  5. They click the link, which takes them to the "Reset your password" page.
  6. They enter a new password that meets the requirements:
    • At least 8 characters
    • Contains a letter
    • Contains a number
  7. They confirm the password and click "Reset Password".
  8. They see a success message and can click "Sign in" to log in with their new password.

Tip: The reset link expires after a set period. If the reader's link has expired, they'll see an "Invalid Reset Link" message and can request a new one.


5.2 Reader Directory and Profile Management in Admin Console

Readers overview dashboard
1
2
3
The Readers overview — a snapshot of reader growth, subscription health, and engagement
1Reader Growth — new registrations and active reader trends
2Subscription Health — active vs expired subscriptions
3Engagement metrics — reading activity and session data

The Reader Directory is where admin users browse and manage all registered readers.

Accessing the Reader Directory

  1. Log in to the Admin Console.
  2. Click "Readers" in the sidebar.
  3. You'll see the Readers Overview dashboard with key metrics:
    • Reader Growth: Total Readers, New This Week, New This Month, Growth Rate
    • Subscription Health: Active Subscribers, Churn Rate, Trial Conversions, Avg Subscription Value
    • Engagement: Active Today, Avg Session Duration, Articles Read Today, Comments Today
    • Moderation Snapshot: Pending Comments, Flagged Items, Open Reports, Banned Users
  4. Click "Reader Directory" (or navigate to Readers → Directory).

Browsing and Filtering Readers

On the Reader Directory page, you'll see:

  • Stats Cards at the top: Total Readers, Subscribers, Institutional Users, New This Month
  • Search bar — search by name or email
  • Filter dropdowns:
    • Status: All Status, Active, Inactive, Banned, Pending Verification
    • Tier: All Tiers, Free, Registered, Subscriber, Institutional
    • Subscription Status: All, Active, Cancelled, Expired, Past Due, Trial, Complimentary
  • Clear Filters button to reset all filters

The reader list shows a table with columns:

  • Name — the reader's display name
  • Email — their email address
  • Tier — their access level (Free, Registered, Subscriber, Institutional)
  • Status — their account status (Active, Inactive, Banned, Pending Verification)
  • Joined Date — when they registered
  • Last Login — when they last logged in
  • Actions — View (→), Ban, Delete

Viewing a Reader's Profile

  1. In the Reader Directory, click the View (→) button on any reader row.
  2. You'll see the Reader Details page with breadcrumbs: Readers → Directory → [Reader Name].

The page includes:

User Summary Card (always visible at top):

  • Avatar with initials
  • Status badge (Active / Inactive / Banned / Pending Verification)
  • Tier badge (Free / Registered / Subscriber / Institutional / Admin)
  • Trusted badge (if applicable)
  • Edit Profile button
  • Quick stats: Member since, Last login, Total logins, Comments

Action Buttons (top right):

  • Refresh — reload reader data
  • Grant Subscription — appears if the reader has no active subscription and is not institutional
  • Reset Password — sends a password reset email to the reader
  • Ban Reader / Unban — depending on current status

Profile Information Card:

  • Bio, Location, Website, Joined date, Last login, Total logins, Comment count

Subscription Card:

  • Plan name, Status badge (Active / Past Due / Cancelled / Complimentary)
  • Start date, Renewal/End date, Payment method
  • Actions: Extend subscription, Cancel subscription

Institutional Subscription (if applicable):

  • Institution name, Access dates, Seat count

Devices List:

  • Each device shows: Device name, Last seen date, Revoke button

GDPR Actions:

  • Export Data — downloads all reader data as a JSON file
  • Anonymize — permanently removes all personal information (requires confirmation)

Editing a Reader's Profile

  1. On the Reader Details page, click "Edit Profile" in the User Summary Card.
  2. Edit the reader's name and email inline.
  3. Save your changes.

Note: You cannot change a reader's password directly. Use the "Reset Password" button to send them a reset link.

Exporting the Reader Directory

  1. On the Reader Directory page, click the Export button (download icon) in the top right.
  2. A file containing the filtered reader list will download.
  3. This requires the USERS_EXPORT permission.

5.3 Create and Manage Subscription Plans

Subscription plans
Create and manage subscription plans with pricing tiers, access levels, and billing intervals.

Subscription plans define what readers get when they subscribe. You must create at least one plan before readers can subscribe.

Viewing Existing Plans

  1. Navigate to Readers → Subscriptions in the Admin Console sidebar.
  2. You'll see the Individual Subscriptions page with:
    • Key Metrics: Active Subscribers, New This Month, Churned This Month, Monthly Revenue
    • Revenue Metrics: Annual Recurring Revenue, Avg Revenue Per User, Trial Conversions, Conversion Rate
    • Subscription Plans section showing all plans in a card grid

Each plan card shows:

  • Plan name and display name
  • Plan type (Digital Only / Print+Digital)
  • Price (monthly and/or annual)
  • Features list
  • Subscriber count
  • Edit and Delete buttons
  • Active/Inactive toggle

Creating a New Plan

  1. Click the "Add Plan" button (+ icon) in the top right.
  2. A slide-out panel appears: the Plan Editor.
  3. Fill in the following sections:

Basic Info:

FieldWhat to Enter
Plan Name (required)Internal name (e.g., "monthly_digital") — not shown to readers
Display NameWhat readers see (e.g., "Monthly Digital")
DescriptionA short description of the plan
Plan TypeChoose DIGITAL_ONLY or PRINT_DIGITAL
CurrencyINR or USD
Sort OrderNumber that controls display order on the pricing page

Pricing:

FieldWhat to Enter
Price One TimeOne-time purchase price (in smallest currency unit — paise for INR)
Price MonthlyMonthly subscription price
Price AnnualAnnual subscription price
Duration in MonthsHow long the subscription lasts

Features & Entitlements:

FieldWhat to Enter
Display FeaturesA list of benefits shown to readers (e.g., "Unlimited access to all articles"). You can highlight key features
Access FeaturesToggle: Unlimited Access, Archive Access, Includes Print
Device FeaturesMax Devices (1–10), Offline Reading toggle

Options:

FieldWhat to Enter
Allow GiftToggle on if this plan can be purchased as a gift
Is EmphasizedToggle on to highlight this plan on the pricing page
Archive AccessToggle on to give access to archived content
Archive Issue CountNumber of archived issues accessible

Integration:

FieldWhat to Enter
Razorpay Plan IDThe corresponding plan ID from your Razorpay dashboard (needed for payment processing)
  1. Click "Save" to create the plan.

Editing an Existing Plan

  1. On the Subscriptions page, find the plan card and click "Edit".
  2. The Plan Editor opens with the current values pre-filled.
  3. Make your changes and click "Save".

Activating or Deactivating a Plan

  • Use the Active/Inactive toggle on the plan card.
  • Inactive plans are not shown on the public pricing page.
  • Existing subscribers on an inactive plan are not affected.

Previewing the Pricing Page

  • Click "Preview Pricing Page" in the top right to see how plans appear to readers on the Reader Portal.

5.4 Assign, Upgrade, and Cancel Subscriptions

Granting a Complimentary Subscription

Use this when you want to give a reader free access — for example, for an author, partner, VIP, or promotional access.

  1. Navigate to Readers → Directory.
  2. Find the reader and click View (→) to open their profile.
  3. Click the "Grant Subscription" button (visible only if the reader has no active subscription and is not institutional).
  4. A modal appears: "Grant Subscription" with the message "Manually assign a complimentary subscription to [Reader Name]."
  5. Fill in:
FieldWhat to Enter
Subscription PlanSelect a plan from the dropdown (auto-populated with active plans)
DurationChoose: 1 Month, 3 Months, 6 Months, or 1 Year
ReasonEnter a reason (e.g., "Author complimentary access", "Partner promotion")
  1. Click "Grant Subscription".
  2. The reader's tier changes to Subscriber and their subscription status shows as Complimentary.

Extending a Subscription

  1. Open the reader's profile in Admin Console.
  2. In the Subscription card, click "Extend subscription".
  3. Select the extension duration.
  4. Confirm the extension.

Cancelling a Subscription (Admin Side)

  1. Open the reader's profile in Admin Console.
  2. In the Subscription card, click "Cancel subscription".
  3. Confirm the cancellation.
  4. The reader keeps access until the end of their current billing period.
  5. After that, their tier changes back to Free or Registered.

How a Reader Cancels Their Own Subscription (Reader Portal)

  1. The reader logs into the Reader Portal.
  2. Navigates to Account → Subscription (via the sidebar).
  3. Under "Manage Subscription", clicks "Cancel Subscription".
  4. A confirmation dialog appears: "Are you sure you want to cancel your subscription? You will continue to have access until the end of your current billing period on [date]."
  5. The reader clicks "Yes, Cancel".
  6. Their subscription shows as "Cancels on [date]" until the period ends.
  7. They can click "Keep Subscription" to change their mind before the period ends.

5.5 Gift Subscriptions

Gift subscriptions allow one person to purchase a subscription for another person.

Managing Gift Subscriptions in Admin Console

  1. Navigate to Readers → Subscriptions → Gifts (or click the gifts link on the Subscriptions page).
  2. You'll see the Gift Subscriptions page with:
    • Search bar — search by buyer name, recipient email, or gift ID
    • Status filter: All Statuses, Pending Payment, Paid, Sent, Activated, Expired

Gift Subscription Lifecycle

StatusWhat It Means
PENDING_PAYMENTGift has been created but not yet paid for
PAIDPayment received — ready to send to recipient
SENTGift notification/email sent to recipient
ACTIVATEDRecipient has activated the gift and has an active subscription
EXPIREDGift was not activated before the expiration date

Viewing Gift Details

  1. Click the View button (eye icon) on any gift row.
  2. A slide-over panel shows:
    • Status badge and Gift ID
    • Amount (highlighted card)
    • Buyer section: name and email
    • Recipient section: name, email, phone, address
    • Gift Message (if the buyer included one)
    • Plan details
    • Timeline: Created, Paid, Sent, Activated, Expires dates
    • Linked Subscription (if activated — shows reader details and period)
    • Payment Reference ID

Changing Gift Status (Admin Action)

  1. In the gift detail panel, scroll to "Admin Actions".
  2. Click the appropriate status button to move the gift to the next stage.
  3. For example, if a gift is PAID but was not automatically sent, you can manually change it to SENT.

Important: Only plans with the "Allow Gift" option enabled can be used for gift subscriptions. Check this in the Plan Editor.


5.6 Institutional Subscriptions and Reader Access

Institutional subscriptions
The Institutions page shows all institutional subscribers with subscription details, seat counts, and management actions.

Institutional subscriptions give organizations (universities, libraries, companies) access for multiple readers.

Where to Manage Institutions

  • Navigate to Sales → Institutions in the Admin Console sidebar.
  • The old path Readers → Subscriptions → Institutional redirects here.

Creating an Institutional Subscription

  1. Go to Sales → Institutions and click "Add Institution".
  2. Fill in the institution details:
FieldWhat to Enter
NameInstitution name (e.g., "Delhi University")
TypeUniversity, Library, School, Corporate, Nonprofit, or Other
Contact NamePrimary contact person
Contact EmailContact email address
Contact PhoneContact phone number
AddressInstitution address
GSTINGST registration number (for Indian institutions)
PAN NumberPAN number (for Indian institutions)
Billing AddressBilling address details
SeatsNumber of reader accounts included
PlanSelect a subscription plan
Start DateWhen access begins
End DateWhen access expires
Total AmountTotal contract value
  1. Save the institution.

Inviting Readers to an Institution

  1. Open the institution's detail page.
  2. Go to the Users tab.
  3. Click "Add User" or "Invite" to add individual readers.
  4. To invite multiple readers at once, click "Send Bulk Invitations" and enter the email addresses.
  5. Each invited reader receives an email with an activation link.

How an Invited Reader Activates Their Account

  1. The invited reader receives an email with an activation link.
  2. They click the link and see the "Activate Your Account" page showing: "You've been invited to join Hyphen through [Institution Name]."
  3. If they don't have an existing account:
    • They see their name and email (pre-filled from the invitation).
    • They create a password (minimum 8 characters, must contain a letter and a number).
    • They confirm the password and click "Create Account".
  4. If they already have a Hyphen account:
    • They see: "An account already exists with this email."
    • They click "Link My Account" to connect their existing account to the institutional subscription.
  5. After activation, they see: "Welcome to Hyphen! Your account has been activated. You now have full access to Hyphen through your institutional subscription."
  6. They click "Sign In to Get Started".

Renewing an Institutional Subscription

  1. Open the institution's detail page.
  2. Click "Renew".
  3. Update the end date, seats, and amount as needed.
  4. Save the renewal.

5.7 Bulk Subscription Requests

Bulk subscriptions handle large orders (multiple seats) that require negotiation and manual processing.

Viewing Bulk Requests

  1. Navigate to Readers → Subscriptions → Bulk (or the bulk subscriptions link).
  2. You'll see the Bulk Subscription Requests page.
  3. Filter by status: Pending, Negotiating, Approved, Processing, Completed, Rejected.

Bulk Request Lifecycle

StatusWhat It Means
PendingNew request received — needs initial review
NegotiatingIn discussion with the requester about pricing/terms
ApprovedTerms agreed — ready to process
ProcessingSubscriptions are being created
CompletedAll subscriptions created and delivered
RejectedRequest was declined

Processing a Bulk Request

  1. Click View on an approved request.
  2. Click "Process" (only available for approved requests).
  3. A processing modal appears showing:
    • Contact name and seat count
    • Plan assigned
  4. In the Recipient Emails text area, paste the email addresses — one per line or comma-separated.
    • Tip: "Paste emails from your Excel file. One email per line, or comma-separated."
  5. Click "Process".
  6. The system shows results:
    • Created: number of subscriptions successfully created
    • Skipped: emails that already have subscriptions
    • Errored: any failures

Editing a Bulk Request

  1. Click Edit on a request.
  2. Update the Status, Negotiated Amount (in INR), or Notes.
  3. Click "Save".

5.8 Reader Account Pages in Reader Portal

When a reader logs in to the Reader Portal and visits their account, they see a sidebar with these pages:

PageWhat It Shows
ProfilePersonal information, account security, and the Danger Zone (account deletion)
SubscriptionCurrent plan details, benefits, print schedule, payment history, and management options
BookmarksArticles saved for later
Reading HistoryRecently read articles with progress tracking
NotificationsSubscription, content, and system notifications
SessionsActive device sessions with sign-out options
PreferencesContent topics, email notifications, reading display, and data privacy

Profile Page

The reader sees their:

  • Avatar (from linked social account or initials)
  • Display Name — editable, max 100 characters. Help text: "This is how your name will appear on comments and your public profile."
  • Bio — editable, max 500 characters with counter
  • Location — editable (e.g., "Mumbai, India")
  • Website — editable URL field
  • Account Security section showing email (with Verified badge) and password status
  • Danger Zone section with "Delete Account" option

Subscription Page

The reader sees:

  • Current Plan card with status badge (Active / Past Due / Cancelled / Expired / Trialing / No subscription)
  • Plan details: name, type (Individual / Institutional / Gift / Complimentary), billing period, cancellation status
  • Print Delivery Schedule (if their plan includes print) — shows upcoming and past deliveries with status (Scheduled / Processing / Shipped / Delivered)
  • Your Benefits — checkmark list of included features (e.g., "Unlimited access to all articles", "Full digital archive access")
  • Manage Subscription — buttons for "Change Plan" and "Cancel Subscription"
  • Payment History table with Date, Description, Amount, and Status (Paid / Pending / Failed)

If the reader has no subscription, they see: "You don't have an active subscription." with a "View Plans & Subscribe" button.


5.9 Bookmarks, Reading History, and Preferences

Bookmarks (Reader Portal)

  • Readers save articles by clicking the bookmark icon on any article page.
  • The Bookmarks page (Account → Bookmarks) shows all saved articles.
  • Each bookmark displays: section tag, read time, article title (clickable), excerpt, author name, and thumbnail image.
  • Readers can click "Remove" to delete a bookmark.
  • If no bookmarks: "No bookmarks yet. Save articles you want to read later by clicking the bookmark icon." with a "Browse articles" link.

Reading History (Reader Portal)

  • Reading history is tracked automatically when a reader opens an article.
  • The Reading History page (Account → Reading History) shows articles grouped by date (Today, Yesterday, X days ago, or the date).
  • Each entry shows:
    • Progress badge (e.g., "45% read" or "Completed")
    • Time spent (e.g., "5m" or "1h 30m")
    • Article title (clickable)
    • Progress bar (visual indicator of how far they've read)
    • "Continue" button for partially read articles
  • If no history: "No reading history yet. Start reading articles and they'll appear here."

Preferences (Reader Portal)

The Preferences page (Account → Preferences) has five sections:

1. Content Preferences:

  • Reader selects topics of interest from available sections and tags.
  • Selected topics are shown as highlighted pills.
  • Used to personalize the "For You" feed and content notifications.
  • Suggested Topics appear if the reader has reading history — shown as dashed-border pills with a "+" icon.
  • Status text shows how many topics are selected.

2. Email Notifications:

CheckboxDescription
Weekly Newsletter"Receive our curated weekly digest of the best content."
Renewal Reminders"Get notified before your subscription expires so you never lose access."
New Content Alerts"Get notified when new content matching your preferred topics is published."
New Issue Published"Get notified when a new magazine issue is published."
Comment Replies"Get notified when someone replies to your comments."
Promotions & Events"Receive information about special offers and literary events."

3. Push Notifications:

  • Browser Push Notifications toggle — "Receive instant notifications in your browser for new issues, content updates, and subscription alerts."
  • Only available if the reader's browser supports push notifications.

4. Reading Preferences:

  • Font Size: Small, Medium, or Large
  • Theme: Light, Dark, or Sepia

5. Data Privacy:

  • "Download My Data" button — downloads all reader data as a JSON file named my-hyphen-data-{DATE}.json.
  • Help text: "Read our Privacy Policy to learn more about how we handle your data."

After making changes, the reader clicks "Save Preferences".


5.10 Sessions and Device Management

Reader-Side Session Management (Reader Portal)

  1. The reader navigates to Account → Sessions.
  2. They see a list of Active Sessions with:
    • Device icon (mobile, tablet, or desktop)
    • Device name (e.g., "Chrome on Windows")
    • "This device" badge on their current session
    • IP address and Last active timestamp
    • "Sign out" button on non-current sessions
  3. To revoke a suspicious session, click "Sign out" on that session.
  4. An info box explains: "Each session represents a device or browser where you are signed in. If you see a session you don't recognise, sign out of it and change your password immediately."

Admin-Side Session and Security Settings

  1. Navigate to Settings → Sessions in the Admin Console.
  2. Configure:
SettingWhat It DoesRecommended
Inactivity TimeoutUsers are logged out after this many minutes of inactivity (5–480 range)60 minutes
Enable Session RefreshAutomatically extends session when user is activeEnable
Maximum Concurrent DevicesHow many devices a reader can be logged in from simultaneously (1–10)3 devices
Remember Me DurationHow long "Remember me" keeps the reader logged in (1–90 days)30 days
Require Re-authenticationAsks readers to confirm their password before changing account settings or making purchasesRecommended for sensitive environments
  1. Click "Save" to apply changes.
  2. The page shows when settings were last updated and by whom.

Revoking a Reader's Session from Admin Console

  1. Open the reader's profile in Readers → Directory → [Reader].
  2. Scroll to the Devices section.
  3. Click "Revoke" next to the device session you want to end.
  4. The reader will be logged out on that device.

5.11 Notifications and Email Preferences

How Readers Receive Notifications

Readers receive notifications through two channels:

  1. In-app notifications — visible on the Notifications page in the Reader Portal
  2. Email notifications — sent to their email based on their preferences
  3. Push notifications — browser push notifications (if enabled)

Notification Types

TypeWhen It's Sent
welcomeWhen a reader creates their account
new_issueWhen a new magazine issue is published
new_contentWhen new content matching the reader's preferred topics is published
subscription_renewalBefore a subscription renewal date
subscription_expiryWhen a subscription is about to expire
comment_replyWhen someone replies to the reader's comment
system_announcementPlatform-wide announcements

Notifications Page (Reader Portal)

  1. Reader navigates to Account → Notifications.
  2. They see:
    • Count of unread notifications (or "All caught up")
    • "Mark all as read" button (appears when there are unread notifications)
    • "All" / "Unread" filter toggle
    • Notification list with: type badge, title (bold if unread), message, timestamp, unread dot indicator
    • Each notification has a checkmark button to mark it as read
    • Notifications with an action URL are clickable
    • "Load more" button for pagination (20 per page)

Email Unsubscribe

  • Every email sent to readers includes an unsubscribe link.
  • Clicking the link takes them to an unsubscribe page where they can manage their email preferences.
  • Readers can also manage email preferences from Account → Preferences → Email Notifications.

5.12 Payment and Subscription Checkout

How a Reader Subscribes (Reader Portal)

  1. The reader visits the pricing page on the Reader Portal (linked from the subscription page or homepage).
  2. They see available plans with pricing and features.
  3. They select a plan and billing period (monthly/annual).
  4. They are directed to the payment checkout:
    • Razorpay — for INR payments
    • Stripe — for USD/international payments
  5. After successful payment, their subscription is activated immediately.
  6. They can view their subscription details on Account → Subscription.

Payment History (Reader Portal)

  • Readers can view their payment history on the Subscription page.
  • Each entry shows: Date, Description, Amount, and Status (Paid/Succeeded, Pending, Failed).

Payment Management (Admin Console)

  • Admin users can view payments through the admin payment management interface.
  • Capabilities include viewing payment details, processing refunds, and tracking payment status across gateways.

Dependency: Payment gateways (Razorpay and/or Stripe) must be configured before readers can purchase subscriptions. Contact your DevOps team to set up gateway credentials.


5.13 Magazine Schedule (Print+Digital)

For subscription plans that include print magazine delivery, you need to configure the delivery schedule.

Setting Up the Magazine Schedule

  1. Navigate to Readers → Subscriptions → Magazine Schedule.
  2. You'll see the schedule page with:
    • Year filter dropdown (current year ± range)
    • "Add Entry" button (+ icon)
    • Schedule table with columns: Year, Month, Label, Status, Active toggle

Adding a Schedule Entry

  1. Click "Add Entry" (+ icon).
  2. Fill in:
FieldWhat to Enter
YearSelect the year
MonthSelect the month
LabelA descriptive label (e.g., "Spring 2026 Issue")
  1. Click "Save".

Activating/Deactivating a Schedule Entry

  1. Click the Active toggle in the schedule row.
  2. A confirmation dialog appears: "Activate/Deactivate Schedule Entry" with the label and month/year.
  3. Click "Confirm".

Note: Print delivery schedule entries appear on the reader's Subscription page in the Reader Portal under the "Print Delivery Schedule" section.


5.14 Renewal Reminders, Invitation Reminders, and Automated Tasks

The platform sends automated notifications and reminders based on subscription events and system triggers.

Types of Automated Notifications

NotificationWhen It's TriggeredWho Receives It
Renewal ReminderBefore a subscription's billing period endsSubscribers with renewal reminders enabled
Subscription Expiry NoticeWhen a subscription is about to expire or has expiredThe affected subscriber
Invitation ReminderWhen an institutional invitation has not been activatedThe invited reader
Welcome EmailWhen a reader creates their accountThe new reader
Gift NotificationWhen a gift subscription is purchasedThe gift recipient
New Issue NotificationWhen a new magazine issue is publishedReaders with new issue notifications enabled
New Content AlertWhen content matching a reader's topics is publishedReaders with content alerts enabled

How to Check if Reminders Are Being Sent

  1. Check if the reader has Renewal Reminders enabled in their email preferences:

    • Open the reader's profile in Admin Console.
    • Check their notification preferences.
    • Or ask the reader to check Account → Preferences → Email Notifications → Renewal Reminders on the Reader Portal.
  2. Verify that email/SMTP is configured and working:

    • Check Settings → Email Settings in Admin Console.
  3. If notifications are not being delivered, check:

    • The reader's email preferences (they may have opted out)
    • Spam/junk folder
    • Email delivery logs
    • Whether the automated task/cron job is running (contact DevOps)

Current Status: Automated renewal and expiry notifications are implemented. The timing and frequency of these reminders depends on the cron/scheduled task configuration managed by your DevOps team.


5.15 Account Deletion, GDPR Export, and Anonymization

Reader moderation
Manage reader accounts including banning, GDPR export, and account anonymization.

GDPR Data Export (Admin Console)

  1. Open the reader's profile in Readers → Directory → [Reader].
  2. Scroll to the GDPR Actions section.
  3. Click "Export Data" (with download icon).
  4. A JSON file downloads named hyphen-data-export-{readerId}.json.
  5. The file includes: profile, subscriptions, bookmarks, comments, and reading history.

GDPR Data Export (Reader Self-Service)

  1. Reader navigates to Account → Preferences on the Reader Portal.
  2. Scrolls to the Data Privacy section.
  3. Clicks "Download My Data".
  4. A JSON file downloads named my-hyphen-data-{DATE}.json.

Account Anonymization (Admin Console)

This permanently removes all personal information from a reader's account. This action cannot be undone.

  1. Open the reader's profile in Readers → Directory → [Reader].
  2. Scroll to the GDPR Actions section.
  3. Click "Anonymize" (warning/error styled button).
  4. A confirmation dialog appears listing what will be deleted:
    • Hash the email address
    • Remove name, phone, profile details
    • Delete OAuth linked accounts and sessions
    • Remove bookmarks and institutional access
    • Anonymize comment author information
  5. Confirm the action.
  6. The reader's account is anonymized. Their email becomes anon-{hash}@deleted.hyphen.co.
  7. If the account was already anonymized, the button shows "Already Anonymized".

Account Deletion (Reader Self-Service via Reader Portal)

  1. Reader navigates to Account → Profile on the Reader Portal.
  2. Scrolls to the Danger Zone section.
  3. Clicks "Delete Account" (red-bordered button).
  4. A confirmation dialog appears: "This action is irreversible. All your data, subscriptions, bookmarks, and reading history will be permanently removed."
  5. They must enter their current password to confirm their identity.
  6. They must type DELETE in the text field to confirm.
  7. Click "Permanently Delete" (button is disabled until both password and "DELETE" are entered).
  8. The account is deleted, the reader is signed out, and redirected to the homepage.

Deleting a Reader from Admin Console

  1. In the Reader Directory, click the Delete button on a reader row.
  2. A confirmation modal appears: "This action will anonymize the reader's data. This cannot be undone."
  3. Click "Delete Reader" to confirm.
  4. The reader's data is anonymized (same as the anonymization process above).

5.16 Reader Moderation (Ban, Unban, Comments)

Banning a Reader

  1. Navigate to the reader's profile in Readers → Directory → [Reader].
  2. Click "Ban Reader" in the action buttons.
  3. A modal appears asking for a Ban Reason (text input).
  4. Enter the reason and click "Ban Reader".
  5. The reader's status changes to Banned and they see a ban notice on their profile.

Or from the Moderation page:

  1. Navigate to Readers → Moderation → Users tab.
  2. Find the user and click their profile.
  3. Click "Ban" and specify ban type (temporary or permanent) and reason.

Unbanning a Reader

  1. Open the banned reader's profile.
  2. Click "Unban" in the action buttons.
  3. The reader's status returns to Active.

Comment Moderation

  1. Navigate to Readers → Moderation.
  2. The moderation dashboard shows stats: Pending Comments, New Reports, Approved Today, Banned Users.
  3. Use the tabs:
    • Comments tab — review, approve, reject, edit, or delete comments (with bulk actions)
    • Reports tab — review reader reports, resolve or dismiss
    • Users tab — view user moderation records, warnings, ban status, toggle trusted status
    • Settings tab — configure profanity filters, auto-moderation rules, thresholds

5.17 Permissions and RBAC for Admin Users

Different admin roles need different permissions to manage readers. Here are the key permissions:

PermissionWhat It Allows
READERS_DASHBOARD_READView the Readers Overview dashboard
USERS_READView the Reader Directory and reader profiles
USERS_UPDATEBan/unban readers, update reader profiles
USERS_EXPORTExport reader directory data and GDPR exports
SUBSCRIPTIONS_READView subscription plans and subscriber lists
SUBSCRIPTIONS_CREATEGrant complimentary subscriptions, process bulk requests
SUBSCRIPTIONS_UPDATEEdit subscriptions, update bulk requests, manage gift status
SUBSCRIPTIONS_MANAGE_PLANSCreate, edit, and delete subscription plans
INSTITUTIONS_READView institutional subscriptions
MODERATION_READView the Moderation section (comments, reports, users)
MODERATION_UPDATEModerate comments and reports, ban/warn users
SETTINGS_READView session and moderation settings
SETTINGS_UPDATEUpdate session settings and moderation rules
ADMIN_USERS_READView admin team management (Team Management link in Reader Directory)

Tip: If you click a button or try to access a page and nothing happens or you see a blank page, check with your administrator that your role has the required permissions listed above.


5.18 Future Readers Program

The Future Readers Program offers discounted or free subscriptions to students.

Accessing the Program

  1. Navigate to Readers → Future Readers in the Admin Console sidebar.
  2. You'll see the program dashboard with:
    • Stats: Total Enrollments, Pending Review, Approved, Active Institutes
    • Quick Links: Institutes, Enrollments, Campaigns & Events

Two Routes for Students

RouteHow It Works
Competition RouteStudents submit essays or poems. Winners receive a 100% discount (free subscription)
Discount RouteStudents verify their student ID and receive a 50% discount on subscriptions

Managing Enrollments

  1. Click "Review Enrollments" from the dashboard.
  2. Review student enrollment applications.
  3. Approve or reject entries.
  4. Approved students receive discount coupons they can use during checkout.

Managing Institutes

  1. Click "Manage Institutes" from the dashboard.
  2. Add or manage schools, colleges, and universities participating in the program.

Linked Campaigns

  • The dashboard shows campaigns and events linked to the program.
  • Each campaign shows: name, status (Draft/Active/Paused/Completed/Archived), institute count, submission count, and pending count.

6. How to Verify It Worked

After setting up or making changes, use these checks to verify everything is working correctly.

Reader Registration Verification

CheckHow to Verify
Registration worksVisit Reader Portal → Register → Complete the flow → Confirm the reader appears in Admin Console → Reader Directory
OTP deliveryRegister with a test email → Confirm OTP arrives within 1-2 minutes
Social login worksClick "Sign in with Google" → Complete OAuth flow → Confirm login succeeds
Reader appears in directoryAdmin Console → Readers → Directory → Search for the new reader
Correct tier assignedNew free reader should show Tier: Free or Registered

Subscription Verification

CheckHow to Verify
Plans visible to readersReader Portal → Pricing page → Confirm active plans appear
Complimentary grant worksAdmin Console → Grant subscription → Reader Portal → Account → Subscription → Confirm plan shows as "Complimentary"
Subscription benefits workLog in as subscriber → Try accessing a subscriber-only article → Should have full access
Payment worksReader Portal → Select plan → Complete payment → Confirm subscription is Active
Cancellation worksReader Portal → Account → Subscription → Cancel → Confirm "Cancels on [date]" message
Gift activation worksSend a gift → Recipient activates → Confirm their subscription shows as "Gift" type

Reader Portal Verification

CheckHow to Verify
Profile page loadsLog in → Account → Profile → All fields display correctly
Bookmarks workBookmark an article → Account → Bookmarks → Confirm it appears → Remove → Confirm it disappears
Reading history tracksRead an article → Account → Reading History → Confirm it appears with progress
Notifications displayTrigger a notification → Account → Notifications → Confirm it appears with unread indicator
Sessions show correctlyLog in on two devices → Account → Sessions → Confirm both sessions appear
Preferences saveChange topic selections and email preferences → Save → Refresh → Confirm selections are retained
Data download worksAccount → Preferences → Download My Data → Confirm JSON file downloads
Account deletion worksAccount → Profile → Danger Zone → Delete Account → Enter password → Type DELETE → Confirm signout and redirect

Admin Console Verification

CheckHow to Verify
Reader directory loadsReaders → Directory → Confirm reader list displays
Filters workApply status/tier/subscription filters → Confirm list updates
Profile page loadsClick a reader → Confirm all sections load (summary, profile, subscription, devices, GDPR)
GDPR export worksReader profile → GDPR Actions → Export Data → Confirm JSON downloads
Anonymize worksReader profile → GDPR Actions → Anonymize → Confirm data is removed
Session revoke worksReader profile → Devices → Revoke → Confirm session is removed

7. Worked Examples

7.1 Example 1: Registering a New Reader and Verifying Account Access

Scenario: A new reader wants to sign up for Hyphen and start reading articles.

Steps:

  1. Reader visits the Reader Portal and clicks "Don't have an account?" on the login page.

  2. Reader fills in the registration form:

    • Full name: "Priya Sharma"
    • Email: "priya.sharma@example.com"
    • Newsletter checkbox: left checked (default)
    • Terms of Service: checked
    • Clicks "Create Account"
  3. Reader checks email and finds a message with a 6-digit OTP (e.g., 482915).

  4. Reader enters the OTP on the verification screen and clicks "Verify & Sign In".

  5. Reader is now logged in and redirected to the Reader Portal homepage.

  6. Admin verifies in Admin Console:

    • Navigate to Readers → Directory
    • Search for "priya.sharma@example.com"
    • Confirm the reader appears with:
      • Status: Active
      • Tier: Free (or Registered)
      • Joined Date: Today's date
  7. Reader tests account features:

    • Navigates to Account → Profile — sees their name and email
    • Tries to read a free article — succeeds
    • Tries to read a subscriber-only article — sees paywall/limitation
    • Bookmarks a free article — confirms it appears in Account → Bookmarks

Result: Reader "Priya Sharma" has a working free account. She can read free content, save bookmarks, and comment on articles. She cannot access subscriber-only content until she subscribes.


7.2 Example 2: Assigning a Complimentary Subscription and Checking Reader Portal

Scenario: The editorial team wants to give complimentary access to a contributing author, Rahul Mehta, who already has a free reader account.

Steps:

  1. Admin logs into Admin Console and navigates to Readers → Directory.

  2. Admin searches for the reader: Types "Rahul Mehta" or his email in the search bar.

  3. Admin opens the reader's profile: Clicks the View (→) button.

  4. Admin confirms the reader has no active subscription:

    • The Subscription card shows no active plan
    • The "Grant Subscription" button is visible in the action buttons
  5. Admin clicks "Grant Subscription" and fills in:

    • Subscription Plan: selects "Annual Digital" from the dropdown
    • Duration: selects "1 Year"
    • Reason: types "Contributing author — complimentary access"
    • Clicks "Grant Subscription"
  6. Admin verifies the change:

    • The Subscription card now shows:
      • Plan: Annual Digital
      • Status: Complimentary (badge)
      • Start date: today
      • End date: one year from today
    • The Tier badge changes to Subscriber
  7. Verification on Reader Portal (as Rahul):

    • Rahul logs into the Reader Portal
    • Navigates to Account → Subscription
    • Sees: Plan name, status ACTIVE, subscription type Complimentary, and period dates
    • Sees the Your Benefits section with checkmarks for included features
    • Tries reading a subscriber-only article — has full access
    • The Manage Subscription section shows options (but cancellation would be unusual for a complimentary grant)

Result: Rahul now has full subscriber access for one year at no cost. The Admin Console shows the subscription was granted with the reason documented. This can be verified end-to-end in the Reader Portal.


7.3 Example 3: Troubleshooting Why a Reader Is Not Receiving Renewal Reminders

Scenario: A subscriber, Anita Desai, contacts customer support saying she was not notified before her subscription expired. Support needs to investigate.

Steps:

  1. Support agent logs into Admin Console and navigates to Readers → Directory.

  2. Search for the reader: Types "anita.desai@example.com" in the search bar.

  3. Open the reader's profile and check the following:

  4. Check 1 — Subscription status:

    • Look at the Subscription card
    • Note the subscription status (Expired? Cancelled? Active?)
    • Note the current period end date — when did it expire?
    • Note the subscription type — if it's Complimentary, renewal reminders may not apply
  5. Check 2 — Reader's email preferences:

    • The reader's notification preferences indicate what emails they've opted into
    • Ask Anita to check Account → Preferences → Email Notifications on the Reader Portal
    • Specifically check: is "Renewal Reminders" enabled?
    • If it's disabled, that's why she didn't receive a reminder — she opted out
  6. Check 3 — Email delivery:

    • If renewal reminders were enabled, the issue may be email delivery
    • Ask Anita to check her spam/junk folder for emails from Hyphen
    • Check with DevOps if the email/SMTP service is working correctly
    • Check email delivery logs if available
  7. Check 4 — Automated task status:

    • Renewal reminder emails are sent by automated tasks (cron jobs)
    • If the automated task is not running, no reminders are sent to anyone
    • Contact your DevOps team to confirm the renewal reminder cron job is active and running on schedule
  8. Resolution:

    • If the reader had renewal reminders disabled: Explain to Anita and help her enable it for the future
    • If email delivery failed: Investigate the delivery issue with DevOps
    • If the cron job was not running: Escalate to DevOps to restart it, and consider granting Anita a short extension as goodwill
    • If the subscription type doesn't trigger reminders: Explain the expected behavior
  9. Follow-up:

    • If appropriate, grant a short complimentary extension to Anita while she renews
    • Confirm that renewal reminder settings are correct for future cycles
    • Ensure Anita's new subscription (once renewed) has the correct billing period and reminder setup

Result: The support agent has a clear checklist to diagnose why renewal reminders were not received. The root cause is identified and resolved, and the reader is helped back to an active subscription.


7.4 Example 4: Revoking a Reader Session and Verifying Account Security

Scenario: A reader, Vikram Singh, contacts support saying his account may have been compromised. He's seeing articles marked as read that he didn't read, and he wants to secure his account.

Steps:

  1. Support agent logs into Admin Console and navigates to Readers → Directory.

  2. Search for "Vikram Singh" and open his profile.

  3. Check the Devices section:

    • Scroll down to see all active sessions
    • Look for any unfamiliar devices or locations
    • Note the device names (e.g., "Chrome on Windows", "Safari on iPhone"), IP addresses, and last active timestamps
    • If there's a session from an unfamiliar device or IP, this may be the compromised session
  4. Revoke suspicious sessions:

    • Click "Revoke" next to each unfamiliar device session
    • The session is immediately terminated — the person using that session is logged out
  5. Reset the reader's password:

    • Click the "Reset Password" button in the action buttons at the top
    • A password reset email is sent to Vikram's email address
    • Tell Vikram to check his email and set a new, strong password
  6. Verify from the Reader Portal (as Vikram):

    • Vikram logs in with his new password
    • Navigates to Account → Sessions
    • Confirms only his current session is listed (marked as "This device")
    • The suspicious session should no longer appear
  7. Additional security steps (if needed):

    • If the compromise is severe, consider temporarily banning the account while investigating
    • Check if there are any unauthorized changes to Vikram's profile (name, email, bio)
    • Check if any suspicious comments were posted from his account
    • Review the reading history for unusual activity
  8. Inform the reader:

    • Tell Vikram that the suspicious sessions have been revoked
    • Confirm his password has been reset
    • Advise him to:
      • Not reuse passwords across sites
      • Enable "Require Re-authentication for Sensitive Actions" if available
      • Check his sessions periodically from Account → Sessions

Optional — Admin adjusts security settings:

  • Navigate to Settings → Sessions
  • Consider reducing the Inactivity Timeout (e.g., from 60 to 30 minutes)
  • Consider reducing Maximum Concurrent Devices (e.g., from 5 to 3)
  • Enable "Require Re-authentication for Sensitive Actions"

Result: The compromised session is revoked, the password is reset, and Vikram's account is secured. The admin has also reviewed security settings to prevent future incidents.


7.5 Example 5: Handling a GDPR Export and Anonymization Request

Scenario: A reader, Maria Fischer, sends an email to support requesting a copy of all her personal data (GDPR Right of Access) and then asks for her account to be permanently deleted (GDPR Right to Erasure).

Steps:

Part A — Data Export:

  1. Support agent logs into Admin Console and navigates to Readers → Directory.

  2. Search for "maria.fischer@example.com" and open her profile.

  3. Export her data:

    • Scroll to the GDPR Actions section
    • Click "Export Data" (with download icon)
    • A JSON file downloads: hyphen-data-export-{readerId}.json
    • The file contains: profile information, subscription details, bookmarks, comments, and reading history
  4. Send the data to Maria:

    • Review the exported file to ensure it contains all expected data
    • Send it to Maria's email as requested (following your organization's data handling procedures)
  5. Alternative — Reader self-service:

    • Maria can also download her own data from the Reader Portal
    • Navigate to Account → Preferences → Data Privacy → "Download My Data"
    • A file named my-hyphen-data-{DATE}.json downloads

Part B — Account Anonymization:

  1. Confirm the request is legitimate:

    • Verify the request came from Maria (check the email address matches)
    • Follow your organization's GDPR request verification procedure
  2. Anonymize the account:

    • On Maria's profile page, scroll to GDPR Actions
    • Click "Anonymize" (warning-styled button)
    • A confirmation dialog appears listing everything that will happen:
      • Hash the email address
      • Remove name, phone, profile details
      • Delete OAuth linked accounts and sessions
      • Remove bookmarks and institutional access
      • Anonymize comment author information
    • Read the list carefully and click "Confirm"
  3. Verify anonymization:

    • The page reloads
    • The reader's email now shows as anon-{hash}@deleted.hyphen.co
    • Name, bio, location, website, and phone are blank
    • All sessions are revoked
    • Bookmarks are removed
    • Comments still exist but show an anonymized author
    • The "Anonymize" button now shows "Already Anonymized"
  4. Confirm to Maria:

    • Email Maria confirming that:
      • Her data export was provided (Part A)
      • Her account has been permanently anonymized
      • She can no longer log in with her old credentials
      • Her comments remain on the platform but are no longer linked to her identity
    • Note: Maria could also delete her own account from Account → Profile → Danger Zone → Delete Account by entering her password and typing "DELETE" in the confirmation field

Alternative — Reader self-service deletion:

  • Maria can navigate to Account → Profile → Danger Zone
  • Click "Delete Account"
  • Read the warning: "This action is irreversible. All your data, subscriptions, bookmarks, and reading history will be permanently removed."
  • Enter her current password for identity verification
  • Type DELETE in the confirmation field
  • Click "Permanently Delete"
  • She is signed out and redirected to the homepage

Result: Maria's GDPR request is fully handled. Her data was exported and provided to her, and her account is permanently anonymized. All personal information has been removed while preserving anonymized comment content for editorial integrity.


8. Common Mistakes and How to Fix Them

MistakeWhat HappensHow to Fix
No subscription plans createdReaders cannot subscribe — the pricing page is empty and "Grant Subscription" dropdown has no optionsNavigate to Readers → Subscriptions → Click "Add Plan" → Create at least one active plan
Payment gateway not configuredReaders see plans but cannot complete checkout — payment fails or no checkout option appearsContact DevOps to configure Razorpay/Stripe credentials in Settings → Payment Settings
Email/SMTP not workingOTP emails not delivered — readers cannot register or log in with OTP; password reset links not sent; no notification emailsCheck Settings → Email Settings and contact DevOps to fix SMTP configuration
Granting subscription to a reader who already has oneThe "Grant Subscription" button doesn't appearThe reader already has an active subscription. Cancel or extend the existing one instead
Trying to grant subscription to institutional readerThe "Grant Subscription" button doesn't appearInstitutional readers get access through their institution, not individual grants
Reader says they can't log in after banReader is banned and cannot access the platformIf the ban was a mistake, find the reader in Admin Console → Click "Unban"
Reader's session was revoked but they're still logged inSession tokens may be cached temporarilyThe reader needs to refresh the page or close and reopen the browser. Session will expire within minutes
Anonymization was done accidentallyAll personal data is permanently removedThis cannot be undone. The reader will need to create a new account. Always double-check before confirming anonymization
Gift subscription shows as EXPIREDRecipient didn't activate the gift before expirationCreate a new gift subscription or grant a complimentary subscription directly to the reader
Reader is not receiving notificationsNotifications are not showing in the Reader Portal or emailCheck the reader's email preferences (they may have opted out). Check if the notification type is enabled. Check email delivery if email notifications are expected
Plan shows 0 subscribers after creatingNo readers have subscribed to the new plan yetWait for readers to subscribe, or grant complimentary subscriptions for testing
Bulk subscription processing shows errorsSome email addresses in the paste list had issuesCheck for typos, duplicates, or emails that already have subscriptions. Review the error count for details
"Allow Gift" not enabled on a planReaders cannot purchase that plan as a giftEdit the plan in Plan Editor → Toggle "Allow Gift" on → Save
Reader cannot download their dataThe export button fails or downloads empty dataThis could be a browser issue. Try a different browser or clear the cache. If the issue persists, export from the Admin Console instead
Filters showing no resultsApplied filters are too restrictiveClick "Clear Filters" to reset and try fewer filters. Check that you're searching with the correct values

Internal — QA, Testing & Limitations
9. QA / Testing Checklist
Registration & Login
  • Register a new reader with email/OTP — verify account is created
  • Register with Google OAuth — verify account is created and linked
  • Register with Facebook OAuth — verify account is created and linked
  • Attempt registration without accepting Terms of Service — verify form is blocked
  • Login with OTP — verify 6-digit code is delivered and accepted
  • Login with password (if set) — verify login succeeds
  • Forgot password flow — verify reset email is sent and new password works
  • Reset password with expired link — verify "Invalid Reset Link" message
  • Verify new reader appears in Admin Console → Reader Directory
  • Verify correct tier is assigned (Free/Registered)
  • Verify "Resend OTP" works after 60-second cooldown
  • Verify OTP rejects invalid codes (wrong digits, expired)
Subscription Plans
  • Create a Digital Only plan — verify it appears in the plan list
  • Create a Print+Digital plan — verify it appears with print options
  • Edit a plan's pricing — verify changes are saved
  • Deactivate a plan — verify it disappears from the public pricing page
  • Reactivate a plan — verify it reappears on the pricing page
  • Preview pricing page — verify plans display correctly for readers
  • Enable "Allow Gift" on a plan — verify gift checkout works
  • Set plan features — verify features display in Reader Portal subscription page
Subscription Assignment & Management
  • Grant complimentary subscription — verify reader becomes Subscriber
  • Verify complimentary reader can access subscriber-only content
  • Extend a subscription — verify end date updates
  • Cancel a subscription (admin) — verify reader retains access until period end
  • Cancel a subscription (reader self-service) — verify "Cancels on [date]" message
  • Verify cancelled reader loses access after period end
  • Verify subscription status badges display correctly (Active, Complimentary, Past Due, Cancelled, Expired)
Gift Subscriptions
  • View gift subscriptions list — verify filtering by status works
  • View gift detail — verify buyer, recipient, plan, timeline are displayed
  • Change gift status (Admin action) — verify status updates
  • Verify gift activation creates a subscription for the recipient
Institutional Subscriptions
  • Create an institution — verify it appears in the institutions list
  • Add users to an institution — verify invitation emails are sent
  • Activate institutional account (new reader) — verify password creation and access
  • Activate institutional account (existing reader) — verify account linking
  • Verify institutional reader can access subscriber-only content
  • Renew an institution — verify dates and seats update
Bulk Subscriptions
  • View bulk requests — verify list and filtering work
  • Edit a bulk request status — verify status updates
  • Process an approved bulk request with email list — verify subscriptions are created
  • Verify skipped/errored counts are reported correctly
Reader Portal — Account Pages
  • Profile page loads with correct data
  • Edit profile (name, bio, location, website) — verify changes save
  • Subscription page shows correct plan, status, and benefits
  • Subscription page shows payment history
  • Bookmarks page shows saved articles
  • Add and remove a bookmark — verify updates
  • Reading history tracks article progress
  • Reading history shows "Continue" button for partially read articles
  • Notifications page shows in-app notifications
  • Mark notifications as read — verify unread count updates
  • Sessions page shows current and other device sessions
  • Sessions shows "This device" badge on current session
  • Preferences — select/deselect content topics — verify save
  • Preferences — toggle email notifications — verify save
  • Preferences — change font size and theme — verify save
  • Preferences — download data — verify JSON file downloads
Sessions & Security
  • Revoke a session from Admin Console — verify device is signed out
  • Revoke a session from Reader Portal — verify device is signed out
  • Configure session timeout — verify readers are logged out after timeout
  • Configure device limit — verify excess sessions are handled
  • Verify "Remember Me" duration works as configured
  • Verify current session cannot be revoked (must use logout instead)
Notifications & Email
  • Verify welcome notification is created on registration
  • Verify renewal reminder is sent before subscription expiry
  • Verify new issue notification is sent when an issue is published
  • Verify content notification matches reader's topic preferences
  • Verify comment reply notification is sent when a reply is posted
  • Verify email unsubscribe link works from received emails
  • Verify reader can toggle each email preference type
GDPR & Compliance
  • Export reader data from Admin Console — verify JSON file includes all data
  • Export reader data from Reader Portal (self-service) — verify JSON file downloads
  • Anonymize a reader from Admin Console — verify all PII is removed
  • Delete account from Reader Portal (self-service) — verify password is required, reader is signed out and data is removed
  • Verify anonymized reader's email shows as anon-{hash}@deleted.hyphen.co
  • Verify anonymized reader's comments still exist but with anonymized author
  • Verify "Already Anonymized" state prevents re-anonymization
  • Verify anonymized reader cannot log in
Moderation
  • Ban a reader — verify they cannot access the platform
  • Unban a reader — verify they can access the platform again
  • Verify ban reason is recorded and displayed
  • Review, approve, reject comments from Moderation page
  • Resolve and dismiss reports from Moderation page
  • Toggle trusted user status — verify effect on auto-moderation
Permissions
  • Admin without USERS_READ cannot access Reader Directory
  • Admin without SUBSCRIPTIONS_CREATE cannot grant subscriptions
  • Admin without SUBSCRIPTIONS_MANAGE_PLANS cannot create/edit plans
  • Admin without USERS_EXPORT cannot export data
  • Admin without MODERATION_READ cannot access Moderation page
  • Admin without SETTINGS_UPDATE cannot change session settings

10. Current Known Limitations
LimitationDetailsWorkaround
Cron job visibilityAutomated tasks (renewal reminders, expiry notices, session cleanup) are managed at the infrastructure level. There is no Admin Console UI to view or manage cron jobs.Contact your DevOps team to verify cron jobs are running and configured correctly
No in-app subscription upgrade flowReaders cannot directly upgrade from one plan to another within the Reader Portal. The "Change Plan" button navigates to the pricing page.Reader must cancel their current subscription and subscribe to the new plan, or an admin can grant a new subscription
No partial refund UIThere is no self-service refund option for readers. Refund processing is handled through payment gateway admin panels.Process refunds through the Razorpay/Stripe dashboard directly
Password login limitedThe primary login flow uses OTP. Password-based login is only available if the reader has explicitly set a password through the reset flow.Readers should use OTP or social login for the simplest experience
Gift subscription — no self-service purchase UI in AdminGift subscriptions are purchased by readers through the Reader Portal. Admins can view and manage gift status but cannot create gifts from the Admin Console.To give a gift-like subscription from the admin side, use the "Grant Subscription" (complimentary) feature instead
Bulk subscription processing — no email validationWhen pasting email addresses for bulk processing, the system does not preview which emails are valid before processing.Double-check your email list for typos and duplicates before pasting. Review the created/skipped/errored counts after processing
Push notifications — browser supportPush notifications require browser support and reader opt-in. Not all browsers support web push.Ensure email notifications are also enabled as a fallback
Magazine schedule — manual entryMagazine schedule entries must be added manually. There is no automatic schedule generation.Plan your print schedule in advance and add entries for the full year
No reading history clear-all optionReaders can only remove individual reading history entries, not clear all at once.Remove entries one at a time, or delete and recreate the account
Institutional invitation expiryInstitutional invitations have an expiration period. If a reader doesn't activate before expiry, a new invitation must be sent.Resend the invitation from the institution's user management page
Data export formatGDPR exports are in JSON format only. There is no CSV or PDF export option.Use the JSON file directly, or convert it to the desired format using a tool like an online JSON-to-CSV converter

This guide covers the Hyphen Reader Management System as implemented on 2026-03-16. For questions or issues not covered here, contact support@hyphen.co.

On this page

1. Simple Feature OverviewWhat You Can DoHow the Reader Journey Works2. Who Should Use This Feature3. Before You BeginPrerequisites ChecklistDependencies Between Modules4. Key Terms in Simple Language5. Step-by-Step Setup Guide5.1 Reader Registration and Login FlowsHow a Reader Registers (Reader Portal)How a Reader Logs In (Reader Portal)Forgot Password Flow5.2 Reader Directory and Profile Management in Admin ConsoleAccessing the Reader DirectoryBrowsing and Filtering ReadersViewing a Reader's ProfileEditing a Reader's ProfileExporting the Reader Directory5.3 Create and Manage Subscription PlansViewing Existing PlansCreating a New PlanEditing an Existing PlanActivating or Deactivating a PlanPreviewing the Pricing Page5.4 Assign, Upgrade, and Cancel SubscriptionsGranting a Complimentary SubscriptionExtending a SubscriptionCancelling a Subscription (Admin Side)How a Reader Cancels Their Own Subscription (Reader Portal)5.5 Gift SubscriptionsManaging Gift Subscriptions in Admin ConsoleGift Subscription LifecycleViewing Gift DetailsChanging Gift Status (Admin Action)5.6 Institutional Subscriptions and Reader AccessWhere to Manage InstitutionsCreating an Institutional SubscriptionInviting Readers to an InstitutionHow an Invited Reader Activates Their AccountRenewing an Institutional Subscription5.7 Bulk Subscription RequestsViewing Bulk RequestsBulk Request LifecycleProcessing a Bulk RequestEditing a Bulk Request5.8 Reader Account Pages in Reader PortalProfile PageSubscription Page5.9 Bookmarks, Reading History, and PreferencesBookmarks (Reader Portal)Reading History (Reader Portal)Preferences (Reader Portal)5.10 Sessions and Device ManagementReader-Side Session Management (Reader Portal)Admin-Side Session and Security SettingsRevoking a Reader's Session from Admin Console5.11 Notifications and Email PreferencesHow Readers Receive NotificationsNotification TypesNotifications Page (Reader Portal)Email Unsubscribe5.12 Payment and Subscription CheckoutHow a Reader Subscribes (Reader Portal)Payment History (Reader Portal)Payment Management (Admin Console)5.13 Magazine Schedule (Print+Digital)Setting Up the Magazine ScheduleAdding a Schedule EntryActivating/Deactivating a Schedule Entry5.14 Renewal Reminders, Invitation Reminders, and Automated TasksTypes of Automated NotificationsHow to Check if Reminders Are Being Sent5.15 Account Deletion, GDPR Export, and AnonymizationGDPR Data Export (Admin Console)GDPR Data Export (Reader Self-Service)Account Anonymization (Admin Console)Account Deletion (Reader Self-Service via Reader Portal)Deleting a Reader from Admin Console5.16 Reader Moderation (Ban, Unban, Comments)Banning a ReaderUnbanning a ReaderComment Moderation5.17 Permissions and RBAC for Admin Users5.18 Future Readers ProgramAccessing the ProgramTwo Routes for StudentsManaging EnrollmentsManaging InstitutesLinked Campaigns6. How to Verify It WorkedReader Registration VerificationSubscription VerificationReader Portal VerificationAdmin Console Verification7. Worked Examples7.1 Example 1: Registering a New Reader and Verifying Account Access7.2 Example 2: Assigning a Complimentary Subscription and Checking Reader Portal7.3 Example 3: Troubleshooting Why a Reader Is Not Receiving Renewal Reminders7.4 Example 4: Revoking a Reader Session and Verifying Account Security7.5 Example 5: Handling a GDPR Export and Anonymization Request8. Common Mistakes and How to Fix Them