Support Thread

Can I Approve each Registrant manually?

📅 👤 ASP Playground
Can I Approve each Registrant manually? — APG vNext Guide

Can I Approve each Registrant manually?

Answer

Yes, you can set the registration system to "Admin Approval Required", and you'll receive an email whenever someone registers so that you can approve the mem...

Where to Learn More

Manual Registrant Approval in APG vNext — Complete Guide

Yes — APG vNext fully supports manual approval of every new registrant. When enabled, new accounts are placed in a pending queue and cannot post or access member-only content until an administrator or designated approver explicitly approves them. This is the recommended configuration for private communities, corporate intranets, or any forum where membership should be curated.

Enabling Manual Approval

<!-- web.config -->
<add key="APG.Registration.ApprovalMode" value="Manual" />
<!-- Options: Automatic, EmailVerification, Manual -->

Or via Admin Panel → Settings → Registration → Approval Mode → select "Manual Approval".

The Approval Workflow

  1. New member submits registration form
  2. APG vNext sends a confirmation email: "Your account is pending approval. You'll be notified when approved."
  3. Admin receives an email notification with a direct link to the approval queue
  4. Admin reviews the pending account (registration answers, email domain, IP) and clicks Approve or Reject
  5. APG vNext sends an approval confirmation email to the member with a login link

Delegating Approval to Non-Admin Moderators

<add key="APG.Registration.ApprovalRole" value="MemberApprover" />

Members of the "MemberApprover" group can access the approval queue without full admin rights. Assign this group in Admin Panel → Users → Groups.

Custom Rejection Messages

<!-- APGLang.en.xml -->
<string name="RegistrationRejected">
  We're sorry, your registration for {ForumName} was not approved at this time.
  If you believe this is an error, please contact {ContactEmail}.
</string>

Automating Partial Approval Rules

Full manual approval isn't always necessary. APG vNext supports rule-based auto-approval that handles clearly-legitimate registrations automatically while flagging suspicious ones for manual review:

<!-- Auto-approve if email domain is from a trusted corporate domain -->
<add key="APG.Registration.AutoApprove.TrustedDomains"
     value="yourcompany.com,partner.org,university.edu" />

<!-- Auto-reject disposable email services (prevents throwaway registrations) -->
<add key="APG.Registration.Block.DisposableEmails" value="true" />

<!-- Flag for manual review if IP is from a high-risk country -->
<add key="APG.Registration.Review.HighRiskCountries" value="true" />
<add key="APG.Registration.HighRiskCountryCodes" value="" />

Using IP Reputation for Approval Routing

APG vNext 5.x integrates with IP reputation databases to automatically route registrations:

  • Clean IP + trusted email domain → auto-approved
  • VPN/proxy IP + new email domain → placed in manual review queue
  • Known spam IP → rejected at registration with CAPTCHA challenge

Approval Queue Performance at Scale

For high-traffic communities with hundreds of pending registrations per day, the manual approval queue can become a bottleneck. APG vNext provides batch approval to handle high volumes efficiently:

-- Bulk-approve all registrations from verified corporate domains:
UPDATE apg_Members
SET    Status = 'Active', ApprovedDate = GETUTCDATE(), ApprovedBy = 1 -- AdminID
WHERE  Status = 'PendingApproval'
  AND  Email LIKE '%@yourcompany.com'
  AND  RegisteredDate >= DATEADD(day, -7, GETUTCDATE());

-- Send approval email to newly activated members:
-- (Trigger handled by APG vNext's email queue service after status update)

Notifying Rejected Applicants

When you reject a registrant, APG vNext sends a rejection notification email. The default message is generic; customise it for your community context to provide a professional, respectful response that protects your community's reputation:

<!-- APGLang.en.xml — custom rejection message -->
<string name="RegistrationRejected">
Thank you for your interest in {ForumName}.

After reviewing your registration, we're unable to approve your account at this time.
If you believe this is in error, please contact us at {ContactEmail} with your
registered email address and we'll be happy to review your application.

The {ForumName} Team
</string>

Tracking Approval Metrics

-- Monthly approval/rejection rates:
SELECT FORMAT(RegisteredDate, 'yyyy-MM') AS Month,
       COUNT(*) AS TotalApplications,
       SUM(CASE WHEN Status = 'Active'   THEN 1 ELSE 0 END) AS Approved,
       SUM(CASE WHEN Status = 'Rejected' THEN 1 ELSE 0 END) AS Rejected,
       SUM(CASE WHEN Status = 'Pending'  THEN 1 ELSE 0 END) AS Pending
FROM   apg_Members
WHERE  RegisteredDate >= DATEADD(month, -6, GETUTCDATE())
GROUP  BY FORMAT(RegisteredDate, 'yyyy-MM')
ORDER  BY Month DESC;

Approval Queue Email Digest for Admins

Configure APG vNext to send a daily digest to administrators showing pending approval queue size, so that no registrant waits more than 24 hours for a decision:

<add key="APG.Registration.AdminDigest.Enabled"    value="true" />
<add key="APG.Registration.AdminDigest.ScheduleHour" value="9" />
<!-- Send digest at 9:00 AM server time daily -->

Related Resources

Notifying Rejected Applicants

When you reject a registrant, APG vNext sends a rejection notification email. The default message is generic; customise it for your community context to provide a professional, respectful response that protects your community's reputation:

<!-- APGLang.en.xml — custom rejection message -->
<string name="RegistrationRejected">
Thank you for your interest in {ForumName}.

After reviewing your registration, we're unable to approve your account at this time.
If you believe this is in error, please contact us at {ContactEmail} with your
registered email address and we'll be happy to review your application.

The {ForumName} Team
</string>

Tracking Approval Metrics

-- Monthly approval/rejection rates:
SELECT FORMAT(RegisteredDate, 'yyyy-MM') AS Month,
       COUNT(*) AS TotalApplications,
       SUM(CASE WHEN Status = 'Active'   THEN 1 ELSE 0 END) AS Approved,
       SUM(CASE WHEN Status = 'Rejected' THEN 1 ELSE 0 END) AS Rejected,
       SUM(CASE WHEN Status = 'Pending'  THEN 1 ELSE 0 END) AS Pending
FROM   apg_Members
WHERE  RegisteredDate >= DATEADD(month, -6, GETUTCDATE())
GROUP  BY FORMAT(RegisteredDate, 'yyyy-MM')
ORDER  BY Month DESC;

Approval Queue Email Digest for Admins

Configure APG vNext to send a daily digest to administrators showing pending approval queue size, so that no registrant waits more than 24 hours for a decision:

<add key="APG.Registration.AdminDigest.Enabled"    value="true" />
<add key="APG.Registration.AdminDigest.ScheduleHour" value="9" />
<!-- Send digest at 9:00 AM server time daily -->

Looking for more help? Browse the support forum or check the Knowledge Base.