Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/frances109/flamingo-export-plugin/archive/refs/heads/master.zipA WordPress plugin to export Flamingo (Contact Form 7) inbound messages as CSV or JSON, with smart field handling across forms that use different field names.
Requirements
- WordPress 5.8+
- Flamingo plugin by Takayuki Miyoshi (the CF7 message storage plugin)
- PHP 7.4+
Installation
- Upload the
flamingo-export/folder to/wp-content/plugins/ - Activate via Plugins → Installed Plugins
- Navigate to Flamingo → Export Messages in WP Admin
Features
Channel Filter
- Export from a specific form/channel, or all channels at once
Field Modes
Default Fields (Recommended)
Exports 4 semantic columns regardless of what field names your forms use:
| Column | Detected field names |
|---|---|
| Name | your-name, full-name, full_name, name, first-name, fname, contact-name |
| your-email, email, e-mail, email-address, contact-email | |
| Phone | phone, phone-number, tel, telephone, mobile, cell, number |
| Company | company, company-name, organisation, organization, org, business |
Also uses Flamingo's stored _from_name and _from as fallbacks.
All Fields
Exports every field from every form submission. When mixing multiple forms:
- All unique field keys across all records become columns
- Records from forms that don't have a particular field get a blank value
- Best used when filtering to a single channel
Channel Fields (only available when a specific channel is selected)
Fetches all unique field keys used by that channel's submissions and presents them in a multi-select list. You choose exactly which fields become columns in the export — no blanks from other forms, no unwanted internal fields. All fields are pre-selected by default; deselect any you don't need before exporting.
Export Formats
- CSV — UTF-8 with BOM (Excel/Google Sheets compatible)
- JSON — Pretty-printed array of objects
Date Range & Limit
- Optional from/to date filter
- Optional max records limit (
-1= unlimited)
Extending Field Patterns
Add custom field name patterns via the flamingo_export_field_patterns filter:
add_filter( 'flamingo_export_field_patterns', function( $patterns ) {
// Map "kontakt" and "ihr-name" to the "name" column
$patterns['name'][] = '/^kontakt$/i';
$patterns['name'][] = '/^ihr[-_]name$/i';
// Map "telefonnummer" to "phone"
$patterns['phone'][] = '/^telefonnummer$/i';
return $patterns;
} );
How Flamingo Stores Data
Flamingo saves each CF7 submission as a flamingo_inbound custom post type with:
_from_name— sender name (post meta)_from— sender email (post meta)_subject— email subject (post meta)_fields— serialized array of all form field key/value pairs (post meta)- Channel taxonomy:
flamingo_inbound_channel
This plugin reads all of these to build exports.
File Structure
flamingo-export/
├── flamingo-export.php # Plugin bootstrap
├── includes/
│ ├── class-flamingo-export-core.php # DB queries & message parsing
│ ├── class-flamingo-export-fields.php # Field detection & row building
│ └── class-flamingo-export-formatter.php # CSV/JSON output & download
├── admin/
│ ├── class-flamingo-export-admin.php # WP Admin menu & form handler
│ ├── views/
│ │ └── export-page.php # Admin page HTML
│ └── assets/
│ ├── admin.css # Admin UI styles
│ └── admin.js # Admin UI interactions
└── README.md
License
GPL-2.0+