Invite Anyone plugin:
https://wordpress.org/extend/plugins/invite-anyone/
I don’t think that plugin has the “tracing” ability you want though. You could bring it up to Boone, the plugin author, as a feature request.
I’m becoming a fan of WP-Invites and you might want to try this…
https://wordpress.org/extend/plugins/wp-invites/
It’ll allow you to dole out codes for users to signup and as far as tracing goes, I’d just generate one invite code for each existing member and it’ll store that invite code with the new user profile so that you are able to determine who the invitation was send from based on which user was giving the code. I’d even go so far as manually generating the code with the existing username in it so that you don’t have to go digging to determine whom signed up whom.
The Invite Anyone plugin does keep track of who invites who, so that it can automatically send group invitations and friendship requests when an invitation is accepted. There’s not a ready-made interface for admins (or invitees, for that matter) to trace how an individual found out about a site (most of my energy went into building a Sent Invites screen for *inviters* to keep track of who they invited), but it would be easy enough to create such an interface with the data that’s already there.
Not having open registration makes it trickier, though, because my plugin just hooks into the existing BP registration and does not limit who can register. I can imagine that it wouldn’t be too hard to connect something like WP Invites and the data collected by my plugin, but it’s probably a bit more work than I can do right this moment. I guess for your purposes I’d suggest looking into WP Invites first.
not so sure bout Invite Anyone, because it DOES keep a log of exactly who a user has invited and the status of his invite as in ACCEPTED with the date etc…. so in essence it COULD form the basis of something bigger… I have tried all above and quite like Invite Anyone… which i could post an image here to show you
Invite Anyone