Introduction

CampaignSuite provides a number of changes in both the way a form is displayed on your website and settings for the forms in Wordpress.

Form on the website

    • CampaignSuite ensures that a loading screen appears over your forms so that the visitor cannot accidentally submit the form multiple times
    • CampaignSuite offers the possibility to display a loading text and loading image when submitting a form
    • Address fields can contain an automatic zip code checker by simply setting the

field

  • And more ..

Editing forms

  • A choice of specific CampaignSuite payment fields that allow you to create a donation form in seconds.
  • Settings may be added to map fields to third party software (such as Salesforce, Mautic, Pardot and Dynamics)
  • Additional E-commerce settings can be made after transactions in forms
  • Several Feed Actions can be set (ie actions that can be performed after submitting a submission). These can also be custom made for you by Gopublic.
  • Separate notifications (such as email notifications) can be set after successful transactions (Converse and Findock)
  • And more …
In the article Edit form we first get started with creating a simple donation form. In this article, we’ll explain some of the basic features of Gravity Forms to get you started in creating a form.

Edit a form

This article uses a simple test form. To use this form you can download the file below and import it into Gravity Forms: Extract this file and import it into Gravity Forms. A new form will be created called Simple Donation. This form consists of 3 pages:
  1. Choose a frequency and amount
  2. Enter name and address
  3. Choose a payment method
The following articles will cover some of the features of Gravity Forms that can be used with these types of forms.

CampaignSuite fields

When CampaignSuite is activated, an extra block of fields will appear when editing a form: CampaignSuite fields . These are fields that are made specifically for forms with a payment option. The fields to choose from are:

  • Frequency
    This field generates a radio field with the different pay frequencies. If you drag this field into your form, you then have the option to check or uncheck options. In this way it is possible, for example, to only show One-time and Monthly. It is also possible to add own frequencies (if these are supported by the third party party responsible for the payments).
  • Amount options
    This is a predefined field with 3 amounts to choose from. It is important that the value of the field is a number (without a currency sign). You are free to change these amounts or add new amounts.
  • Total amount
    With a financial form it is important to have one field where the final amount will be entered. Use the Total amount field to capture multiple Amount options fields with conditional logic. This Total amount field is hidden but will always be filled with an amount that is chosen or filled in with an Other option .
  • Payment method
    This field generates a radio field with different payment methods from which a donor can choose. Here you can check or uncheck options to display in your form.
Notice Message! Your message here

It is not technically possible to pay periodically with Ideal. That is why CampaignSuite automatically ensures that all non-periodically supporting payment methods (Ideal, Paypal, Sofort, Creditcard and Bancontact) are hidden if you donate periodically. This setting can be changed in the CampaignSuite setting under the Salesforce tab.

  • Bank choice
    This field generates a dropdown with the available banks from which a donor can choose. It is possible to add banks yourself if the value is supported by the payment provider.
  • Address (NL)
    This field generates a series of fields that form a Dutch address.
    – Postal Code
    – House number
    – Addition
    – Street
    – City
    There is also an automatic zip code checker. As soon as a postcode and house number are entered, the street and city will be automatically completed.
  • Global optin
    This field shows a checkbox option for an optin on, for example, a newsletter. Of course this field will still have to be mapped with a field in a CRM.

Conditional logic

Conditional logic can be used at the field level. This means that you can hide or show fields based on choices / values of other fields. This setting can be found under the Advanced tab of a field.

The example above says:
Show this field if all conditions are met:
– When the Frequency field equals Once

You can also choose to add multiple conditions. This skill has been used in various places in the example form. Among other things at the IBAN field. This may only be shown if the payment method Debit payment has been selected.

Conditional logic is also applied to the amounts on the first page of our sample form. The donor sees different amounts for a one-off frequency than, for example, a monthly one.

Zipcode checker

CampaignSuite has a built-in Zipcode checker which can be used in any Gravity Forms form. By default, the Zipcode checker is already activated in the CampaignSuite field Address (NL) . But it is also possible to apply this to custom address fields using Custom CSS class on fields.

Suppose your form contains the fields as in the image on the right.

To set the Zipcode checker to this, you must set predefined CSS-class on each field:
– zipcode
– housenumber
– addon
– street
– city

Set this in the field in the Appearance tab:


If all five fields are set correctly, the Zipcode checker will be automatically activated when at least one postcode and house number are entered.

Note

The Zipcode checker is not activated in the Preview mode of the form in the Wordpress admin.

Align field next to each other

Did you know that you can do even more with CSS class ? It is also possible to neatly put separate address fields next to each other with the following CSS class:
gf_left_third
– gf_middle_third
– gf_right_third
Or if you want to put two fields next to each other:
gf_left_half
gf_right_half
The form will then look like this:

Mask input

Input masks provide a visual guide that makes it easier for users to enter information in a specific format, such as dates and phone numbers. Masks can be filled in on Text lines .

You are actually forcing the visitor to enter a form field in a certain way. Think of a postcode (first four numbers and then two letters) or a Dutch telephone number (ten digits). CampaignSuite adds the IBAN mask that you can choose from by default.

This can be set in the Appearance tab of a field:

Possible masks can be:

Description Mask
Zipcode
9999 aa
Date
99-99-9999
Phone number
9999999999

Prefill HTML and textarea

CampaignSuite makes it possible to have a text box or HTML field in your form automatically filled with values from other fields in the form. This can be especially useful for showing a detailed summary of the information entered on the form on your last page of the form.
Note

This functionality only works if your form consists of more than 1 page. The fields are filled when the visitor switches pages in the form.

The images below show two examples of how you can fill a text box and HTML field.

The values of the fields can be entered by the syntax: {input_field_id} Where field_id is the ID of the field in your form.
Did you know

If you add the parameter ?cs_post=true to the URL of the page where your form is located, you will see (when you click the button at the bottom of the form) exactly which field IDs and values you can use when prefilling text boxes and HTML fields.

Timber plugin

It is also possible to apply some logic to the code in the fields. If you have installed the plugin Timber it is also possible to use .twig logic. See this website for an explanation of the possibilities.

