Membership Validation
Protohaven memberships assume certain conditions apply for the membership to be valid. For instance: a Company Membership requires two or more individuals to belong to the same company.
A membership validation script runs every Wednesday morning via Cronicle that inspects all Neon CRM accounts and sends a list of all accounts that fail to meet the proper preconditions for their active memberships to the #membership-automation Discord channel. Links to Neon CRM are provided for each account in violation.
See protohaven_api/commands/finances.py in the protohaven_api GitHub repository for more details on the validation process.
Validation also runs when users sign in via email at the front desk; feedback is also sent to #membership-automation in Discord.
The following sections describe each validation error in detail, along with steps to remedy the problem.
Sign in ... returned multiple accounts in Neon with same email
When a member signs in at the front desk, the sign-in webapp checks Neon CRM to understand the state of their membership. We use the email address of members as a unique identifier for their sign-in and in various supporting systems.
However, Neon really enjoys creating accounts - signing up for classes and events can often create duplicate Neon accounts with the same identifying features (first/last name, email address, phone number etc.) These duplicate accounts are *usually* deduplicated automatically, but sometimes they can linger and cause ambiguity in understanding the state of someone's membership or clearances.
This validation error occurs when multiple accounts in Neon share the same email address, and requires the following steps to fix:
Log in to Neon CRM, and use the top bar to search for the duplicate accounts with the same email address.
Observe which accounts share the email address.
If the accounts belong to multiple individuals (e.g. a company email shared across employees), we will need more information to deduplicate them:
Reach out to them to explain the situation and ask for unique emails for their accounts.
Once the emails are known, navigate to each account in turn, click Edit on the top right, overwrite their “Email Address 1” field, and click Save on the top right.
Follow up with the members, letting them know to use the updated email addresses to sign in at the front desk.
If the accounts all belong to the same individual, we can deduplicate them easily:
Click through to any of the accounts in Neon
Click the ellipses “…” on the top right, then Find Duplicate
If no duplicates are found, click “Change Match Criteria” on the top right and tweak it until it finds the duplicate account.
Click “Compare Accounts”, then select the destination account to merge into. If you're not sure, pick the account with a lesser ID number
Continue through the guided merge flow until the accounts have been merged.
...signed in at the front desk but has a non-Active membership status in Neon
When entering Protohaven, all members must sign in via the kiosk at the front desk. When they do so, their Neon account is checked for an active membership. This error indicates that their membership is not currently active.
The membership could have recently expired, either by choice or due to failure to charge the card on file
The member might have entered the wrong email for the Neon account they're attempting to use
Their membership may have been revoked (either due to exiting a program where membership is provided, or due to suspension from too many policy violations)
In any case, we need to understand what the situation is:
Browse to the account in Neon CRM and click on the Memberships button on the left.
Check their membership history to see whether their membership was recently ended.
Email the member and share context on the state of their membership - remind them that they must have an active membership to operate tools and equipment in the workshop, and ask whether they'd like to make changes to their membership or leave it as inactive.
Assist the member in updating their membership, or make a note if they no longer wish to be a member (see the “Notes” button on the top right of the About page for the account in Neon).
Abnormal zero-cost membership
This occurs when a membership that normally costs money (e.g. General Membership) instead has a $0 monthly fee. This is abnormal and should be resolved in one of two ways:
If the zero-cost membership is intentional (e.g. a gifted membership period for departing staff) then the member's “Zero-Cost Membership OK Until Date” field should be set explicitly to the end of that gift period. Use YYYY-MM-DD format for this field, e.g. 2024-02-01 for Feb 1st, 2024.
If the zero-cost membership is not intended, reach out to the member to set up autopayment for the membership, at the correct price (visible at
https://www.protohaven.org/membership/ for most memberships).
Missing required 2+ members in company
All Company, Nonprofit, and Corporate Membership holders must belong to an organization with at least 2 members. If this validation error is raised:
Browse to the account in Neon CRM, click Company Contacts, and check to see whether there were ever two members in the company or if it's just an orphaned employee.
With context at hand, contact the active member and explain the situation, asking them whether they'd like to (re-)enroll another member into the company membership or shift their membership to a different type (e.g. General Membership).
Assist the member in enrollment and membership changes so that there are either 2+ members in the company, or they no longer have a Company/Nonprofit/Corporate membership.
Missing required non-additional paid member in household
This validation error indicates that a member has an Additional Family Membership, but that their household in Neon CRM does not have anyone with a non-additional membership. In order to have an Additional membership, you must first have a “regular” membership in your household.
To resolve this error:
Contact the Additional member and explain the situation, asking whether they would like to convert their additional membership into one of the regular memberships (e.g. General, Weekend, or Weeknight), add another regular membership for a different household member, or discontinue their membership to resolve the problem.
Assist the member in converting/changing memberships to resolve the validation issue.
Multiple active memberships
Neon CRM does not require an account to hold exactly one membership - it happens that a member could be unintentionally paying for multiple memberships at the same time.
When this occurs, contact the member (usually via email) and ask them which membership they'd like to keep, and which one they'd like to cancel. Offer to pro-rate their membership for an amount of time matching the cost of double-payment.
Membership with no end date (infinite duration)
This validation error indicates that the active membership is indefinite; this is almost certainly a mistake as it's the equivalent of a single-cost lifetime membership.
To resolve this:
Navigate to the account in Neon CRM, click on Memberships, then the active membership.
Click the Edit button next to “Membership Info”
Manually set the Term End Date field to a reasonable value (you can also try the Calculate button)
Click “Save Changes”
As a courtesy, let the member know (via email) that their membership had a configuration problem and that the renewal/end date is now correctly set.
Needs role X, has [...]
For specialty memberships (such as Instructor, Board Member, and Shop Tech), the member must be part of the relevant group for that membership. This validation error occurs when someone has e.g. an Instructor membership, but lacks the instructor designation in Neon CRM.
To remedy this, reach out to the leads or a board member to understand whether this member is still a part of the group. For instance, they could be a Shop Tech exiting the shop tech program.
If they're no longer part of the group, we will need to end their membership period early:
Browse to their account in Neon CRM
Click on Memberships (on the left panel)
Click on the active membership (blue title link)
Click on Edit
Set the Term End Date to the day before the current date
Click Save Changes
If they're still in the group, we need to ensure they have the appropriate roles assigned:
Navigate to the account page in Neon CRM, and click the Edit button on the top right.
Scroll to the bottom of the edit page and look for the INTERNAL INFORMATION section.
Check the boxes under “
API server role” to set the appropriate roles for the member.
Scroll to the top and click the Save button
Income based rate field not set for AMP membership
AMP memberships are income-based and require a proof that the member's income qualifies (see https://www.protohaven.org/membership/, “Access to Making Program”).
This validation error occurs when the qualifying bracket is not recorded for the member, but they have an AMP membership.
To remedy:
If this was a recently created account, reach out to the onboarding team (e.g. via the #onboarding channel in Discord) to see if proof of financial condition (e.g. a pay stub) was provided when the member onboarded.
If financial information isn't available, reach out to the member asking for a digital copy of proof of income, to qualify their AMP membership.
When this information is received, open the user's account in Neon CRM and upload it under “Proof of Income” (look for the MEMBERSHIP QUALIFIERS section of the account details).
Then click the Edit button on the top right, select the relevant Income Based Rate value (e.g. “Low Income - 20%”), and click the Save button at the top right of the page.
Ensure the active membership matches the Income Based Rate value, or else you'll soon see the “mismatched income based rate” validation error (as below).
Mismatch between income based rate (X) and membership type Y
Members that qualify for AMP have their Income Based Rate field set to a specific category, e.g. “Low Income - 20%” (indicating a 20% discount on membership). This value is independent of their active membership, which could potentially even be a General membership.
This validation error indicates that the AMP member is not receiving the correct membership for their category. To resolve:
Navigate to the account in Neon CRM and observe the set Income Based Rate value.
Click the Memberships button (on the left), then click on the active membership (title in blue)
Click the Edit button next to Membership Info
Under Membership Term, select the blank entry at the top. Then click it again and select the closest match to the member's current membership (e.g. Weekend Membership - LI if they are listed as Low Income and currently have a Weekend membership of a different type)
Click on Save Changes at the bottom.
Reach out to the member (via email) and let them know that their membership has been adjusted to match the AMP information that we have on file.