Hi Glyn,
I think I can help answer your questions. :-)
(1) What does the “Custom String Value” do (i.e. custom=”” on a ProForm) and why does it contain the domain name?
The custom attribute is an attribute that PayPal gives s2Member access to, and s2Member uses it to verify that the transaction is meant for s2Member to process. s2Member checks that the custom attribute is set to your domain name (along with checking a few other values) to make sure that the transaction it’s getting is not meant for, say, an eBay sale, or a different site that you have your PayPal account hooked into. This should always stay as your domain name to prevent conflicts.
(2) What happens to a (level 1,2,3, or 4) user’s recurring payments if I change their role to author, editor or admin? What happens if I then change them back to level 1 again?
s2Member does not perform any changes when a recurring payment is performed to users. In fact, you could take someone that is paying for level 1 and manually push their account up to level 3, and s2Member will not demote at any point other than when they stop paying and lose access.
If you don’t want a User to be demoted even if they stop paying for access, you can simply remove their Paid Subscription ID from their profile, and s2Member won’t link the User’s transaction to their account anymore, making it impossible for s2Member to automatically demote them.
See: Dashboard -› Users -› Edit
(3) I understand that all financial details are held by PayPal, but does s2Member keep any record of how much a user has paid, which ProForm was used during signup, and which coupon codes were used?
No, s2Member won’t store any information like that by default. If you want to track your User types, I would suggest that you check out Custom Capabilities (ccaps). These (Custom Capabilities) are standalone capabilities that are given to Users on signup or upgrade and can be used to protect content or separate members aside from Membership Levels.
See: Dashboard -› s2Member® -› API / Scripting -› Custom Capabilities
To give you an example, you might give your Student members the Custom Capability “student”. Then, you can check if any particular User is a student with Shortcode Conditionals.
Example of using Shortcode Conditionals:
[s2If current_user_can('access_s2member_ccap_student')]
You are a Student User!
[/s2If]
See: Dashboard -› s2Member® -› API / Scripting -› Simple/Shortcode Conditionals
You can generate Pro Forms / Buttons with Custom Capabilities baked right in, or add them in later by editing the ccaps attribute that’s in your Buttons and Pro Forms’ Shortcodes.
Does that help?