Some examples of .twig logic are:

				
					{% if "{input_1}" == "Ideal" %}
    This is an Ideal payment
{% else %}
    This is not an Ideal payment
{% endif %}				
			
				
					{% switch "{input_3}" %}
    {% case 'Ideal' %}
        <p>Ideal payment</p>
    {% case 'Direct debit' %}
        <p>Debit</p>
    {% case 'Creditcard' %}
    {% case 'Sofort' %}
        <p>Other payment method</p>
    {% default %}
        <p>Unknown payment method</p>
{% endswitch %}				
			

Hide prefilled fields

With each Gravity Forms field you can choose to hide it if its value is pre-filled. Follow the steps below to set this up for a field:

  1. Edit a form
  2. Click on a field
  3. Click in the right column on the tab Advanced
  4. Click the option Hide if pre-filled

This now indicates that the field will be hidden if the value is pre-filled. This also applies to the Gravity Forms option Allow field to be filled dynamically.

When you set this, the field will also be hidden if its value is given in the URL.

Marketing Cloud and Salesforce

This function also works if the value of the fields is filled in by data from Marketing Cloud or Salesforce

Form settings

CampaignSuite adds three extra options to the settings of a form.
These can all be found under Settings -> Form settings -> Form options

  • Form loading overlay
    If you have set in CampaignSuite to show a white loading overlay for all forms, you can specify here specifically with this form not to do so.
  • Load form text
    Enter a text here to show when the Gravity Forms form is loading.
  • Load form text color
    Choose a color here for the text that will be displayed using a color picker.
  • Load form image
    Optionally enter a link here to an online .gif image to display below the loading text.

Notifications

When a visitor has completed a form, a notification can be sent by email. When creating a new form, a notification is created by default for the Wordpress admin (Administrator notification). This notification will send an email to the Wordpress admin address with the subject New submission from {form_title} . This notification is sent immediately when the submission is saved.

Once CampaignSuite has been activated, four extra ‘moments’ will be added from which you can choose to have a notification sent:

  1. CampaignSuite payment has been completed
    When the status of a payment is set to completed (Collected), this notification will be sent.
  2. CampaignSuite payment failed
    When the status of a payment is set to Failed, this message will be sent.
  3. CampaignSuite payment is pending
    When the status of a payment is pending (Pending), this notification will be sent.
  4. CampaignSuite payment has been canceled
    When the status of a payment is canceled (Canceled), this notification will be sent.

In this way it is therefore possible to only send an e-mail to a donor when the payment was actually successful.

Salesforce

Once CampaignSuite has set up a connection with Salesforce, a tab named Salesforce will appear with each form under Settings . Here all settings can be made for the connection to Salesforce. Think about:
  • Creating a CampaignMember object
  • Set Plauti Duplicate Check options
  • Link payment fields for a transaction to Converse or Findock
  • Synchronization of CampaignMember objects or Memberships
  • Folders of Contact and Account fields
In this documentation we will go through all the options and explain what you can do with them.

Connect to Salesforce

The connection to Salesforce is always established when the visitor has completed the form completely. Unless you want to pre-fill the form Contact details (see the article Prefills based on ContactId for more information about this). Indicate in the Salesforce settings of the form that a Salesforce connection must be established.
  • Destination ID
    Select one of the available destinations from SalesForce here. A destination is a required field for a transaction to Converse.
  • Campaign ID
    Choose a campaign from Salesforce to either associate a transaction or a Contact (if one is created or found). A campaign is also required for a transaction to Converse.
  • Create Campaign Member
    If you check this option, a CampaignMember object will be created after the visitor has completed the form. If the Contact is already a member of the campaign, nothing will happen.
  • Delete submission immediately
    It is possible to set a form that the created submission must be deleted immediately after the visitor has completed the form. This is often used at Preference centers. This allows, for example, a Contact to update his / her data (or newsletter registrations). To prevent too many entries, these can be deleted immediately.
    PLEASE NOTE : this cannot be undone.

Depending on your Customer Payment Management platform (Converse or Findock), a few more options will appear in this list.

Converse

  • Allow deduplication
    By default this option is set to Yes and is linked to the Converse API field AllowDeduplication .
  • Allow data enrichment
    By default this option is set to Yes and is linked to the Converse API field AllowDataEnrichment .

Findock v1

  • Contact options
    Choose what to do if Findock finds an existing Contact. Overwrite, fill in empty fields only or do nothing
  • Account options
    Choose what to do if Findock finds an existing Account. Overwrite, fill in empty fields only or do nothing
  • Allow deduplication
    By default this option is set to Yes and is linked to the Findock API field allowDeduplication .
Note

The Converse and Findock options mentioned above will be hidden as soon as you choose in the CampaignSuite settings to use the Plauti Duplicate Check App. That is because the App then takes over all the logic of saving the Contact and Account and not Converse or Findock.

Payment fields

When a payment has to be made in the form, indicate this in the block Payment fields . The intention is that you will link the correct Gravity Forms fields to the settings fields. For payment fields these are:

  • Amount
    Link here a field that has the value always a number. This can be a text field where you can only enter a number or a radio field with amount options. If there are multiple radio fields with amounts (such as one-off or monthly) always link the Total amount field here.
Notice Message! Your message here

A form checks on the basis of this Amount field whether it should make a transaction or not. This can be when this field is not linked or when the value of the linked field is 0. Then the submission will automatically continue as a non-financial submission.

  • Payment method
    Link a field here where you can choose a payment method. The values ​​of this field must always be one of the following values: Ideal, Direct debit, Creditcard, Sofort, Bancontact or Paypal.
    It doesn’t matter what the labels are, as long as the values ​​are equal to one of the above options.
  • Frequency
    Link a field here where you can choose a payment frequency. The values ​​of this field must always be one of the following values: One-time, Monthly, Quarterly or Yearly.
    It doesn’t matter what the labels are, as long as the values ​​are equal to one of the above options.
  • Bank selection
    Link a field here where you can choose from a bank. The options that are supported are:
    – ABN Amro (ABNANL2A)
    – ASN Bank (ASNBNL21)
    – ING (INGBNL2A)
    – KNAB bank (KNABNL2H)
    – Rabobank (RABONL2U)
    – Regional bank (RBRBNL21)
    – SNS Bank (SNSBNL2A)
    – Triodos bank (TRIONL2U)
    – Van Lanschot (FVLBNL22)
  • IBAN
    Link a field here where one can enter the IBAN number of his / her bank.
  • Account holder name
    This field is not mandatory to link but can optionally be linked to a text field where the visitor can enter the name of the account holder. If that field is not linked or is left empty, CampaignSuite will automatically fill in the first and last name of the submitter.
  • Dynamic destination
    In addition to a fixed destination, it is also possible to link a field where the donor can choose a destination. But here is a dropdown field with the options as Label a name of the destination and as value (value) the destination ID from Salesforce. In this way, donations can be dynamically linked to destinations.
  • Dynamic campaign
    This field works the same as the Dynamic destination field. Link a dropdown here where the donor can choose from different campaigns.
  • Account Record Type
    It is possible to ask in your form whether the donor is making a private donation or on behalf of an organization.
    Link a field here where the visitor can choose from Private or Organization. Make sure the values ​​of the choices are always Household or Organization .
