SignIt: Petions and Activist Mail in Drupal and CiviCRM

One of the missing fruits in the Drupal module cornucopia has been online petitions. It seems with each major release of drupal there has been something “petition like” but never has a module really satisfied a broad range of requirements around petitions.

There are many reasons for this, to be sure, competiting CRM solutions (to use CiviCRM or not), various specialized petition requirements, numerous ad-hoc soolutions. Online petitions falling out of favor with the people who typically might use them.

At its core, a petition is a very simple thing. Some text that people can sign their name to. Add some whistles: people can add comments, email the petition to other friends, statistics and metrics, reporting, petition delivery, automatic scheduling of closing dates for signature collection, and probably a whole bunch of others.

Petitions are similar, in some ways, to “activist mail”, email messages that users can send to targets. The only difference is that a petition does not immediately get sent to a target each time a user signs it.

Activist mail is similar to a letter to the editor in that a user customizes or writes a letter from scratch and sends it to one or many publications, usually picked off of a list based on geography.

Drupal has had some good modules that deal with the later two functions: Citizen Speak and LTE come to mind specifically. Both were so similar that I encouraged Development Seed (the LTE maintainer) to look at folding in some of the CitizenSpeak functionality. We used the resulting module SeedCampaign to great success on the SaveOceanBeach site which collected hundreds of letters to the Goldengate National Recreation Area and SF based newspapers ultimately blocking a beach fire ban and bringing a community together to run a contest, fund and install firepits and rings and clean up the beach under the auspices of a newly minted organization the Save Ocean Beach Foundation.

But then came CCK and Drupal5 and SeedCampaign did not really evaolve to work in the new ecology. I envisioned a versatile module that worked with CCK to allow a site administrator to create many different kinds of nodes that all could be “signed” by users. Some could be sent off to a target, others could simply collect signatures. This new module would work with CiviCRM to act as a repository for “targets” which could be villainous politicians or newspaper editors, or evil business owners or real estate developrs. CiviCRM would also hold the data of users who signed one of these nodes. CiviCRM could also be used to add fields to the signing form. And all the time CiviCRM could be completely optional!

The SignIt module was really born early this in 2007 around the time of our New Orleans Retreat, and has been solwly evolving and maturing ever since. We have used it many times on to collect signatures on petitions and open letters. We have also used it on to collect petition signatures.

So what does it do? Similar in some ways to the SignUp module, SignIt can be enabled on any CCK content type. It has 3 main options:
Collect Signatures only (petition)
Batch Send (this will send a batch of emails to the target)
Send Immediately (send an email as soon as a user signs)

Some other options let users add a comment (useful for petitions), or a personal message (useful for activist mail and open letters, the personal message will be added to the body of the email).

When creating a SignIt enabled node, the admin also has options for determining the targets:
Allow user to input their own target
Allow users to select a target
Explicitly Define the target

If CiviCRM is enabled, the target list can be pulled from a civiCRM group (useful for a letter to the editor, or letter to elected officials. Just add the targets to a CiviCRM group and then define that group as the list of potential targets in your SignIt enabled node.) User data collection can take place through a CiviCRM profile, and signers can be added to a particular group on signing.

If CiviCRM is not enabled, then the signer data gets added to a signit_signers table in your drupal database.

The user creating the SignIt enabled node can choose a start and end date and can even add some padding to the numbers, and choose whether or not statistics are displayed. Each SignIt node can have it’s own thankyou page as well!

How do you use signit?
Install the signit module
Create a CCK node
Enable the signit functionality

If CiviCRM is enabled, there is some additional configuration in the signit form to enable target group selection, signer groups and civicrm profiles for data collection.