Salsa: Spicy CRM Integration for
Drupal-Powered Nonprofits
CapitalCamp
July 26, 2013
John Shortess
4Site Interactive Studios
“Salsa helps nonprofits build,
organize & engage a base of support
with tools to communicate, fundraise,
advocate & build c...
Over 2,000 clients managing over
75 million supporters, including:
•  Electronic Frontier Foundation
•  Democratic Legisla...
Organize
• Supporter
• Signup page
• Event
Fundraise
• Donate page
• Donation
Communicate
• Questionnaire
• Email Blast
• ...
Mild Salsa:
Link to Salsa-Hosted Form
Medium Salsa:
Unauthenticated Forms
Medium Salsa:
Unauthenticated Forms
Medium Salsa:
Unauthenticated Forms
<script	
  src="http://sandbox.salsalabs.com/api/
flashMessageJS.sjs"	
  type="text/javascript"></script>	
  
	
  
<form	
...
Hot Salsa:
Salsa API and Salsa Entity
Salsa API module
Connects Drupal to Salsa’s RESTful API, to
read from or write to nearly any Salsa object
Salsa Entity mod...
• Supporters
• Groups
• Signup pages
• Donate pages
• Questionnaires
• Tell-a-friend pages
• Events
• Petitions
• Targeted...
•  Forms rendered using FAPI – themeable,
alterable
•  Entity Reference integration
•  Rules integration
•  Basic Views in...
Extra Spicy Salsa:
Salsa API and Custom Code
Extra Spicy Salsa:
Salsa API and Custom Code
•  Salsa API module creates a class with
several methods
•  Methods correspon...
$supporter_key	
  =	
  33333266;	
  
$supporter	
  =	
  salsa_api()-­‐>getObject	
  ('supporter',	
  	
  
	
  $supporter_k...
$include	
  =	
  array('supporter_KEY',	
  'Last_Modified',	
  	
  	
  	
  
	
  'First_Name',	
  'Last_Name',	
  'Email',	...
$fields	
  =	
  array(	
  
	
  	
  'First_Name'	
  =>	
  'John',	
  
	
  	
  'Last_Name'	
  =>	
  'Doe',	
  
	
  	
  'Emai...
salsa_api()->getReport
try	
  {	
  
	
  	
  $report	
  =	
  salsa_api()-­‐>getReport(12345);	
  
	
  	
  $leaders	
  =	
  ...
What’s Next?
•  A few new API methods
•  A few objects not yet supported in Salsa
Entity
•  Drupal 8 versions
Questions?
john@4sitestudios.com
4SiteStudios.com
@johnshortess
@4SiteStudios
Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Capitalcamp 2013 - Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits
Upcoming SlideShare
Loading in …5
×

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

1,448 views
1,279 views

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,448
On SlideShare
0
From Embeds
0
Number of Embeds
653
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Salsa: Spicy CRM Integration for Drupal-Powered Nonprofits CapitalCamp July 26, 2013 John Shortess 4Site Interactive Studios
  2. 2. “Salsa helps nonprofits build, organize & engage a base of support with tools to communicate, fundraise, advocate & build community.”
  3. 3. 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)
  4. 4. 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’
  5. 5. Mild Salsa: Link to Salsa-Hosted Form
  6. 6. Medium Salsa: Unauthenticated Forms
  7. 7. Medium Salsa: Unauthenticated Forms
  8. 8. Medium Salsa: Unauthenticated Forms
  9. 9. <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
  10. 10. Hot Salsa: Salsa API and Salsa Entity
  11. 11. 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
  12. 12. • 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
  13. 13. •  Forms rendered using FAPI – themeable, alterable •  Entity Reference integration •  Rules integration •  Basic Views integration through efq_views Hot Salsa: Salsa API and Salsa Entity
  14. 14. Extra Spicy Salsa: Salsa API and Custom Code
  15. 15. 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
  16. 16. $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'  =  'john@test.null',      'Receive_Email'  =>  1,      'Email_Status'  =>  1,      'Email_Preference'  =>  'html',      'Soft_Bounce_Count'  =>  0,   salsa_api()->getObject
  17. 17. $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
  18. 18. $fields  =  array(      'First_Name'  =>  'John',      'Last_Name'  =>  'Doe',      'Email  =>  'john@zoom.com',      '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
  19. 19. 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');           }  
  20. 20. What’s Next? •  A few new API methods •  A few objects not yet supported in Salsa Entity •  Drupal 8 versions
  21. 21. Questions? john@4sitestudios.com 4SiteStudios.com @johnshortess @4SiteStudios

×