Note

The values of the Account Record Type can differ per Salesforce instance. To be sure, contact your implementation party to find out the exact names of the Account Record Type.

Converse

Converse is the predecessor of Findock and makes it possible to send Relations and Transactions to Salesforce endpoints via their API. This service makes it possible for CampaignSuite to send form submissions as a transaction or relation to SalesForce. The course of such a request may differ if you use Plauti Duplicate Check or not. When you are not using Plauti, the flow of Converse looks like this:

Gravity Forms sends a submission to the CampaignSuite API. This determines on the basis of the fields and values it receives whether it is a transaction or not. Converse has separate endpoints that must be called for a transaction or relationship.
In this scenario, either the Relation API or the Transaction API will always be chosen.

Relation API

In this case, only an Account and Contact will be created or modified. CampaignSuite always receives a Contact ID and an Account ID in response from the Relation API. These values can also be found in the submission within Gravity Forms in the right column.

Duplicate Rules Salesforce

When using the Converse Relation API, Converse will use the Salesforce Duplicate Rules that you have set within the CRM.

When using Plauti Duplicate Check the scheme will look like this:

Not financial

For a non-financial submission, CampaignSuite will only contact the Plauti Duplicate Check App. CampaignSuite will then receive a Contact ID and Account ID and then the flow will stop.

Financial

First, CampaignSuite will handle the Contact and Account via the Plauti Duplicate Check App. After that CampaignSuite will call the Transaction API with only the Contact and Account ID and of course the transaction fields and values.

In all cases, all IDs that CampaignSuite gets back from Converse or the Plauti Duplicate Check App will save with the submission.

Webhook Payment Status

Unlike Findock, Converse does not have an automatic Webhook that causes CampaignSuite to notify from Salesforce when there is a change in the status of an Installment. Therefore, CampaignSuite will fetch the status of the created Installment every five minutes for an hour. Once this is Collected CampaignSuite will stop checking. In this way, CampaignSuite ensures that the status of the payments in Gravity Forms are the same as the payments in Salesforce.

Findock v1 and v2

Findock is available in version 1 and version 2. The main difference between the versions is mainly in the speed of handling an API request.

Findock v1

The image above shows the flow of an API request to Findock v1. In summary, it means that all flows and actions within Salesforce are executed immediately after the API request. This includes processing the Contact and Account, storing transaction objects and submitting and processing the request to the Payment Service Provider. This ensures that it can take a long time before CampaignSuite receives a response from the API.

Findock v2

With Findock v2, CampaignSuite receives a response from Findock as soon as possible so that the API call can be completed very quickly. While the donor is paying, all necessary actions are performed behind the scenes in SalesForce, including creating / adjusting Contacts and Accounts. As soon as these actions are completed, Findock sends a signal to CampaignSuite via a Webhook so that all necessary IDs can be stored there.

Schematically it would look like this:

Contact your Salesforce implementation party to do a migration from v1 to v2 in SalesForce. Within CampaignSuite you can easily switch between v1 and v2 without additional settings.

Webhook

Findock v1 and v2 both use Webhooks. This means that they both give a signal back to the website when a status of a payment changes. CampaignSuite receives these signals and processes them in the submissions of Gravity Forms. This way you will always see the correct status of a payment with the submissions.

Plauti Duplicate check

By default, Salesforce uses its own Duplicate Rules when CampaignSuite communicates with Converse or Findock. A simple example is, for example, that you can set the e-mail address of a Contact to be unique. Converse and Findock will then look for duplicates based on an email address.

If you have indicated in CampaignSuite that Plauti Duplicate Check should be used, CampaignSuite will in some cases first go through this App so that its Duplicate Rules are used.

You have the option of setting per form what the score for scenarios should be. More information about scores and scenarios can be found in Plauti’s documentation . To be able to use this function it is important that the scenario is applied to DATA API!

The threshold in the DC Setup of your Salesforce instance only indicates from which matching percentage a record is considered duplicate. With the Duplicate Score in CampaignSsuite you can indicate from which matching percentage you want to update an existing record.

Example:
You have the Duplicate Check Threshold set at 75% and Duplicate Score in CampaignSuite at 90. When you submit a record via CampaignSuite, the scenario is used to see if there is a duplicate. Suppose there is a duplicate record with a matching percentage of 80%, a new record is created (which is considered a duplicate) and placed in a DC Job.
If there was a matching percentage of 90% or higher, the existing record will be updated (because the Duplicate Score is at 90).

If a form must use a different Score than the settings you have made with CampaignSuite, you can set it here. Then enable this option and enter new scores.

Synchronisation fields

Syncchronisation fields can be used to sync between a Gravity Forms checkbox field and CampaignMember objects or soco__Membership__c objects in SalesForce.

Both objects in Salesforce are often used for, for example, subscriptions or newsletter subscriptions. That is why this feature of CampaignSuite can be used in particular for a “Preference center” where someone can indicate which newsletters he / she still wants to receive.

Checkbox field

If you link a field for synchronization, it must be a checkbox field. This will look like this, for example:

Most importantly, the data in the Value column must be exactly the same as the ID in Salesforce. CampaignMember When you link a CampaignMember field, it must contain the Campaign IDs. Membership When you link a Membership field, it must contain the ID’s of the Products.

