27
Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits CapitalCamp July 26, 2013 John Shortess 4Site Interactive Studios

Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Embed Size (px)

DESCRIPTION

Salsa is a SaaS platform that helps nonprofits and political campaigns of all sizes to fundraise, advocate, communicate and organize online. This session from CapitalCamp 2013

Citation preview

Page 1: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

CapitalCamp July 26, 2013

John Shortess

4Site Interactive Studios

Page 2: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

“Salsa helps nonprofits build, organize & engage a base of support with tools to communicate, fundraise, advocate & build community.”

Page 3: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Over 2,000 clients managing over 75 million supporters, including:

•  Electronic Frontier Foundation

•  Democratic Legislative Campaign Committee

•  League of Women Voters

•  Robert Wood Johnson Foundation

•  National Association of Court Appointed Special Advocates (CASA)

Page 4: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Organize

• Supporter

• Signup page

• Event

Fundraise

• Donate page

• Donation

Communicate

• Questionnaire

• Email Blast

• Tell-a-friend Page

Advocate

• Petition

• Targeted Action

Salsa 101: Modules & ‘Objects’

Page 5: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Mild Salsa: Link to Salsa-Hosted Form

Page 6: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Medium Salsa: Unauthenticated Forms

Page 7: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Medium Salsa: Unauthenticated Forms

Page 8: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Medium Salsa: Unauthenticated Forms

Page 9: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

<script  src="http://sandbox.salsalabs.com/api/flashMessageJS.sjs"  type="text/javascript"></script>    <form  action="http://sandbox.salsalabs.com/save">    <input  type="hidden"  value="supporter"  name="object”  />    <input  type="hidden"  value="1234"  name="organization_KEY”  />    Your  email:  <input  type="text"  value=""  name="Email”  />    Your  ZIP  Code:  <input  type="text"  value=""  name=”Zip”  />      <input  type="hidden"  name="required"  value="Email,Zip"/>      <input  type="Submit"  value="Submit  Form”  />  </form>  

Medium Salsa: Unauthenticated Forms

Page 10: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Hot Salsa: Salsa API and Salsa Entity

Page 11: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Salsa API module Connects Drupal to Salsa’s RESTful API, to read from or write to nearly any Salsa object

Salsa Entity module Exposes Salsa objects as Drupal entities

Hot Salsa: Salsa API and Salsa Entity

Page 12: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

• Supporters

• Groups

• Signup pages

• Donate pages

• Questionnaires

• Tell-a-friend pages

• Events

• Petitions

• Targeted Actions

• Unsubscribe pages

Supported Objects (so far):

Hot Salsa: Salsa API and Salsa Entity

Page 13: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

•  Forms rendered using FAPI – themeable, alterable

•  Entity Reference integration

•  Rules integration

•  Basic Views integration through efq_views

Hot Salsa: Salsa API and Salsa Entity

Page 14: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Page 15: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Page 16: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Extra Spicy Salsa: Salsa API and Custom Code

Page 17: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Extra Spicy Salsa: Salsa API and Custom Code

•  Salsa API module creates a class with several methods

•  Methods correspond to the calls in Salsa’s external API

Page 18: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

$supporter_key  =  33333266;  $supporter  =  salsa_api()-­‐>getObject  ('supporter',    

 $supporter_key);    

Returns:  array(      'supporter_KEY'  =>  33333266,      'organization_KEY'  =>  17594,      'Last_Modified'  =>  'Tue  Feb  19  2013  18:30:52  GMT-­‐0500  (EST)',      'Date_Created'  =>  'Tue  Feb  05  2013  17:41:42  GMT-­‐0500  (EST)',      'Title'  =>  '',      'First_Name'  =>  'John',      'MI'  =>  'Q',      'Last_Name'  =>  'Public',      'Suffix'  =>  'Jr.',      'Email'  =  '[email protected]',      'Receive_Email'  =>  1,      'Email_Status'  =>  1,      'Email_Preference'  =>  'html',      'Soft_Bounce_Count'  =>  0,      'Hard_Bounce_Count'  =  0,      ...  

salsa_api()->getObject

Page 19: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

$include  =  array('supporter_KEY',  'Last_Modified',          'First_Name',  'Last_Name',  'Email',  'City',    'State',  'Zip');  

$conditions  =  array(      'Last_Modified'  =>  array(          '#operator'  =>  '>’,          '#value'  =>  date("Y-­‐m-­‐d  H:i:s",  $lastrun)        ),  );  $orderBy  =  array('Last_Modified  DESC');  $limit  =  $offset  .  ",500";  $supporters  =  salsa_api()-­‐>getObjects('supporter',  

 $conditions,  $limit,  $include,  $orderBy);  

salsa_api->getObjects

Page 20: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

$fields  =  array(      'First_Name'  =>  'John',      'Last_Name'  =>  'Doe',      'Email  =>  '[email protected]',      'Zip'  =>  '01234',  );  $links  =  array(      array(          'link'  =>  'supporter_groups',          'linkkey'  =>  10000,      ),      array(        'link'  =>  'supporter_groups',          'linkkey'  =>  10001,      );  );  $new_key  =  salsa_api()-­‐>save('supporter',  $fields,  $links);  

salsa_api()->save

Page 21: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Page 22: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

salsa_api()->getReport

try  {      $report  =  salsa_api()-­‐>getReport(12345);      $leaders  =  $report['row']['totalleaders'];      variable_set('pon_leaderboard_leaders',  $leaders);  }  catch  (SalsaQueryException  $e)  {      $leaders  =  variable_get('pon_leaderboard_leaders');  }  catch  (SalsaConectionException  $e)  {      $leaders  =  variable_get('pon_leaderboard_leaders');          }  

Page 23: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Page 24: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Page 25: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Page 26: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

What’s Next? •  A few new API methods

•  A few objects not yet supported in Salsa Entity

•  Drupal 8 versions

Page 27: Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits

Questions?

[email protected]

4SiteStudios.com

@johnshortess

@4SiteStudios