Detailed guide to all features, payment gateways, and settings of CP Contact Form with PayPal.
From the WordPress administrator perspective, setting up a form takes three steps:
From the visitor (end user) perspective, the workflow is as follows:
To install the plugin in WordPress, follow these steps:
.zip file to your computer..zip file downloaded in step 1.
[CP_CONTACT_FORM_PAYPAL id="1"] directly into any page or post. When viewed on the public website, the shortcode renders your live payment form:
Navigate to CP Contact Form with PayPal in your WordPress admin menu to view your list of forms:

For each form in the list, you have the following options:

Click the "Messages" button next to any form to view its submissions. The Messages screen includes a filter bar to search submissions by keyword, date range, or form.
From the Messages screen you can manually toggle a submission's status between Paid and Not Paid, process PayPal refunds, edit or add entries (in the Platinum version), print the list, delete individual or bulk entries, and export submissions to a CSV file.

To export submissions to a spreadsheet, open the Messages screen, optionally filter by date or keyword, and click "Export to CSV". The first row of the CSV file contains column headers using each field's "Short label" (or the standard "Field Label" if no short label is set).
The visual Form Builder lets you add, rearrange, edit, and remove fields, as well as configure validation rules and conditional dependencies.

The "Form Settings" tab in the builder lets you set the form's header title, description, label alignment (top-aligned, left-aligned, or right-aligned), and visual template.

### ### ####).Container controls allow you to group multiple fields together or arrange them in multi-column rows:
The Platinum version includes dynamic DataSource (DS) controls that automatically populate their values or choices from external sources:

Click any field in the form preview on the right to edit its properties in the "Field Settings" tab:
<%fieldname1%>) you can copy into notification emails or the thank-you page.column2, column3) to style or align specific fields.Example — Connecting to a Database Table:
For advanced queries, select "Custom Query" and use AS value and AS text aliases:
SELECT column1 AS value, column2 AS text FROM tablename WHERE column3 > 5 ORDER BY column2 ASC LIMIT 5
You can also filter queries dynamically using values from other form fields with the <%fieldname#%> syntax inside the WHERE condition (for example: ID=<%fieldname3%>).
Example — Using a CSV File as a DataSource:
Radio buttons, checkboxes, and dropdown menus can dynamically show or hide other fields based on the visitor's selection:
+ icon to attach multiple dependent fields to the same choice).
Customize or translate the validation messages shown to visitors when a field is incomplete or invalid:

$30, $24.99, or $1,499.99) is automatically added to the base request cost.USD, EUR, GBP, CAD, AUD).<%fieldname3%>.EN, ES, FR, DE).
With the PayPal Pro integration included in the Platinum version, visitors can enter their credit card details directly on your website without being redirected to an external payment page.
To use PayPal Pro, you need a PayPal Payments Pro merchant account and an SSL (HTTPS) certificate on your website to ensure cardholder data is transmitted securely.
XXXX-XXXX-XXXX-1234) are saved with the submission and can be referenced in emails using tags such as <%ppro_firstname%>, <%ppro_cctype%>, and <%ppro_ccnumber%>.
info@yourdomain.com) so mail providers (Gmail, Outlook, Yahoo) do not flag notifications as spam.<%INFO%> to output all submitted non-empty fields.
<%INFO%> and individual field tags).
In addition to built-in PayPal support, the Platinum version includes add-ons for connecting your forms to multiple payment gateways. A single form can even offer multiple payment gateways simultaneously—displaying a radio button selector so customers can choose their preferred payment method at checkout.
PayPal Standard is built directly into the plugin core. See the PayPal Payment Configuration section above for setup details.

Allows customers to pay by credit card directly on your website without leaving your page. See the PayPal Pro Integration section above for API configuration details.

The Stripe Payments add-on lets you accept major credit/debit cards directly on your website using Stripe. An SSL (HTTPS) certificate is required on your website for live transactions.
To enable it, activate "Stripe" in the Add-Ons Manager, then configure the following in your form settings:


The Skrill Payments add-on connects your forms to Skrill's hosted checkout supporting cards, digital wallets, and local bank transfers (skrill.com).

USD, EUR, GBP).
Provides Dutch iDEAL online banking integration via TargetPay. Activate "iDeal TargetPay" in the Add-Ons Manager and configure your RTLO Subaccount ID, failure return URL, and mode (test or production) in the form settings.


Provides iDEAL payment integration via Mollie. Activate "iDeal Mollie" in the Add-Ons Manager, then enter your Mollie API Key (test or live) and failure return page in the form settings.