Prefills

It is also possible to prefill a form with sync fields with data from Salesforce. For this it is necessary to include in the URL of the page where the form is on as parameter ?contact={ContactId}. More information about this can be found in the article Prefills based on ContactID .

Salesforce objecten

In this section of the Salesforce settings you have the option to link the fields of Salesforce objects to fields in your Gravity Forms form. In this way CampaignSuite knows exactly which information should be stored in which field of which object.

Currently 4 objects are supported to link here:

1. Contact

All fields of the Contact object from Salesforce are shown here and can be linked to a Gravity Forms field.

2. Account

All fields of the Account object from Salesforce are shown here and can be linked to a Gravity Forms field.

3. Non-debit fields

The object that can be linked here depends on the Salesforce configuration of the Payment Connector (Converse, Findock, NPSP, etc). As a rule, you should think of the Installment object such as cpm__Installment__c or soco__Installments__c . All fields of this will then be shown here so that you can fill them with a value from the form.

4. Authorization

This object also depends (just like the non-debit field) on the Payment Connector. Objects you can think about include soco__Payment__c, soco__Agreement__c or cpm__Recurring_Payment__c .

Did you know?

By means of the key combination ctrl+shift+s it is possible to filter these long lists of fields on only the linked fields. This way, you will be able to see at a glance which fields you have linked.

Prefilling based on ContactID

When CampaignSuite has established a connection with Salesforce, it is possible to prefill a form with values from a Contact or Account from Salesforce.

Of course, you must first link the correct fields to each other under Salesforce objects in the settings of the Salesforce form. In this way CampaignSuite knows which information should be displayed in which fields.

To retrieve all data from Salesforce, simply add the Contact ID to the URL:

https://www.website.nl/form?contact={ContactId}

In the URL, replace {ContactId} with an ID from Salesforce.

It is also technically possible to make this check more secure by making multiple fields mandatory in the URL (such as Email). Then CampaignSuite searches for the Contact where the ID matches and the email address. If you would like this supplement, please contact Gopublic.

Mautic

Mautic is a full-fledged marketing automation system that can be used in B2B and B2C. An infinite number of different marketing tasks can be automated with Mautic. From simple forwarding of a form to complex lead nurturing or remarketing / upsell campaigns.

CampaignSuite offers the possibility to send a Gravity Forms submission to a Mautic form. In this way it is possible to allow the visitor to start a journey in Mautic, for example.

If you link contact fields to the form fields in Mautic, submissions are automatically linked to new or existing contacts (leads) in Mautic.

Connect fields

Switch the connection to Mautic to have CampaignSuite create a submission in a Mautic form. Then choose one of the Mautic forms. To retrieve the Mautic fields, click on the Refresh button.

The left column contains all the fields of Gravity Forms and the right side of each dropdown contains the fields of the Mautic form. Then link all necessary fields together.

At Other settings you can link the Gravity Forms Entry ID and the field in which a payment status should be stored. Link these fields if you want to ensure that the status of a payment is also sent to Mautic.

Note

You must map the fields Gravity Forms Entry ID and Update Payment Status to ensure that a status change is properly sent to Mautic.

Pardot

Pardot is a Salesforce application specifically designed for B2B marketing automation. With Pardot, marketing and sales departments have access to a range of powerful tools to use data for automatic marketing, generate more and better leads and calculate the ROI of their campaigns. When CampaignSuite is linked to Pardot you have the option to send Gravity Forms submissions directly to Pardot forms or Pardot Form Handlers.

Pardot form

The easiest way to link Gravity Forms forms to Pardot is through an existing Pardot form. You can do this in the form settings under the tab Pardot .

  • Pardot connection
    Select this checkbox to indicate that a Pardot link must be made.
  • Submit options
    When your form ends in a payment (with Converse or Findock, for example), you can set here that a Pardot form submission is only created once the payment is actually successful. This allows you to start successful journeys in Pardot for donors.
  • Form Handler Endpoint
    It is possible to send a form to a Form Handler. Paste a Form Handler URL from Pardot here. These can be found in the URL column in the overview of Form Handlers in Pardot.
    Once you have entered a URL, click on Refresh so that you can map the fields.

Once you have entered a URL and clicked Refresh you can manually map all fields with the Pardot form fields.

NOTE: it is important that you enter the exact same name of the Pardot form field in the column key .

Pardot Form Handler

Form Handlers in Pardot are an alternative to Pardot forms. You can use a Form Handler to integrate your third-party or custom forms with Pardot to track submission data.

When using Form Handlers it is not possible to easily map Gravity Forms fields with Form Handler fields. You have to enter these manually one by one in the Pardot settings of the Gravity Forms form.

  1. Copy and paste the Endpoint URL of the Form Handler into the Form Handler Endpoint field of the Gravity Forms Pardot settings.
  2. Click on Update settings

At the bottom you will now see a possibility to map fields yourself. In the left column enter the External Field Name of Pardot and in the right column select a field from the Gravty Forms form. The Pardot field aliases can be found under the heading Form Field Mappings when you open the Form Handler in Pardot:

Click the plus sign to the right of the fields to manually map multiple fields. Once all fields are linked, click Update Settings to save it.

Marketing Cloud

Once a connection has been established with Marketing Cloud, various functions will be displayed in Gravity Forms. Some examples of these features are:

  • Creating Marketing Cloud feed actions for Transactional emails and journeys.
  • Use prefill options on fields.
  • Set up dynamic content for Marketing Cloud emails.
  • Being able to set Prefill variables with Gravity Forms confirmations.

All parts will be covered in the articles below.

Marketing Cloud feed actions

To send Gravity Forms submission to Marketing Cloud, Feed actions must be set up. It is possible to set multiple actions at different times during a submission based on the conditional logic.

Follow the steps below to create a link between a form and Marketing Cloud:

  1. Go to Settings of the Gravity Forms form and click on the tab  Marketing Cloud.
  2. Click on the button Add new to add a new action.

