Find quick answers to common questions about CP Contact Form with PayPal.
Detailed guide to every feature, setting, and add-on in CP Contact Form with PayPal.
Technical articles, tutorials, and practical tips for CP Contact Form with PayPal.
Reach out to our support team if you cannot find the answer you need here.
Installation Instructions:
Note: This is a safe process—your existing forms, settings, and submission records are stored in the WordPress database and will not be lost when removing the previous version.
Alternative Installation Method (FTP):
/wp-content/plugins/cp-contact-form-with-paypal/ via FTP. Afterward, deactivate and re-activate the plugin from the WordPress Plugins page to ensure all database tables are updated.Upgrade Instructions:
Follow the same steps above to upgrade to the latest release. If you have made direct edits to core plugin files or translation files, back them up before upgrading. After upgrading, remember to clear your browser cache.
Insert the "Page Break" field inside the Form Builder wherever you want to start a new page on the form.
The Date control supports two types of default dates: a static date (for example, 03/24/2026) or a relative date calculated from today's date (for example, 3 days from today).
For a static date, select the date field in the form builder and enter the date string in either the "Predefined Value" or "Default date" setting using the same format selected in the field's Date Format setting.
For a relative date, enter one of the following into the "Default date" attribute:
2 represents two days from today, and -1 represents yesterday.y (years), m (months), w (weeks), and d (days). For example, +1m +7d sets the default date to one month and seven days from today.The plugin automatically detects available datepicker translations in /wp-content/plugins/cp-contact-form-with-paypal/js/languages/. You can also add a custom regional configuration file (for example, for French) as follows:
Create a new .js file in your text editor and paste the regional configuration:
jQuery(function($){
$.datepicker.regional['fr'] = {
closeText: 'Fermer',
prevText: '<Préc',
nextText: 'Suiv>',
currentText: 'Courant',
monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'],
dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
weekHeader: 'Sm',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
$.datepicker.setDefaults($.datepicker.regional['fr']);
});
Save the file inside /wp-content/plugins/cp-contact-form-with-paypal/js/fields-public/ (for example, datepicker_fr.js) or paste the inner script into Customization Area >> Add Custom JavaScript.
Each choice in a Radio Button or Checkbox field has two inputs: the Text (label) and the Value. Enter an HTML <img> tag with an absolute URL into the choice's Text input:
<img src="https://yourdomain.com/path/to/image.jpg" alt="Option 1" />
The Summary control uses two default CSS classes—.cff-summary-title and .cff-summary-value—for field labels and field values respectively:
.cff-summary-title { font-weight: bold; }
.cff-summary-value { color: #2271b1; }
If you want to style a specific Summary field differently, click the Summary field in the Form Builder and enter custom class names in its "Classname for fields titles" and "Classname for fields values" settings.
You can insert links using an "Instruct. Text" field, an "Accept / GDPR" field, or an "HTML Content" field. In an "Instruct. Text" field, place an HTML anchor tag inside either the "Field Label" or "Instructions for User" setting:
<a href="https://wordpress.dwbooster.com" target="_blank">Visit the website</a>
Dynamic DataSource (DS) controls are included in the Platinum version of the plugin:
post_status='publish'), an Order By clause (e.g., display_name ASC), and a Limit.For complex 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
To style all fields across the form, add your CSS rules under Customization Area >> Add Custom Styles (or under Appearance >> Customize >> Additional CSS):
#fbuilder, #fbuilder label, #fbuilder span { color: #00f; }
#fbuilder input[type=text],
#fbuilder textarea,
#fbuilder select {
border: 2px solid #00f;
}
#fbuilder .pbSubmit { color: #00f; font-weight: bold; }
#fbuilder .section_breaks .section_break { border: 0px; }
#fbuilder .section_breaks label { font-size: 18px; }
#fbuilder .section_breaks span { font-size: 14px; }
#fbuilder .comment_area label { font-size: 18px; }
#fbuilder .comment_area span { font-size: 14px; }
#fbuilder .pbNext, #fbuilder .pbPrevious { color: #00f; font-weight: bold; }
#fbuilder .fform h1 { font-size: 32px; }
#fbuilder .fform span { font-size: 16px; }
#fbuilder label .r { color: #f00; }
### ### #### format hint under phone fields:
.uh_phone .l { display: none; }
#fbuilder .dformat { display: none; }
To style a single specific field on the form:
specialclass)—do not enter raw CSS declarations directly into that box..specialclass label { color: #00f; }
.specialclass input[type=text],
.specialclass textarea,
.specialclass select { border: 2px solid #00f; }
In the field's "Add CSS Layout Keywords" setting, enter multiple class names separated by spaces—for example: myclass1 myclass2.
To replace the submit button with a custom image, add the following CSS rule under Customization Area >> Add Custom Styles (replacing the URL and dimensions with your own image):
.pbSubmit {
background-image: url(https://cfpaypal.dwbooster.com/images/logo.png);
background-size: cover;
color: transparent;
width: 194px;
height: 35px;
}
Browsers render spinner arrows on input[type="number"] fields by default. To hide them, add the following CSS rules to your stylesheet:
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type=number] {
-moz-appearance: textfield;
}
Click a field in the Form Builder and locate the "Add CSS Layout Keywords" setting. You can use the built-in column classes to place two, three, or four fields on the same row:
column2 (2 fields per row — 50% width each)column3 (3 fields per row — 33% width each)column4 (4 fields per row — 25% width each)For example, to place two fields side-by-side on the same line, add the class name column2 to both fields.
In the Platinum version, you can also insert a DIV or FIELDSET container control and select the number of columns in its "Columns" attribute.
Enter the built-in class name hide into the field's "Add CSS Layout Keywords" attribute, or assign your own custom class name (e.g., myhiddenfield) and add .myhiddenfield { display: none; } to your custom CSS.
In the Form Builder, click the "Form Settings" tab (or click the form header box at the top of the preview canvas). You can edit or clear the Form Name and Description fields there, as well as change the label placement.
The Platinum version includes multiple predefined templates that can be selected in the "Form Settings" tab of the Form Builder.
Each template is stored in its own subfolder inside /wp-content/plugins/cp-contact-form-with-paypal/templates/ and contains a style.css file:
templates/01/templates/02/templates/03/templates/04/templates/05/templates/06/You can style .pbSubmit with a PayPal button background image in Customization Area >> Add Custom Styles, or at the bottom of cp_contactformpp_public_int.inc.php replace:
<?php _e($button_label); ?>
with:
<img src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif" alt="Buy Now" />
To hide the ### ### #### format hint below segmented phone fields, add this CSS rule under Customization Area >> Add Custom Styles (at the bottom of the page that contains the list of forms):
.uh_phone .l { display: none; }
The <%INFO%> tag is automatically replaced with all submitted field values. You can also insert individual field tags anywhere in the email subject or message body.
Click the desired field in the Form Builder and look at the read-only setting named "Field tag for the message (optional):" (for example: <%fieldname1%>, <%fieldname2%>). Copy and paste that tag into your email template.
Additional supported tags include:
<%payment_type%>: Indicates whether the payment option selected was "PayPal" or "Other" ("Pay Later")<%itemnumber%>: Unique submission ID number shown in the Messages list<%Cost%>: Price sent to PayPal<%Costtax%>: Total price including tax<%coupon%>: Coupon code used (if any)<%user_login%>: Username of the logged-in user who submitted the form<%user_id%>: User ID of the logged-in user<%user_email%>: Email address of the logged-in user<%user_firstname%>: First name of the logged-in user<%user_lastname%>: Last name of the logged-in user<%display_name%>: Display name of the logged-in userYes. Place the tag <%itemnumber%> in the email subject or message body. It will be replaced with the unique submission ID / PayPal item number.
Uploaded files are attached to the admin notification email automatically, and you can also include a direct URL link to the file by appending _url to the upload field's tag.
For example, if your Upload File field has the tag <%fieldname7%>, use <%fieldname7_url%> in the email message to output the file's URL.
Set the "Email format?" option to HTML, then insert an HTML <img> tag with a full, absolute URL in the Message textarea:
<img src="https://yourdomain.com/path/to/logo.png" alt="Logo" />
When HTML email format is selected, use standard HTML break tags (<br />) or paragraph tags (<p>...</p>) to format line breaks in your message template.
0 or your base price); otherwise, WooCommerce will not display the "Add to cart" button on the product page.In the "CP Contact Form with PayPal" metabox on the WooCommerce product edit screen, check "Activate the summary", enter a Summary title, and define the summary layout using any of the field tags supported in notification emails (such as <%INFO%> or <%fieldname1%>).
The Platinum version includes the WebHook Add-On, which connects your forms to Zapier:
Using the WebHook Add-On in the Platinum version, you can connect your form to document generation services (such as Formstack Documents / WebMerge, PDFMonkey, or Google Docs) through Zapier:
fieldname1, fieldname2, etc.) to the placeholders in your PDF/Word template and configure the service to email the merged PDF to the submitter.For each file upload field (e.g., fieldname1), the WebHook add-on automatically includes a variable named fieldname1_urls containing a comma-separated list of the uploaded file URLs, which can be selected directly inside your Zapier action step.
In the "Troubleshoot Area" (located below the list of forms on the main plugin page), change the "Script load method" from "Classic (Recommended)" to "Direct" and click Update Troubleshoot Settings.
Use the "Troubleshoot Area" on the main plugin page to update the Character encoding to UTF-8, then re-save the special characters in your form settings.
Deactivate and delete the previously installed Free or older Platinum version from the WordPress Plugins screen before uploading the new Platinum .zip file. Your forms, settings, and messages are stored in the database and will not be lost.
Important: If you are testing on a localhost (local computer) environment or behind an "Under Construction / Maintenance Mode" blocker, PayPal's Instant Payment Notification (IPN) servers cannot reach your website.
If your site is publicly accessible online, check whether the payment is marked as "Pending" in your PayPal seller account. PayPal only marks a submission as "Paid" once the transaction status is Completed. A payment may remain pending if:
First, check whether the submission appears as "Paid" or "Not Paid" on the Messages page:
wp_mail) is being blocked or filtered. Check the "From" email address in your form's Email Settings—always use an address belonging to your own website domain (e.g., noreply@yourdomain.com) rather than a free address like @gmail.com or @yahoo.com, which spam filters reject.In your form's PayPal Payment Configuration settings, set "Process refunds through this plugin?" to "Yes" and enter your PayPal (NVP) - API UserName, Password, and Signature.
Once enabled, a "Refund" button will appear next to paid transactions on the Messages screen.
Yes. The plugin automatically registers its scripts with Autoptimize's exclusion list. If you configure Autoptimize manually:
jquery.js,jquery.validate.js,jQuery.stringify.js are included in "Exclude scripts from Autoptimize".Yes. However, if the "Load JavaScript deferred" or "Delay JavaScript execution" option is enabled in WP Rocket, it can delay jQuery and prevent the form builder scripts from initializing on the frontend.
In that case, either disable "Load JavaScript deferred" or exclude the page containing your payment form from WP Rocket caching/JS optimization (see WP Rocket documentation).