Filters

Op verschillende plekken in de CampaignSuite code zijn Wordpress filters ingebouwd. Deze maken het mogelijk om als developer in het thema invloed uit te oefenen op de data die op dat moment door CampaignSuite wordt gebruikt. 

Alle filters kunnen het beste geplaatst worden in de functions.php van uw thema. Klik op onderstaande artikelen om de verschillende filters te bekijken.

cs_validate_contact_account

Beschrijving

Met dit filter kunt u de contact- en account-array manipuleren wanneer deze gegevens worden gemaakt vlak voordat een formulier wordt gevalideerd.

Gebruik

				
					add_filter( 'cs_validate_contact_account', 'custom_contact_account' );

//You can also use a Gravity Forms form ID to target a specific form
add_filter( 'cs_validate_contact_account_6', 'custom_contact_account' );				
			


Parameters

  • $contact_account (array)
    Deze array geeft de weergegeven contact- en account-arrays door. Deze waarde moet worden geretourneerd in de filterfunctie.
  • $payer (object)
    Dit is het volledige object van de Payer-klasse van CampaignSuite. Dit object bevat verschillende extra informatie over de betaler.

Voorbeeld

				
					add_filter('cs_validate_contact_account', 'validate_contact_account', 10, 2);
function validate_contact_account($contact_account, $payer)
{
    [$contact, $account] = $contact_account;
    if (isset($contact['Phone']) && !empty($contact['Phone'])) {
        if (isMobile($contact['Phone'])) {
            $contact['MobilePhone'] = $contact['Phone'];
            unset($contact['Phone']);
        }
    }
    
    if ($payer->accountRecordType != 'Household') {
        $contact['soco__Assign_Donations_to_Parent_Account__c'] = true;
    } else {
        $contact['soco__Assign_Donations_to_Parent_Account__c'] = false;
    }
    
    return [$contact, $account];
}				
			

cs_post_submit

Beschrijving

Met dit filter kunt u acties uitvoeren na een succesvolle inzending bij de Campaign Suite API.

Gebruik

				
					add_filter('cs_post_submit', 'post_submit', 10, 1);				
			


Parameters

  • $response (object)
    Dit is het volledige \CampaignSuite\Render_response() klasseobject van CampaignSuite. Dit object bevat informatie over het response dat wordt geretourneerd door de CS Api.

Voorbeeld

Onderstaand voorbeeld schrijft een $_SESSION[‘orig_campaign’] waarde weg op het Salesforce object Contact.

				
					function post_submit($response)
{
  if (isset($_SESSION['orig_campaign'])) {
        $sf_client = instance('Client_Salesforce');
        $sf_client->update(
            'Contact',
            $_SESSION['orig_campaign']['contact_id'],
            [
                'soco__Originating_Campaign__c' => $_SESSION['orig_campaign']['campaign_id']
            ]
        );
        unset($_SESSION['orig_campaign']);
    }
    return $response;
}				
			

cs_get_feed_actions

Beschrijving

Met dit filter kunt u aangepaste feedacties toevoegen aan Gravity Forms.

Gebruik

				
					add_filter('cs_get_feed_actions', 'get_feed_actions', 10, 1);				
			


Parameters

  • $actions (array)
    Dit is een array met de beschikbare acties. U kunt meer elementen aan deze array toevoegen voor aangepaste acties.

Voorbeeld

				
					function get_feed_actions($actions)
{
  $extraActions = [[
    'label' => 'Maak een nieuwe Lead aan',
    'value' => 'custom_lead',
    'object' => 'Lead',
    'objectName' => 'Lead'
  ]];
  return array_merge($actions, $extraActions);
}				
			

cs_get_contact_filter_fields

Beschrijving

Met dit filter kunt u meer Salesforce-contactpersoonvelden toevoegen om te controleren wanneer een contactpersoon-ID wordt doorgegeven in de URL. Standaard wordt een contactpersoon alleen gevonden op basis van een contact-ID. Voor meer veiligheid is het mogelijk om meer velden aan deze controle toe te voegen.