The screen below will then appear:

  1. Enter a recognizable name for this Feed action in the Action name field.
  2. Choose a moment of execution for the action. A Marketing Cloud Feed action can be executed at 3 different moments:
    • Immediately after filling out the form
      This is the moment right after a new Gravity Forms submission is created. This action takes place in the visitor’s browser.
    • After a matched Findock v2 Webhook call (e.g. Contact/Account found)
      Findock v2 notifies the website underwater through a Webhook when it has created or found a Contact and Account. If you choose this moment, a call will be sent to Marketing Cloud at that moment. This happens asynchronously with the Gravity Forms submission.
    • After a successful payment
      Findock v2 notifies the website underwater through a Webhook when a transaction has been successfully completed in Salesforce. Choose this moment if you only want a call to go to Marketing Cloud if the payment is successful.
  3. Choose the type of Marketing Cloud call
  4. Once you have selected a call type, a dropdown will appear with a list of all events currently available in Marketing Cloud. Please select an event to continue.
  5. At Feed condition you have the option to set conditions for the action. For example, you will not execute an action until a certain field is filled out in the form.
  6. Click on Save Settings to save everything.

If a Data Extensions is found for the selected event, a list of all available Data Extension fields will appear after saving:

Finally, link the correct Data Extension fields to the Gravity Forms fields. Fields with a red asterisk (*) must be mapped otherwise an error will occur at the API call.

Submissions

Notes are saved on submissions when Marketing Cloud API calls are made. This way you can always see which actions have taken place with certain submissions:

Prefilling fields

CampaignSuite offers the possibility to prefill Gravity Forms fields with Contact data from Marketing Cloud. To use this functionality it is necessary that a specific Cloud Page exists in Marketing Cloud. This page generates a JSON containing the available fields to retrieve.

An example of such a JSON is:

In the general CampaignSuite settings, the Endpoint can be set for this Cloud Page (Prefill page Endpoint). In addition, it is also possible to overwrite this URL per form.

Follow these steps to prefill fields with Marketing Cloud data:

  1. Go to the Settings of a form and click on the tab MC Prefill.
  2. Click on the first checkbox to enable prefilling for this form.
  3. Then set all parameters needed in the URL of the page to retrieve a record in Marketing Cloud.
    For example, in this image there are 2 parameters set. The URL of the page where the form will be placed on could look like this:
    https://www.test.nl/formulier-pagina?id=5847&hash=fjd837hjd93
  4. Specify whether to hide the form if no record can be found in Marketing Cloud based on the specified parameters and their value. You can also type a message to be shown instead of the form if it is hidden.
  5. It is possible to overwrite the default Prefill Endpoint with another one. Add it to the field Custom prefill URL.

Map fields

As a final step, it is necessary to link fields from Marketing Cloud to your Gravity Forms fields. In this way you determine which data should be placed in which field.

Personalize confirmations

When you use the prefill option, these fields can also be used for form confirmations (such as confirmation text or redirect URL).

Confirmation text

All Marketing Cloud Prefill fields can be used in the confirmation message. To do this, click on the curly brackets to the right of the editor and select one of the prefill fields.

Redirect page or URL

It is also possible to use the prefill fields in a querystring:

Dynamic content in emails

Marketing Cloud can send emails in a Transactional Email event. In these emails it is technically possible to use dynamic content that can be set in the form. However, it is necessary that you have set up this technical solution in Marketing Cloud. If you are interested in this feature, please contact us.

Follow the steps below to set up dynamic content for Marketing Cloud Emails:

  1. Go to the Settings of the form and click on the MC Email Content tab.
  2. Enter a unique identifier for the connection between Marketing Cloud and CampaignSuite. This value cannot contain spaces, only lowercase letters. Later it is also possible to map this identifier to a Marketing Cloud field with a Feed action.
  3. Enter the text to be placed in the email.
  4. You can also choose an image that can be used in the email.
  5. Click on Save Settings to save everything

Technically it is now possible to use this dynamic content in emails from Marketing Cloud via the Endpoints shown in this tab.

Mapping of unique identifier

When you have entered a unique identifier you can map this field to a Data Extension field in the Marketing Cloud Feed actions:

So this feature provides the way to dynamically populate the content of an email from Marketing Cloud with information from the form very dynamically.

Gutenberg Dynamic Content

If a connection with Marketing Cloud has been set up, it is also possible to put Dynamic Content from a Marketing Cloud Page on a page in the website. This is done by using a Gutenberg block called Marketing Cloud dynamic content:

As soon as this block is on a page, the following fields can be filled:

– Prefill URL
Enter the Endpoint of the Marketing Cloud Page here. This page must return a JSON where the Dynamic content can be retrieved. An exmple of this JSON can be:

– Content type
As soon as a Prefill URL has been entered, an API call will retrieve a list of the different Content types that you can choose from.

– Page type
Once a Prefill URL has been entered, an API call will retrieve a list of the different Page types you can choose from.

– Default value
If no dynamic content can be fetched, this default text will be displayed in the place of the Gutenberg Block.

Feed actions

It is possible (if you have the permission on CampaignSuite) to set up Feed actions. A feed action is an action that can be performed by CampaignSuite shortly after a new submission has been made in Gravity Forms. Actions can be divided into two different categories:

1. Create a Salesforce object

With CampaignSuite it is possible to create a new record in Salesforce for every Object that is available. Consider, for example, a Case, Campaign or Destination. It is even possible to have multiple Feed actions executed one after the other and to use the generated IDs that are created per Feed in the mapping of the fields.

The screenshot below shows an example of a Feed action where a Case is created. A Feed condition has also been set. This means that this feed will only run if all conditions are met.

  • Feed name
    Enter a recognizable name for the feed here
  • Type of action
    Select the action you want to have performed here
  • Moment of execution
    Some actons may require a Contact ID. In that case, choose the option At the end so that a Contact ID exists at the time of execution.
  • Salesforce Object
    You will only see this when you choose the action type “Create a new record in Salesforce”. Choose an object from your Salesforce instance here.
  • Feed condition
    These conditions work exactly the same as the conditions that can be set with form fields.

If you choose an action that is linked to a Salesforce object, all fields of this object will appear at Settings . Link these to the correct Gravity Forms fields to get the values ​​correctly in Salesforce.

2. A custom action made by Gopublic

