Docs

Documentation — current versions: Custom Contact Forms 7.13.0 (free) · Custom Contact Forms Pro 1.0.38

Custom Contact Forms Documentation

Custom Contact Forms builds forms the WordPress way. The Pro add-on turns those forms into payment forms, signed agreements, surveys, and multi-step flows — without a full e-commerce stack.

1. Getting Started

Install the free Custom Contact Forms plugin from WordPress.org, then upload and activate Custom Contact Forms Pro (Plugins → Add New → Upload Plugin) using the zip from your purchase receipt email or the My Downloads page of your account. Pro requires the free plugin to be active, and the two are built to run as a matched pair — when you update one, update the other.

Create your first form under Forms and Submissions. You can start from scratch or pick a ready-made template — payment templates arrive fully assembled, including the payment field.

Always test on a staging or test site before updating a live store, and purge any page cache after updating so visitors receive the latest scripts.

2. Payments Setup (Stripe)

Payments run on Stripe. A free Stripe account is all you need — the plugin adds no transaction fees of its own; you pay only Stripe’s standard processing fees. One-time setup:

  1. Get your API keys. In the Stripe Dashboard, open Developers → API keys. Copy the publishable key and secret key into the plugin’s Stripe settings.
  2. Use test mode first. Stripe provides separate test keys. With test keys active, use card number 4242 4242 4242 4242 (any future expiry, any CVC) to place test orders, and 4000 0000 0000 0002 to test declined payments. Switch to live keys when you’re ready to accept real money.
  3. Turn on customer receipts. In Stripe: Settings → Emails → enable “Successful payments.” The plugin passes each buyer’s email address to Stripe, and Stripe sends its receipt automatically. (Stripe only sends these in live mode by default.)
  4. Enable Apple Pay (optional). Apple Pay requires registering your domain once: Stripe Dashboard → Settings → Payment methods → Apple Pay → Add domain. Google Pay and Link need no registration.

Supported payment methods: cards, Apple Pay, Google Pay, and Link. These all complete on-page. Delayed and redirect-based methods (bank debits, buy-now-pay-later) are intentionally not offered — they can’t safely complete an on-page form flow.

3. Product & Pricing Fields

The Product field is how a form charges money. It has three pricing modes:

ModeWhat it doesTypical use
Single productOne item, one set priceDeposits, fees, merchandise
Multiple optionsA dropdown where each choice carries its own priceTicket tiers, donation levels, packages
Customer chooses amountThe visitor types the amountDonations, invoice payments, tips

Additional product settings:

  • Quantity — let buyers order more than one, with optional minimum and maximum quantities.
  • Minimum amount — for customer-chosen pricing, enforce a floor (e.g. $5). Enforced in the browser and again on the server, so it can’t be bypassed. Stripe’s own minimum charge is $0.50.
  • Image & description — show a thumbnail and short description beside the product.

A form can contain any number of product fields — main items, add-ons, fee covers — and they all sum into the Total.

4. Total & Coupons

The Total field displays a live order total that updates as visitors pick options, change quantities, or reveal conditional products. The Coupon field accepts discount codes (percentage or fixed amount) that you define in the plugin’s coupon settings; the discount applies to the total instantly.

5. Taking a Payment

Add the Stripe Card field to any form with products. Visitors see Stripe’s modern payment interface — card entry with Apple Pay / Google Pay / Link where available — right in the form. The submit button becomes a payment button (“Pay $25.00”) that tracks the live total.

How a payment flows: the visitor submits → the plugin recomputes the total on the server (conditional visibility, quantities, coupons, and minimums included) → Stripe charges that verified amount → only then is the submission saved and marked PAID. A failed or abandoned payment never creates an order; a saved order always has a verified charge behind it.

On multi-step forms, place the payment on the final step (the templates model this).

6. Conditional Logic

Any Pro field can be shown or hidden based on how the visitor answers other fields. Open the field’s settings → Conditional Logic, and build rules like:

  • Show “Custom Amount” if “Donation Amount” is “Other”
  • Show “Processing Fee Cover” if “Cover fees?” is “Yes”
  • Show “What should we improve?” if “Recommend us?” is “No”

Comparisons: is, is not, greater than, less than, contains — combined with any/all. Product fields work as rule sources too: a dropdown-priced product matches on the selected option’s label, and a customer-amount product matches on the number (enabling rules like “show X when the donation is greater than 100”).

Money safety: a priced field hidden by conditional logic is never charged — enforced in the browser and re-verified on the server.

7. Multi-Step Forms

Drop a Page Break wherever a new step should start. Visitors get a progress indicator, Next/Previous navigation, and per-step validation — required fields block advancing until completed. Use Section Break fields to add titled dividers within or across steps.