Gebruik

				
					add_filter('cs_get_contact_filter_fields', 'get_contact_filter_fields', 10, 1);
				
			

Parameters

Geen

Voorbeeld

Onderstaand voorbeeld voegt het veld Contact.Email toe als extra check in de URL.

				
					function cs_get_contact_filter_fields(){
    return ['Email'];
}				
			

cs_add_custom_json

Beschrijving

Met dit filter kunt u eigen custom JSON toevoegen aan de API call richting Findock of Converse. Deze JSON zal toegevoegd worden aan de root van het JSON object.

Gebruik

				
					add_filter('cs_add_custom_json', 'custom_json', 10);				
			

Voorbeeld

Onderstaand voorbeeld loopt door Woocommerce items in een winkelwagen en controleert of er Destination ID’s gezet zijn. Als dat het geval is zullen deze worden meegegeven in de JSON call naar de CampaignSuite API.

				
					function custom_json()
{
    global $woocommerce;
    if ($woocommerce) {
        $items = $woocommerce->cart->get_cart();
        if ($items) {
            $jsonItems = [];
            foreach ($items as $values) {
                $price = get_post_meta($values['product_id'], '_price',true);
                $destination_id = get_post_meta($values['product_id'], '_sf_destination_id', true);
                if ($destination_id) {
                    $jsonItems[] = [
                        'DestinationId' => $destination_id,
                        'Amount' => $price
                    ];
                }
            }
            if ($jsonItems) {
                return [
                    'TransactionInfo' => [
                        'Gifts' => $jsonItems
                    ]
                ];
            }
        }
    }
    return [];
}				
			

Actions

cs_post_webhook_action

Beschrijving

Met deze actie kunt u zelf de webhook call opvangen zodat u zelf in een eigen actie kunt bepalen of er nog extra code uitgevoerd moet worden zodra er een webhook call plaatsvindt vanuit Salesforce/Findock

Gebruik

				
					function do_custom_stuf( $payment ) {
    die(print_r($payment));
}
add_action( 'cs_post_webhook_action', 'do_custom_stuff', 10, 1 );				
			

Parameters

  • $payment (object)
    Dit object bevat alle informatie over het aangepaste Payment object uit de database tabel wp_gp_donations.

URL parameters

U kunt in de URL van uw website diverse parameters toevoegen om debug opties te activeren van CampaignSuite. Hiermee is het bijvoorbeeld mogelijk om de call richting de CampaignSuite API of Converse en Findock te debuggen.

Mogelijke parameters zijn:

?cs_debug

				
					https://www.website.nl/formulier?cs_debug=true				
			

Wanneer deze parameter wordt toegevoegd, wordt automatisch een formulier geladen zonder ajax. Wanneer het formulier is ingevuld, ziet u de JSON die naar de CampaignSuite API wordt verzonden. Het toont u ook de JSON die vanuit de API naar Salesforce wordt verzonden. Dit alles voordat Gravity Forms de invoer daadwerkelijk maakt.

?cs_post=true

				
					https://www.website.nl/formulier?cs_post=true				
			

Wanneer deze parameter wordt toegevoegd, toont elke pagina u de geposte waarden. Dit kan handig zijn als u de exacte geposte veldnamen wilt weten. Deze namen kunnen worden gebruikt in tekstgebied- en HTML-velden om vooraf te vullen met die veldwaarden.

?cs_ajax

				
					https://www.website.nl/formulier?cs_ajax=false				
			

Gebruik deze parameter om een Gravity Forms Ajax-instelling te overrulen met true of false.

?contact=0030E00000dRyVKQA0

				
					https://www.website.nl/formulier?contact=0030E00000dRyVKQA0				
			

