Plugin: Darwin Form Handler for Pardot

Changelog

Version: 1.1.0 Requires: WordPress 5.6+, PHP 7.4+, Contact Form 7
Developed by: Darwin Digital

Version 1.1.0

Initial public release. Introduces the custom [multifile] field, per-form Pardot endpoint configuration, permanent file storage, and full security hardening.

  • Custom multifile upload field — new [multifile] and [multifile*] CF7 tag with drag-and-drop UI, file count limit, and per-file size limit options.
  • Accepted file types — JPG, JPEG, PNG, PDF, DOC, DOCX, XLS, XLSX validated by both file extension and actual MIME type using wp_check_filetype_and_ext().
  • Permanent file storage — uploaded files are copied to wp-content/uploads/cf7-pardot-uploads/ so Pardot URLs remain accessible indefinitely after submission.
  • Upload directory hardening.htaccess file written on first use to block PHP, PHTML, PHAR, HTML, and SVG execution in the upload directory.
  • Per-form Pardot endpoint — each Contact Form 7 form stores its own Pardot Form Handler URL via a dedicated Pardot Settings tab in the CF7 form editor.
  • Dynamic field mapping — all posted CF7 fields are sent to Pardot using field names as keys; CF7 internal fields are excluded automatically; multi-value fields are comma-joined.
  • Email notification file URLs — the [multifile] mail-tag in the CF7 Mail tab is replaced with permanent public URLs so the admin email contains clickable links.
  • Admin dashboard — step-by-step setup guide under Contact → Pardot Integration.
  • Tag Generator integration — the [multifile] tag is available from the CF7 tag generator with controls for name, file count limit, max file size, ID, and class.
  • CF7 dependency check — plugin prevents activation without CF7 and surfaces an admin notice when CF7 is deactivated.
  • Nonce + capability check — endpoint URL save is protected by CF7's form-editor nonce and wpcf7_edit_contact_forms capability.
  • Conditional asset loading — front-end CSS and JS are enqueued only on pages that render a form containing a [multifile] field.
  • Pardot error tracking — non-2xx responses and network errors are stored in a transient for admin visibility.
  • WordPress.org ready — GPLv2+ license, full output escaping, text domain darwin-cf7-pardot-integration, POT file, and .distignore for clean release zips.