It is also possible that Gopublic makes custom actions in consultation with you. Consider, for example, creating Webshop orders or writing Gifts to Salesforce. Feel free to contact us if you would like to make use of this.

CS E-commerce

If CampaignSuite is activated and the form makes a transaction, a Google E-commerce script will be added by default to the thank you message of the Gravity Forms form.

This code looks like this:

				
					
  if(window.dataLayer !== undefined){
    window.dataLayer = window.dataLayer || [];
    dataLayer.push({
      'event': 'donatie',
      'ecommerce': {
      'purchase': {
        'actionField': {
            'id': 1234, //gravity forms entry ID
            'revenue': 12.00, //totaal bedrag
            'list': '',
            'option': '',
            'tax':'0',
            'shipping': 0
        },
        'products': [{
          'name' : 'Donatie',
          'id': '1', //form ID
          'price': 12.00,
          'brand': '',
          'category': 'One-time', //frequentie
          'variant': 'Ideal', //payment method
          'quantity': 1
        }]
      }
    }
    });
  }
				
			

E-commerce shortcode

If your form confirmation does not have Text but Page , then it is also possible to use a shortcode on the page where the donor ends up after a successful payment in order to still have the Google E-commerce script executed. Then add the following to this page:

 [ecommerce] 

Advanced E-commerce Settings

An extensive feature of CampaignSuite is to be able to make more settings for the E-commerce code. This feature is not included in the basic package. Please contact us if you are interested in this extension.
In E-commerce settings you can set all fields of the E-commerce script. This option is often used with hidden fields in the form. The visitor does not see these fields, but you can have them pre-filled with values. You then link this to the E-commerce field in the settings.

Entries

With entries you will see a list of all entires of the form. You can set the columns that are shown with the radar icon at the top right of the list.

You can also filter the entries on the fields in the form. CampaignSuite also offers the option to filter by payment status. So this way you can get a list of all successful payments. The first column is always clickable to go to the detailed view of the entry.

Comments

When you are in the detailed view of an entry, you will find a block with Comments in the left column below the fields. At various times during the creation of the entry (sending a form), CampaignSuite may add a comment to the entry. Some examples of this are:

  • Salesforce call initiated
  • Salesforce payment completed successfully
  • Status Mautic form entry changed to: ‘Collected’

Even if an unexpected error occurs, it will be found here in the comments.

Payment details

When a transaction has taken place, you will find its status in the right column under the heading Payment details.

Salesforce and Mautic

All information related to Salesforce or Mautic is also shown in this column.

Squeezely

Squeezely Customer Data Platform helps marketers efficiently collect customer data, build multi-channel campaigns, and analyze results in one place. CampaignSuite offers a possibility to generate parameters that can be used for Squeezely.

  1. Go to the Settings of a form and click on the tab  Squeezely.
  2. Enable the Squeezely functionality to use the feature.
  3. Select a field from the form to calculate the hash used in Squeezely (often this is an email field, for example)
  4. Enter a parameter name which can be used by CampaignSuite to automatically append to URL. Think, for example, of a Success URL for an iDeal payment via Findock.
  5. Optionally indicate whether all redirect URLs in this form should be auto-completed with the name of the parameter and the value of the hash field.

Manually adding parameter

It is possible to manually add the Squeezely parameter to form confirmations if you have enabled and set up the functionality. That might look like this:

Measurement

CampaignSuite contains a very extensive system for setting measurements on forms. Think for example of Client Side and Server Side events at certain moments in a form. These moments can be, for example, when you switch pages in a form or when a successful payment has taken place.

There are a total of 6 moments when you can determine that something needs to be measured by one of the four providers (Facebook, Google Analytics 4, Squeezely or Google Tag Manager). It is possible to create multiple actions per form.

Check out the articles below to learn more about measurement options.

Create new measurement

To create a new measurement moment, open a form in WordPress and go to Settings -> Measurements. Then click the Add new button.
This will open a new window with the following options:

Action name
Enter a recognizable name within the system here. This name will not be displayed on the website or in a measurement value.

Type of event
Choose here from one of the six moments at which the measurement should take place. An event can make a Client Side call, a Server Side call, or both. The moments you can choose from are:

  1. On form page load
    This is the moment a Gravity Forms page is loaded. This is not the WordPress page the form is loaded on, but the page/step inside the Gravity Form.
  2. On form page submit
    This is the moment a Gravity Forms page/step is submitted. The moment you press on the next or submit button, this event is triggered.
  3. On complete form submit
    This is the moment a Gravity Forms form is submitted. This event will only trigger after the last page when your form consists of several pages.
  4. On form confirmation text or page
    This event is triggered when a visitor ends up on the confirmation text or the confirmation page. When you redirect to an internal page, this trigger will be executed when the WordPress page is loaded. When you redirect to an external URL, this trigger will fire on the event: ‘On complete form submit’.
  5. On Findock v2 webhook call
    This event is triggered on a webhook call from Findock v2.0. This is also called the ‘Matched’ webhook and is fired when a Payment Intent is processed.
  6. After a successful payment
    This event is triggered when a payment in Gravity Forms is set to successful.

Providers
Choose here which providers you want to have something measured on the specified event. The options here are:

  1. Facebook
    This is the Facebook Conversion API. The Conversions API is designed to create a direct connection between your marketing data and the systems that help you optimize ad targeting, reduce cost per action, and measure results on Meta technologies. This provider only has the ability to perform Server Side calls. To use this provider, you need to enter a Pixel ID and an Access token in the CampaignSuite settings.
  2. Google Analytics 4
    GA4 can create Client Side and Server Side calls. The Client Side calls use the datalayer.push() and the gtag() functions. The Server Side calls use the GA4 Measurement Protocol. E-commerce calls can also be made with this. To use the GA4 Measurement Protocol you must enter a Measurement ID and API secret in the CampaignSuite settings.
  3. Squeezely
    With Squeezely you can create the most advanced buyer journeys and personalization applications out-of-the-box. You work on the basis of flawless data and you can set it up entirely to your own liking. This provider can make Client Side and Server Side calls. The Client Side calls use a datalayer.push() function. The Server Side calls are sent directly to Squeezely’s API. To use this, you must enter an Account ID and API key in the CampaignSuite settings.
  4. Google Tag Manager
    This provider supports Client Side calls and Server Side calls. The Client Side calls use the datalayer.push() function. The Server Side calls are only available if a GTM SST URL is entered in the CampaignSuite settings. This URL must be a link to a Google Tag Manager container that can capture the various parameters in GTM.