Het ID wat in deze parameter wordt doorgegeven, moet een Salesforce-contactpersoon-ID zijn. Als de contactpersoon wordt gevonden in Salesforce, worden alle toegewezen contactpersoon- en accountvelden vooraf ingevuld met de waarden van Salesforce.

Client connecties

Als developer heb je de beschikking om de geautoriseerde verbindingen ook in je eigen thema te gebruiken. Er zijn een aantal voorgedefinieerde functies die je per connectie kunt gebruiken. Start elke connectie altijd eerst op de onderstaande manier:

				
					//Salesforce connection
$salesforce = instance('Client_Salesforce');

//Mautic connection
$mautic = instance('Client_Mautic');

//Pardot connection
$pardot = instance('Client_Pardot');

//Dynamics connection
$dynamics = instance('Client_Dynamics');
				
			

Bekijk onderstaande artikelen om de beschikbare functie per connectie in te zien.

Salesforce

getObjects

Deze functie kan worden gebruikt om een lijst met objecten op te halen uit SalesForce of een enkele wanneer een ID wordt doorgegeven.

				
					/**
    * @param string $objectType Name of the Salesforce object
    * @param string $id Optional Salesforce ID of the object
    * @param array $fields Optional array with fields to return from the object
    * @param array $where Optional array with filters
*/
function getObjects($objectType = '', $id = '', $fields = [], $where = []){}				
			

getObjectStructure

Deze functie kan worden gebruikt om de structuur van een Salesforce-object op te halen.

				
					/**
   * @param string $objectType The name of the Salesforce object
   * @return object $response The API response
   *
   */
  function getObjectStructure($objectType = ''){}				
			

createCampaignMember

Deze functie doet een Post-verzoek aan de API voor een nieuw CampaignMember-object in Salesforce.

				
					/**
   * @param string $campaign_id Id of the Campaign
   * @param string $contact_id Id of the Contact
   * @return mixed
   */
  function createCampaignMember($campaign_id, $contact_id){}				
			


create

Functie om een nieuw record van een object in Salesforce te maken.

				
					/**
 * @param string $object Name of the Salesforce object
 * @param array $data Data to save
 */
function create($object, $data){}				
			

update

Functie om een record van een object in Salesforce bij te werken.

				
					/**
   * @param string $object Name of the Salesforce object
   * @param string $id Id of the Salesforce object
   * @param array $data Data to save
   */
  function update($object, $id, $data){}				
			

delete

Functie om een record van een object in Salesforce te verwijderen.

				
					/**
   * @param string $object Name of the Salesforce object
   * @param string $id Id of the object to delete
   */
  function delete($object, $id){}				
			

Mautic

getForms

Functie om alle Mautic formulieren op te halen. Wanneer $id is doorgegeven, wordt slechts één formulier geretourneerd.

				
					/**
   * Function to retrieve all Mautic forms. When $id is passed, only one form is returned
   *
   * @param $id int Id of a Mautic form
   * @return array $forms Returns an array of Mautic forms
   */
  public function getForms($id = ''){}				
			

createForm

Deze functie zal een nieuw Mautic-formulier creëren op basis van een Gravity Forms-formulier en zijn velden.

				
					/**
   * @param $type string Type can be Campaign or Standalone
   * @param $form array The gravity Forms form as an array
   */
  public function createForm($type, $form){}				
			

postFormEntry

Deze functie stuurt rechtstreeks een wp_remote_post() verzoek naar Mautic. Dit is nodig omdat Mautic het IP-adres van de bezoeker nodig heeft om het contact te identificeren.

				
					/**
   * @param $form_id int Id of the Mautic form
   * @param $data array Array of the data to post to the form
   */
  public function postFormEntry($form_id, $data){}				
			

updateEntry

Met deze functie wordt een Mautic-formulier inzending bijgewerkt op basis van bepaalde voorwaarden.
				
					/**
   * @param int $mautic_form_id The Mautic form ID
   * @param array $where Array of conditions
   * @param array $updates Array of fields to update
   */
  function updateEntry($mautic_form_id, $where, $updates){}				
			

