I've got a site with 14000+ members who have email addresses. Using Views Bulk Operations, I'm able to subscribe them all to a VR mailing list. Just to make it easy for the users, we are planning to let the users send VR emails directly from the verticalresponse.com site.
1) I'm planning to add a checkbox on each user's Drupal profile to allow them to unsubscribe from these mailings. If they unsubscribe, my view will filter out these users. (We will send some emails directly from our site, so we will need other profile checkboxes to opt out of our direct emails.)
2) Recipients could also unsubscribe by clicking a link in the email which will unsubscribe them directly at VR.
So, how do we update this mailing list using our view?
a) If we select all users in our view and select "Subscribe to x mailing list", I'm assuming it will add new email addresses, but not remove opted out users.
b) If we remove all users from the mailing list and re-add them using this view, I'm assuming that we will lose the unsubscribe data submitted directly to VR. Likewise, if we just use a new VR mailing list, we will lose the unsubscribe data submitted directly to VR.
In general, what are best practices for allowing users to subscribe and unsubscribe? It almost seems like I can't use the unsubscribe capabilities of VR. I will be forced to point an unsubscribing user to our site, have them log on and click the unsubscribe checkbox.
| Comment | File | Size | Author |
|---|---|---|---|
| #4 | vr_list-955948-4.patch | 2.71 KB | jbomb |
| #3 | vr_list-955948-3.patch | 2.67 KB | jbomb |
| #1 | User Subscriptions Form (VR List Manager) | 18.06 KB | jbomb |
Comments
Comment #1
jbomb commentedI'd like to start by stating that the bulk operations were originally added to the 1.x branch as a tool for migrating existing mailing lists into VerticalResponse. The list manager utility includes a tool that allows users to manage their own VerticalResponse mailing list subscriptions on their user profiles. Their profile form posts to VR via the API and removes their subscription from VerticalResponse when they unsubscribe. Users can subscribe to lists on their own using the bundled registration module, or the provided CCK widget.
I would say that is the "best practice" for the 6.x-1.0 branch because the subscription information lives in VR. This eliminates the burden of syncing a Drupal CCK field with a subscription property in VR.
Alternatively, VR 6.x-1.1 provides "Add to list" and "Remove from list" user operations. You might consider making both actions available to the VBO form with the filter for "subscribed" vs. "suppressed" exposed so that an admin can run both operations from the same form.
Maybe I could be more helpful if I knew more about your project requirements.
Comment #2
Rick Nashleanas commentedOK, I'm starting to get it. I had previously not had the VR user registration module turned on. We have had to severely theme the user profile screen, so the Mailing List tab is not appearing, but that's our deal. I would enable the mailing lists I'd like to appear on the user profile screen at /admin/build/vr/list/register.
On our site, we have roles of nonpaying "guests", "members" and "inactive members" (whose membership has lapsed). We only want to send emails to members at this time, but, in the future, we might want to send separate emails to guests and inactive members.
For our member mailing list, we only want users with the "member" role who have a valid email address. (We transferred this member database from an offline system and we didn't have emails for everyone, so we had to construct bogus email addresses to create their online profile.)
To initially populate the "Members with valid email addresses" list, I'm assuming that I would use my views that uses Views Bulk Operations. Is this correct?
For new members, if I have the mailing list enabled at /admin/build/vr/list/register and have it set to the Selected radio button, I'm assuming that a new user will automatically be added to the VR list. Is that correct?
However, if a new Guest signs up, I don't want him/her to be on the VR list. Instead, do we need to set the mailing list to Deselected at /admin/build/vr/list/register and then set a trigger when the "member" role is assigned and then add him/her to the VR mailing list?
Likewise, if a member lets his membership lapse, he/she loses their "member" role and is assigned an "inactive member" role. I'm assuming that we must again set a trigger when this happens to remove him from the active member VR list.
I don't see any VR actions on my site. If I'm on track here, I would need to create an action to add someone to a VR list and an action to remove someone from a VR list. Ever done that before? Any code to share? Instead, do we need to build a module to accomplish this?
If I'm not on track, please set me straight. Thanks for your help!
Comment #3
jbomb commentedI do think you're on the right track. The default state of the subscription checkbox is designated in the vr_registration settings. Therefore, registering users will see the list name and a checked subscription box if the default state is set to "selected." Registering users will encounter the list name and an empty box if this the list's default state is set to "deselected" -- perhaps that language should change. There is a third option (hidden), which essentially subscribes ALL registering users. The "hidden" option was included for use cases in which users were instructed to create a user account in order to receive the newsletter.
It sounds to me that you are managing your roles using actions, and so perhaps the vr_registration bit isn't necessary for you. You are in luck, there are existing actions for the vr_list module, they're just not in the 6.x-1.0 branch. I've re-factored them for the 6.x-1.0 branch and attached them as a patch to vr_list. The patch is untested, but should have you well on your way to getting those triggered actions setup.
Comment #4
jbomb commentedForgot to invoke vr_api() for the delete operation...