8. Signature Field

Visitors sign with a mouse, finger, or stylus; a Clear button lets them start over. Each signature is saved as a PNG image file in your Media uploads, and the submission stores a link — shown as an ink thumbnail in the submission detail view and embedded in PDF exports.

Mark the field Required to make signing mandatory. Works on phones and tablets — the page won’t scroll while signing.

Present terms in a scrollable box with an agreement checkbox beneath. Built for proof:

  • The saved value records which version of the terms was agreed to — e.g. Agreed (terms 8d8723a1).
  • The full terms text is snapshotted with the submission, permanently. Edit your terms next month and every old entry still shows exactly what that person agreed to.

Pair with a Signature field for waivers and contracts — the agreement templates arrive with both.

10. Survey & Rating Fields

Survey builds a Likert-style grid: your questions down the side, an answer scale across the top. New Survey fields come pre-filled with the standard 5-point scale (Strongly disagree → Strongly agree); add questions and choices with the +/× controls. Answers save in readable form: Easy to get started: Agree; Support was responsive: Neutral.

Rating is a quick star rating (1–5) for single-question feedback.

11. Form Templates

Pro adds 13 ready-made templates to the picker — each one a complete working form, payment field included where relevant:

  • Donation Form
  • Product Order Form
  • Paid Event Registration
  • Service Booking Deposit
  • Invoice Payment
  • Tip Jar
  • Course Signup
  • Fundraiser with Fee Cover
  • Liability Waiver
  • Photo / Media Release
  • Service Agreement + Deposit
  • Rental Agreement
  • Customer Satisfaction Survey Pro

Agreement templates include starter legal text with [Organization Name]-style placeholders — replace those with your details before publishing, and have your own counsel review anything legally significant.

12. PDF Receipts & Exports

  • Automatic receipts: paid submissions attach a PDF receipt to the form’s notification emails — amount, PAID stamp, payment reference, and the submitted details.
  • Download any submission: open a submission’s detail view and click Download PDF. Signatures appear as actual ink; paid orders include the payment box.

PDF generation uses your server’s standard PHP image libraries (present on all major WordPress hosts). If a signature image can’t be rendered on an unusual server, the PDF still generates with a note in its place.

13. Managing Submissions

The submissions table marks paid entries with a green PAID badge. The detail view shows your field labels, signature thumbnails, consent versions, the amount, and the Stripe payment reference (searchable in your Stripe Dashboard). CSV export is available for spreadsheets.

14. Email Notifications & Receipts

Form notifications are configured per-form in the free plugin (Form Settings → Notifications). For payment forms:

  • You (the merchant) get the normal notification — sent only after payment is verified, with order details and the payment reference included, plus the PDF receipt attached.
  • The buyer gets Stripe’s branded receipt automatically (see Payments Setup). You can additionally send them a form notification by adding a notification addressed to the form’s email field.

15. Headless Forms (Developers)

Prefer your own markup? The free plugin exposes a REST endpoint that runs the full pipeline — validation, anti-spam, storage, notifications — against any frontend you build:

POST /wp-json/ccf/v1/submit
form_id, form_nonce (action "ccf_form"), ccf_field_{slug}...

Returns JSON: HTTP 200 with success, or 400 with per-field field_errors. Payment and multi-step features require the standard rendered form. See the full headless guide for a complete template example.

16. Troubleshooting & FAQ

The form shows payment methods I didn’t expect (or is missing recent changes). Your page cache is serving old scripts. Purge your caching plugin/CDN after every plugin update; test in a private window to confirm.

Apple Pay doesn’t appear on iPhones. Register your domain in Stripe (Settings → Payment methods → Apple Pay). It also only appears in Safari on devices with a card in Apple Wallet.

“Minimum is X” when submitting. The customer-chosen amount is below the minimum you set on that product — or below Stripe’s $0.50 absolute floor.

A conditional product isn’t charging. That’s by design if the field is hidden — hidden priced fields never charge. Check the field’s rules if it should be visible.

Payment succeeded in Stripe but I want to find the order. Every submission stores the payment reference (pi_...). Search it in Stripe, or match the Stripe payment’s amount and time to the submissions list.

A required signature/consent isn’t blocking submission. Confirm the field is marked Required in its settings, and hard-refresh the form page (cache again).

PDF shows “(image omitted)” instead of the signature. Your server is missing the GD image library — standard everywhere, but ask your host to enable it.

Do payments work with page builders? Yes — embed the form with the shortcode or block as usual; the payment flow is self-contained.

Still stuck? Contact support — include your form setup and any error message, and we’ll troubleshoot.


Custom Contact Forms 7.13.0 · Custom Contact Forms Pro 1.0.0 · Support · Refund Policy