Endpoints

Wanneer CampaignSuite geactiveerd is komen er een aantal nieuwe endpoints bij binnen Wordpress. Deze endpoints kunnen aangeroepen worden door software van derden. Hieronder staan deze endpoints uitgelegd met de daarbij behorende parameters.

gp_webhook_path

Dit endpoint kan benaderd worden door Findock en handelt alle webhook aanroepen af met betrekking tot wijzigingen van een betaling (of in het geval van Findock 2 mutaties in het PaymentIntent). CampaignSuite bepaalt zelf automatisch op basis van de inhoud van de call of het voor Findock v1 of v2 is. Bij elke API call richting Findock voegt CampaignSuite automatisch deze URL toe als WebhookURL.

Voorbeeld

				
					{root_url}/wp-json/campaignsuite/v1/gp_webhook_path				
			

update_mautic_integration

Dit endpoint kan worden gebruikt om een Mautic Lead Integration te verwijderen. Dit endpoint is alleen toegankelijk met een POST-aanvraag met de volgende parameters:

Parameter Beschrijving
email
Het e-mailadres van een Mautic lead
entityId
Het Mautic entiteit om te verwijderen
entityId
De ID van de Salesforce-entiteit (bijv. Campaign ID)

Voorbeeld

				
					{root_url}wp-json/campaignsuite/v1/update_mautic_integration				
			

update_lead_field

Dit endpoint kan worden gebruikt om een Mautic Lead Integration te verwijderen. Dit endpoint is alleen toegankelijk met een POST-aanvraag met de volgende parameters:

Parameter Beschrijving
email
Het e-mailadres van een Mautic lead
field
Het Mautic veld alias om te updaten
value
De nieuwe waarde om op te slaan
action
Kies hier uit 'add' of 'remove'

Voorbeeld

				
					{root_url}wp-json/campaignsuite/v1/update_lead_field				
			

One-click-payment

One-click-payment is een manier om via een URL direct een donatie te maken waarbij de bezoeker in één keer doorgestuurd wordt naar zijn/haar bank-pagina. Het voordeel hiervan is is dat de complete flow identiek is aan het invullen van een donatie formulier, echter zonder tussenkomst van de pagina waar het formulier op staat.

Om One-Click-Payment te laten werken moet u minstens voldoen aan de volgende punten:

  1. Er moet een formulier aangemaakt zijn welke volledig gekoppeld is aan een Salesforce betaling
  2. Het formulier moet wel op een pagina (desnoods verborgen) staan voor het geval de donateur zijn/haar donatie beëindigd. 
  3. Er moet een bedank bericht of bedank pagina ingesteld staan voor het succesvol afvangen van de donateur.
  4. De velden van het formulier die u wilt vullen moeten ingesteld zijn om dynamisch gevuld te mogen worden. Lees meer informatie hierover op deze website.

Als bovenstaande punten ingesteld zijn kan de URL voor een One-Click-Payment er als volgt uit zien:

				
					https://www.website.nl/oneclick?amount=5&form_id=1&email=donateur@website.nl&bank=INGBNL2A&firstname=Voornaam&lastname=achternaam				
			

Er zijn een aantal verplichte parameters in de URL:

  • amount
    Vul hier het bedrag in voor de donatie
  • form_id
    Vul hier het ID in van het Gravity Forms formulier waar de betaling afgehandeld moet worden
  • contact (optioneel)
    Vul hier een ID in van een Salesforce Contact

Als u geen Salesforce Contact ID mee stuurt in de URL zijn een voornaam, achternaam en e-mailadres ook verplicht om mee te sturen in de URL.

Zodra men op de link klikt zal het formulier vooraf ingevuld worden met de benodigde waarden en verstuurd worden via de API. Als er velden missen of fouten plaatsvinden dan worden die direct in beeld getoond.