Contents

Import / Export — Plugixa Team

Bulk export and import team members in CSV, JSON, or PDF formats. Ideal for site migrations, backups, and sharing member data with HR or marketing teams.

Open Plugixa Team → Import / Export.

Import wizard

Export

Pick a format and the plugin generates a file for download. Filters applied in the admin member list do not carry into exports — exports always include the current dataset (all members in the current language if multilingual is active).

CSV

  • File: plugixa-team-export-YYYY-MM-DD.csv
  • One row per member.
  • Columns: all member fields plus flattened skills, social_links, and custom field values (one column per field key).
  • UTF-8 BOM prefixed so Excel opens it cleanly.

JSON

  • File: plugixa-team-export-YYYY-MM-DD.json
  • Full fidelity: nested skills array, nested social_links array, and a custom_fields map keyed by field_key.
  • Best for round-tripping to another Plugixa Team install with full data preservation.

PDF

  • File: plugixa-team-export-YYYY-MM-DD.pdf
  • Generated via mPDF (shipped with the plugin).
  • One member card per entry with circular photo (or initials fallback), name, job title, department, email, phone, short bio.
  • Suitable for printing a staff directory.

REST endpoints

GET /wp-json/plugixateam/v1/import-export/export/csv
GET /wp-json/plugixateam/v1/import-export/export/json
GET /wp-json/plugixateam/v1/import-export/export/pdf

All three return a binary response with Content-Disposition: attachment.

Import

The import flow is a 3-step wizard.

Step 1 · Upload

Drag-and-drop a file (CSV or JSON) into the upload area, or click to browse. Accepted:

  • .csv (any delimiter auto-detected; UTF-8 expected)
  • .json (Plugixa Team JSON export format, or any structurally compatible JSON)
  • Max 10 MB

On upload, the plugin:

  1. Parses the file server-side.
  2. Validates structure (must have at least one member-like record).
  3. Returns a preview (first 10 rows) + suggested column mapping + a temporary file_token that references the parsed data.

Step 2 · Map columns

The wizard shows two columns:

  • Left — headers from your file.
  • Right — Plugixa Team fields: first_name, last_name, job_title, department, email, phone, bio, …, plus any defined custom fields by field_key.

The plugin auto-maps obvious matches (e.g., “First Name” → first_name). Adjust as needed. Unmapped headers are ignored.

Options:

Option Values Default Notes
Default status published, draft draft Status for imported members.
Duplicate handling skip, update, create skip What to do when a member with the same slug/email exists.
Assign to groups group picker Auto-assign every imported member to selected group(s).

Step 3 · Results

Click Import. The plugin iterates each row, applies the mapping, and creates / updates / skips members per your options.

Results screen shows:

  • Imported — count of newly created members.
  • Updated — count of existing members updated (when duplicate handling is update).
  • Skipped — count of duplicates skipped.
  • Errors — detailed error list (row-level) with the reason each row failed (e.g., missing required field, invalid email).

You can re-download the errors table as CSV to fix and retry.

REST endpoints

POST /wp-json/plugixateam/v1/import-export/import/validate
POST /wp-json/plugixateam/v1/import-export/import/execute

validate expects multipart/form-data with the file. execute takes JSON with the file_token, mapping, and options.

Round-tripping between installs

The cleanest migration path:

  1. On the source site, export as JSON.
  2. On the target site, install Plugixa Team (matching version, ideally).
  3. If you use custom fields, manually recreate field definitions on the target with identical field_key values before importing.
  4. Import the JSON; the mapping wizard auto-maps everything and create duplicate handling produces a clean copy.

Custom-field values import into the plugixateam_meta table automatically as long as the field_key matches an existing definition.

Formats in detail

CSV

Example minimal CSV:

first_name,last_name,email,job_title,department,status
Jane,Smith,jane@example.com,Senior Engineer,Engineering,published
Carlos,Gomez,carlos@example.com,Designer,Design,published

Skills and social links in CSV use a simple pipe-separated format:

skills,social_links
"PHP|90|#8892bf;React|80|#61dafb","linkedin|https://linkedin.com/in/jane;github|https://github.com/jane"

Rows are semi-colon-delimited; within a row, fields are pipe-delimited.

JSON

[
  {
    "first_name": "Jane",
    "last_name": "Smith",
    "slug": "jane-smith",
    "job_title": "Senior Engineer",
    "department": "Engineering",
    "email": "jane@example.com",
    "status": "published",
    "bio": "…",
    "skills": [
      { "name": "PHP", "percentage": 90, "color": "#8892bf" },
      { "name": "React", "percentage": 80, "color": "#61dafb" }
    ],
    "social_links": [
      { "platform": "linkedin", "url": "https://linkedin.com/in/jane" }
    ],
    "custom_fields": {
      "certifications": "AWS, Azure",
      "pronouns": "she/her"
    }
  }
]

Multilingual imports

  • The import creates each row as a new member in the current admin language (from the language switcher, or the default if “All” is selected).
  • To import translations: import the source language first, then import each translation with a translation_group column matching the source’s UUID. Alternatively, link them later via the Translation Tabs UI on each member.

Duplicate handling

Duplicates are detected by slug first, then email as fallback:

  • skip — don’t import; count as skipped.
  • update — merge imported data on top of existing; fields not in the CSV are untouched.
  • create — always create a new row (slug gets a suffix like -2 to stay unique).

Limits

Limit Value Override
Max upload size 10 MB plugixa_team_import_max_size filter
Max rows per import No hard limit Use the filter above with server memory in mind
Export rows All No chunking needed — mPDF handles large exports

Troubleshooting

CSV imports show all columns in the first column

The file isn’t truly a CSV — often a tab-separated file saved with a .csv extension. Open in a spreadsheet app, save explicitly as “CSV (comma-delimited)”.

Excel broke my UTF-8 accents

Open the exported CSV with File → Import in Excel and pick “UTF-8” as the encoding. Saving an edited file with “Save As” may strip UTF-8 — re-save as “CSV UTF-8” specifically.

Photos didn’t come through

CSV/JSON export URLs to photos, but imports don’t automatically download and attach external images. Either pre-upload photos to the target site’s media library and reference them by ID, or use the plugixa_team_import_photo filter to fetch and attach URL-based images at import time.

“Import failed: memory limit exceeded”

Very large imports (10K+ members) may exceed PHP’s memory limit. Increase memory_limit in PHP config, or split the file into smaller batches.

Updated members aren’t showing changes

Check the “Updated” count on the results screen. If it’s zero, the plugin thought your rows were new (different slug/email) and created duplicates. Change duplicate handling to update and retry with a backup first.

Quick Links