This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Forms: 3rd-Party File Attachments


Exposes file upload/attachments to the regular service mapping of Forms 3rdparty Integration.

From discussion at


  1. Unzip, upload plugin folder to your plugins directory (/wp-content/plugins/)
  2. Make sure Forms 3rdparty Integration is installed and settings have been saved at least once.
  3. Activate plugin
  4. Choose how the files will be attached — either:
    • as server path
    • as url
    • as base64-encoded bytes
    • as raw contents
  5. Map to the desired file detail, where “[field]” is the corresponding input field name as you would normally map:
    • [field] — the filename
    • [field]_attach — the transformed attachment from the previous step
    • [field]_mime — the file’s actual mime-type
    • [field]_size — the file size


How do I perform the appropriate transforms in custom hooks

Using F3i_Files_Base::Transform($value, $how) where $how is:
* path
* url
* base64
* raw

Gravity Forms input ids cause conflicts

Use the ‘label’ option to instead reference file uploads via the field label. You can also set the Advanced > Admin Field Label to use a shorter/non-display label than what users see on the form.

ex) If your upload field input_5 has a very long label “Choose one or more files blah blah blah” you would reference details like Choose one or more files blah blah blah_attach unless you set an admin label like “FileUpload”, in which case you’d map to FileUpload_attach. You can also use this to attach to different upload fields across forms — normally they might not be able to share the input_id, but if you give them the same admin field label then you only need to map the service once to that admin label.

This only works for GF or CF7, what about Ninja Forms or some other form plugin?

Message the author about adding it, or:
1. extend F3i_Files_Base and declare a method get_files that returns an array of (input_field => filepath)
2. hook to F3i_Files_Base_register and declare a new instance of your class

(A note about Ninja Forms — file uploads are a paid addon, and the author doesn’t have a copy, so adding it wasn’t on the roadmap)

It doesn’t work right…

Drop an issue at


There are no reviews for this plugin.

Contributors & Developers

“Forms: 3rd-Party File Attachments” is open source software. The following people have contributed to this plugin.




  • added special GF option to use field labels
  • some under-the-hood refactoring for clarity, reuse


  • refactored support for GF single and multifile fields
  • fix: collapsing ui


  • fix #2 — GF validation errors removes filename, fallback to path basename


  • including $form in _get_files hook
  • consolidating byte handling between ‘raw’ and ‘base64’
  • no longer throws an exception if unable to get file, instead returns an error array
  • fixed for GF temp path issue #1
  • new filter: _get_path used for GF bug


  • refactored inheritance, ‘better’ form registration, include ninja forms


  • added “meta” details
  • breaking change – removed overwrite setting as unnecessary (due to compatible formatting)
  • works with GF and CF7