Feed condition
It is also possible to make this Feed action conditional. This means that the feed will only be executed if certain conditions are met.

When all settings are done, click on Refresh to display the mapping of the chosen providers. This mapping is necessary to let the system know which data can be found where in the form. Look further at the article Mapping to discover the possibilities.

Mapping

As soon as an event type has been chosen and one or more providers have been selected, a block will appear for each provider with options to map fields. In fact, here you are going to set which parameters should have which values ​​in the Client Side or Server Side call.

Each block contains an option to place the call Client Side or Server Side. If one of these options is not visible, it is not supported by the provider in combination with the selected event.

Client Side
It executes script code in the visitor’s browser. In the case of CampaignSuite, this is always a Javascript code.

Server Side
Executes script code on the server. This has the advantage that Server Side calls can also be performed if the visitor has not been on the website for a long time, such as with successful payments. These are then executed ‘under water’ on the server.

In addition, each block has the ability to map parameters. The left column shows the available parameter values ​​(this can vary per provider) and the right column shows all available form fields and various other values ​​that can be used.

Open input fields

Both columns have the option of showing an open input field. In this field you can enter your own value instead of the value from one of the indicated options.
In the left column this is the last option in the dropdown called Add Custom Key and in the right column it is the last option in the dropdown called Add Custom Value.

Nesting key values

In some cases, arrays (collections) must be used in, for example, Client Side calls. The image below shows an example of such a collection:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
  'event': 'test_event',
  'transactionProducts': [
    {
      'sku': 'DD44',
      'name': 'T-Shirt',
      'price': 11.99
    },
    {
      'sku': 'AA1243544',
      'name': 'Socks'
      'price': 9.99
    }
  ]
});
</script>

It is clear here that transactionProducts is a collection of products. This can be done by linking keys with a period. It then looks like this in the mapping of a measurement:

Facebook

The provider Facebook gives you the ability to only make Server Side API calls to the Facebook Conversion API. This can be done at any of the six available event moments. Click here to get more information about the Facebook Conversion API.

To use the Facebook provider in Measurements you must have entered a Pixel ID and an Access token in the CampaignSuite settings. Without these two values ​​it is not possible to use this provider. More information about setting up a Pixel can be found at this page.

The Facebook Conversion API works on the basis of events. CampaignSuite will create a JSON based on the mapping made in the Feed action, which will be sent via a POST request to Facebook’s API. See the example below of the mapping in CampaignSuite and the JSON sent to Facebook.

Example of mapping:

JSON being generated:

{
   "data": [
      {
         "event_name": "Purchase",
         "event_time" "1666081911",
         "event_id": "1_346",
         "event_source_url": "https://www.examplewebsite.nl/doneer",
         "action_source": "site",
         "user_data": {
            "client_ip_address": "1.1.1.1",
            "client_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)",
            "em": "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd",
            "fn": "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4",
            "ln": "eeacc9d4cf711ce63f7d247062f52ca2fe4be1a1a8aef231fe23e75e7bdca60c",
            "ph": "191d48a770670b9ae8f59dbb16c64c583f92d1922a2a440b26e36bf6e3970bf0"
         },
         "custom_data": {
            "value": 100.2,
            "currency": "EUR",
            "form_id": "1",
            "entry_id": "346"
         }
      }
   ]
}
  • event_id
    The event_id parameter is automatically filled with a combination of the form ID and the entry ID (1_346).
  • action_source
    The parameter action_source will be automatically filled with the value website provided it is not mapped with its own value.
  • event_time
    The parameter event_time is filled by default with the date and time of submission in the form.
  • custom_data.currency
    The parameter < strong>custom_data.currency is filled by default with the event type After a successful payment.

Custom parameters

In addition to the predefined parameters, it is also possible to send parameters yourself. Click here for a list of the available parameters for Facebook.
For example, to add a city field to user_data you must enter as key value: data.user_data.ct. This will then automatically in the JSON.
In the example above, the phone number field custom has been added.

Google Analytics 4

With the provider Google Analytics 4 (GA4) it is possible to perform Client Side and Server Side calls. This is possible for all six different event types. Only with the event types After a webhook call from Findock v2 and After a successful payment a Server Side call can be performed and not Client Side.

Client Side

We recommend using the Client Side calls in GA4 if you don’t have Google Tag Manager. When you use the Client Side call, CampaignSuite executes javascript functions by means of gtag(); This requires that Google Tag is installed on the website:

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){window.dataLayer.push(arguments);}
  gtag('js', newDate());
  gtag('config', 'GA_TRACKING_ID');
</script>

In the above code, replace GA_TRACKING_ID with your own tracking ID from Google Analytics.

When CampaignSuite executes a Client Side GA4 call, a javascript code will be executed in the visitor’s browser.
Read here more about the code we use for this. The calls to GA4 use events. An example of a simple page change in Gravity Forms might look like this:

Example of mapping:

Javascript example

<script type="text/javascript">
  if (window.gtag == undefined) {
    window.gtag = function() {
      window.dataLayer = window.dataLayer || [];
      dataLayer.push(arguments);
    };
  }
  gtag('event', 'page_switch', {
    'form_page': 1,
    'form_id': 4
  });
</script>

The above code uses the Javascript function gtag().

Server Side

Technically it is possible to have a Server Side call made to GA4 for all six event types. This is only available if a Measurement ID and an API secret are entered in the CampaignSuite settings. These can be found in the admin section of your Google Analytics account -> Account Settings -> Data Streams. Click on the stream and copy the Measurement ID here. The value of the API secret can be found under the heading Measurement Protocol API secrets.