Provides virtual POS (TPV) credit card integration for Spanish banks (Santander, BBVA, CaixaBank, Sabadell, Bankinter, etc.) via RedSys.


Integrates your forms with the SagePay (Opayo) payment gateway. Activate "SagePay Payment Gateway" in the Add-Ons Manager, then configure your Vendor ID, SagePay Encrypt Password, and mode (Sandbox or Production) inside the form settings.


Connects your forms to Sage Payment Solutions (Shopping ExpressPay). Activate "SagePayments Payment Gateway" in the Add-Ons Manager, then configure your Merchant ID (M_id) and optional billing field mappings in the form settings.

All add-ons included in the Platinum version can be enabled with one click in the Add-Ons Manager on the main plugin page:

Automatically generates and attaches an iCal (.ics) calendar invite to confirmation emails so users can import the event into Google Calendar, Apple Calendar, or Outlook.

fieldname1).
Converts selected form fields into interactive signature pads where visitors can sign using a mouse, stylus, or touchscreen.

#000000) and stroke width.
Automatically adds form submitters as subscribers to your MailChimp audience lists.


Sends automated SMS text notifications to administrators and/or customers via Twilio when a form is submitted or paid.

fieldname2) to text the customer.
Sends automated SMS notifications to administrators and customers via Clickatell.

fieldname2).Integrates custom forms with WooCommerce products so product prices can be dynamically calculated from user selections and added directly to the WooCommerce cart.

Automatically creates new leads in your SalesForce CRM account using Web-to-Lead.
fieldname#).
Posts submitted form data in real time to one or more WebHook URLs, enabling seamless integration with Zapier, Make, Zoho CRM, Dropbox, Google Drive, and hundreds of external web apps.
Tip for Zapier: Choose Webhooks by Zapier as the Trigger app and select "Catch Hook", then paste the generated webhook URL into the WebHook section of your form settings.

Protects your forms from automated spam using Google reCAPTCHA instead of the traditional image captcha. Activate the reCAPTCHA add-on and enter your Google reCAPTCHA Site Key and Secret Key.

Automatically creates and publishes a WordPress post after a form is submitted (or paid) using the submitted field values for the post title, content, category, tags, and featured image.

Identifies the visitor's country from their IP address, pre-selects the corresponding PayPal locale/country where applicable, and provides three additional email tags:
<%ip%> <%countrycode%> <%countryname%>

Located below the main forms list, the Troubleshoot Area helps resolve script caching conflicts or character encoding issues:
The Platinum version allows you to insert submitted form data into an external MySQL database or custom table by editing the cp_contactformpp_insert_in_database.php file located in the plugin directory.
First, define your database connection constants at the top of cp_contactformpp_insert_in_database.php:
define( 'DATABASE_HOST', '' ); define( 'DATABASE_USER', '' ); define( 'DATABASE_PASS', '' ); define( 'DATABASE_NAME', '' ); define( 'DATABASE_TABLE', '' );
Next, map your form fields (e.g., fieldname1, fieldname2, fieldname3) from the $params array and customize the INSERT INTO SQL query to match your table's column names:
$field1 = mysqli_escape_string( $db_link, $params['fieldname1'] );
$field2 = mysqli_escape_string( $db_link, $params['fieldname2'] );
$field3 = mysqli_escape_string( $db_link, $params['fieldname3'] );
mysqli_query( $db_link, "INSERT INTO `" . DATABASE_TABLE . "` (firstname, lastname, email) VALUES ('$field1', '$field2', '$field3');" );
To allow visitors to print only the form (and its entered values) without printing the rest of the webpage:
<script>
function printForm(){
var w = window.open(null, 'Print_Page', 'scrollbars=yes');
jQuery('#fbuilder input').each(function () {
var e = jQuery(this);
e.text(e.val()).attr('value', e.val());
if (e.hasClass('large'))
e.css('width', '100%');
if (typeof e.prop('checked') != 'undefined')
e.attr('CHECKED', e.prop('checked'));
});
var html = jQuery('#fbuilder').html();
jQuery('#fbuilder TEXTAREA').each(function () {
var e = jQuery(this).parent().html();
html = html.replace(e, jQuery(this).val());
});
jQuery('#fbuilder SELECT').each(function () {
var e = jQuery(this).parent().html();
html = html.replace(e, jQuery(this).find('option:selected')[0].text);
});
w.document.write(html);
w.document.close();
w.print();
}
</script>
onclick event to:
printForm();