GA4’s Server Side calls use the Measurement Protocol API from Google. This API also works on the basis of sending events via a POST request to an endpoint (https://www.google-analytics.com/mp/collect).

The images below show an example of a GA4 Server Side call upon a successful payment in CampaignSuite:

Example of mapping:

POST request example

{
  "client_id": "278327074.1665398324",
  "non_personalized_ads": false,
  "events": [
    {
      "name": "purchase",
      "params": {
        "items":
[
           {
             "item_id": "Ideal",
             "item_name": "One time",
             "quantity": 1,
             "item_category": "donations",
             "price": 25
           }
         ],
         "currency": "EUR",
         "transaction_id": "346",
         "value": 25
       }
     }
   ]
}
  • client_id
    This parameter is automatically populated with a Google Analytics Client ID if it is set in the website with a pixel

Event builder

Google has a handy tool with which you can build an event to test whether it is a valid call. It can be found at: https://ga- dev-tools.web.app/ga4/event-builder/

Squeezely

With Squeezely you can create the most advanced buyer journeys and personalization applications out-of-the-box. You work on the basis of flawless data and can arrange everything entirely according to your own insight. This tool uses both a tracking pixel on your website or can shoot events via their API. CampaignSuite offers this option in Measurements. Squeezely works on the basis of events. Every measure you set in CampaignSuite must be an event.

To use the Server Side calls via the Squeezely provider you must enter an Account ID and an API key in the CampaignSuite settings. Squeezely’s Client Side calls work with a datalayer.push() and will only work if the Squeezely pixel is installed on the website:

<script type="text/javascript">
  (function(s,q,z,l,y){s._sqzl=s._sqzl||[];l=q.createElement('script'),
  y=q.getElementsByTagName('script')[0];l.async=1;l.type='text/javascript';
  l.defer=true;l.src=z;y.parentNode.insertBefore(l,y)})
  (window,document,'https://squeezely.tech/tracker/<YOUR_IDENTIFIER>/sqzl.js');
</script>

More information on how to use the API can be found on the Squeezely documentation page.

Client Side

The image below shows a simple example of a page switch in a Gravity Forms form:

Example of the mapping:

Example of the Javascript code being executed:

<script type="text/javascript">
  window._sqzl = window._sqzl || [];
  window._sqzl.push({
    "event" : "page_switch",
    "page" : 1
  });
</script>

Because the Squeezely pixel is loaded into the website, this event will be captured in Squeezely.

Server Side

Server Side calls can be set in all six measurement moments. However, with Server Side calls it is mandatory to send a unique identifier in the parameters, otherwise Squeezely will not know to whom the data should be linked in their system.

The image below shows a Server Side call after a successful donation. This call is sent ‘underwater’ to Squeezely when a payment is successfully completed.

Example of the mapping:

Example of code for API call:

[
  "events" => [
    [
      "event" => "Purchase",
      "email" => "test@test.nl",
      "firstname" => "Test",
      "lastname" => "Test,
      "orderid" => 346,
      "products" => [
        [
          "id" => "single",
          "name" => "One time",
          "price" => 25,
          "quantity" => 1
        ]
      ]
    ]
  ]
];

Debugging tool

Squeezely has a tool that allows you to check whether Server Side API calls are coming in properly. It can be found at: https://app.squeezely.tech/data/events.

Google Tag Manager

Google Tag Manager (GTM) is a tool from Google that allows you as an online marketer, entrepreneur or social media specialist to become less dependent on your developers or an external agency. By means of Google Tag Manager you ensure that you can make useful tags such as Google Analytics or the Meta Pixel work without having to ask your web builder to place the tags in the code of your website.

In Measurements you have the option to make Client Side and Server Side calls for GTM. Client Side calls are not available for the events After a webhook call from Findock v2 and After a successful payment. The Client Side calls use the datalayer.push() function. The data can then be read by the GTM pixel on your website:

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({' gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','UNIQUE_ID');</script>
<!-- End Google Tag Manager -->

In the above code, replace UNIQUE_ID with your own Google Tag Manager ID.

Server Side calls are only available if a value is entered in the CampaignSuite settings for the field GTM SST URL (Google Tag Manager Server Side Tracking URL). This URL (also called Tag Manager server container) can be created in Google Tag Manager. Read here to learn more about how to create a Tag Manager server container. When you fill in the Measurement ID field with the ID from GTM, it will automatically be included in the Server Side calls in the parameter tid.

Client Side

When a Client Side call is made via the Google Tag Manager provider, CampaignSuite automatically detects whether it is an E-commerce Measurement call or not. We do this based on the mapping of the Price parameter of the product. If this parameter is mapped, the datalayer.push() will have an e-commerce syntax. In all other cases it will be a simple version of a datalayer.push(). Below are 2 examples of a simple and an e-commerce Client Side call.

Example of the mapping (simple):

Example of the datalayer.push() Javascript code:

<script type='text/javascript'>
  dataLayer.push({
    event: "page_switch",
    page: "1"
  });
</script>

Example of the mapping (e-commerce):

Example of the datalayer.push() Javascript code:

<script type='text/javascript'>
  dataLayer.push({ ecommerce: null });
  dataLayer.push({
    event: "purchase",
    transaction_id: "349",
    e-commerce: {
      value: 12.45,
      payment_type: "Ideal",
      items: [
        {
          item_id: "1",
          item_name: "Donation",
          price: 12.45,
          quantity: 1
        }
      ]
    }
  });
</script>

Server Side

It is only possible to make Server Side calls if there is a Tag Managa server container has been created and set up. This container can be accessed via a separate URL (for example: https://sst.testwebsite.nl/g/collect) which must be set in the CampaignSuite settings under GTM SST URL.

The parameters mapped in the block of Google Tag Manager at Measurements will be sent in the URL that CampaignSuite calls via a GET request. Check out this page to see which parameters are supported .

The example below shows a Server Side call upon successful payment:

Example of the mapping:

GET request URL being executed:

https://sst.testwebsite.nl/g/collect?v=2&cid=278327074.1665398324&tid=G-AB1CDEFG23& en=payment&cu=EUR&ep.fbc=undefined&ep.transaction_id=346&epn.value=100&ep.typedonatie=One-time&ep.email=test@test.nl&pr1=idonce_0~nmdonatie_via_website~ pr100~qt1~caIdeal

All product fields are merged and all individual parameters are pasted after the URL. In this way a Server Side call is made for Google Tag Manager.