Import, export and Trash
Bring contacts and companies in from a spreadsheet, export any list as CSV, and restore things you deleted.
Who can do it:
| Task | Owner | Admin | Member |
|---|---|---|---|
| Import a CSV | Yes | Yes | No |
| Export a list as CSV | Yes | Yes | Yes |
| Export everything (ZIP) | Yes | No | No |
| See the Trash | Yes | Yes | Yes (read-only) |
| Restore from Trash | Yes | Yes | Only their own reports |
Import contacts or companies
- Click Contacts (or Companies), then Import.
- 1. Choose a file: pick Contacts or Companies, choose a CSV file (up to 5 MB, first row = column names) and click Continue.
- 2. Match the columns: for each Fifi field, pick the column from your file, or — Don't import —. Fifi matches common column names for you.
- Contacts: First name*, Last name*, Email, Phone, Address, Job title, Lead status, Source. (A column called address, street, street address, home address, service address or location fills Address.)
- Companies: Name*, Email domain, Industry, Phone, Address, Notes. (A "website" column fills Email domain.)
- Choose what to do with duplicates (same email for contacts, same domain for companies): Skip it (keep what's in Fifi) or Update it with the file's values.
- Click Preview import.
- 3. Preview: check the counts (new, to update, skipped, with problems), the first 10 rows, and any Rows with problems.
- Click Import N contacts (or companies).
What you'll see: Import complete with how many were created, updated and skipped, and View contacts / Import another file buttons.
Good to know:
- Nothing changes until you click Import. If you change a setting after previewing, Fifi asks you to preview again.
- Updates only change mapped, non-empty columns. They never change the owner, or a company someone linked by hand.
- Imported contacts link to an existing company when their email domain matches.
- Contacts without a Source column get Source = Import.
- Each imported record gets a "was added" timeline entry. Imports don't start "contact created" automations.
- Up to 20,000 rows and 200 columns per file. Split bigger files.
Export a list
- Open Contacts, Companies or Deals, and set the filters and sort you want.
- Click Export CSV.
You get fifi-contacts-YYYY-MM-DD.csv (UTF-8). A contacts export has an Address column after Phone (since v0.54.0), so files exported before then have one column fewer; either imports, because columns are matched by name. On Deals, the Board exports open deals, Closed exports closed deals, and List exports the list's filters. Tasks can't be exported as CSV.
Limits: up to 50,000 rows (or 25 MB) per export, 20 exports an hour, one at a time. Exports are recorded in the activity log.
Cells that start with =, +, - or @ get a leading apostrophe so spreadsheets don't run them as formulas. Fifi removes it again if you re-import the file.
Reports and form submissions have their own Export CSV buttons. See Reports and Forms.
Export everything
Owners can download the whole workspace as a ZIP of CSV files: Settings → Workspace → Export everything → Download all data. See Workspace settings.
Floor plans and seats are in it too:
| File | What's in it |
|---|---|
floor_plans.csv | Each floor plan: ID, name, columns, rows, order, and its background image's ID (listed in files.csv) |
floor_shapes.csv | The walls, doors, areas, tables and labels on each plan, with the plan's ID and name |
seats.csv | Each seat: ID, name, kind, whether it takes bookings, order, and where it's placed |
kennels.csv | Ends with where each kennel is placed: the floor plan's ID and its position |
bookings.csv | Ends with each booking's seat: its ID (in seats.csv) and name. A seat deleted since shows as "A deleted seat" |
pets.csv | Ends with the pet's photo's ID, listed in files.csv as a "Pet photo" |
files.csv | Ends with each file's ID, so the IDs above can be matched |
Boarding rates and each stay's price are in it too (see Boarding and pets):
| File | What's in it |
|---|---|
boarding_rates.csv | Your rates, archived ones too: ID, name, what one pet costs a night, what each additional pet costs a night (dollars, like 85.00) and whether it is archived |
kennels.csv | Has each kennel's rate (its name, and its ID in boarding_rates.csv) before the placement columns |
stays.csv | Ends with each stay's price, a copy made when it was booked or re-dated: where it came from (None, Rate or Custom), the rate's name and ID then, the nights and pets priced, the amounts a night, the total and a custom rate's reason. A stay with no price has these cells empty |
Service records are in it too, whether the module is on or off (see Service records):
| File | What's in it |
|---|---|
service_records.csv | Every record not in the Trash (voided ones too, with their status): service, customer and address as written, technician and licence, conditions, notes, when it was completed, voided or emailed |
service_applications.csv | The products applied on each record (its ID in service_records.csv), in order |
service_products.csv | Your product list, archived ones too |
members.csv | Ends with each member's applicator licence |
Loads are in it too, whether the module is on or off (see Loads):
| File | What's in it |
|---|---|
loads.csv | Every load not in the Trash (cancelled and delivered ones too): number, status, shipper, contact, lane and carrier (IDs, and the companies' names), driver, truck and trailer, equipment and temperatures, freight, the shipper's reference, the customer rate, carrier pay and margin in dollars, notes, the first pickup and last delivery, when it was delivered or cancelled (and why), owner |
load_stops.csv | Each load's stops in order (its ID in loads.csv): kind, facility, address, locality, time zone, the window in the stop's own time and in UTC, appointment number, dock appointment (its booking's ID), arrival and departure |
load_events.csv | Each load's history, oldest first: created, moves, carrier changes, arrivals and departures, check calls with what was said, where and the ETA, and documents added and removed, and who did each |
load_documents.csv | Each load's documents (proof of delivery, rate confirmation, bill of lading, other): the load, kind, the stop a POD is for, the file's name, type and size, and who uploaded it and when. The files aren't in the ZIP: download them from each load's page |
Invoices are in it too, whether the module is on or off (issued ones are kept 7 years; see Invoices):
| File | What's in it |
|---|---|
invoices.csv | Every invoice not in the Trash (drafts and void ones too, with their status): number, the contact's and company's IDs, whom it's billed to (name, email and address as written on it), the PO, issue and due dates, terms, currency, subtotal, tax (name, rate and amount), total, paid and balance in dollars, notes, your details and payment instructions as issued, when it was issued, voided (and why) and emailed, and when it last went into a QuickBooks export file |
invoice_lines.csv | Each invoice's lines in order (its ID in invoices.csv): description, quantity, unit price, line total, taxable, and the record it bills (its kind and ID) |
invoice_settings.csv | Your invoice numbering, default terms, tax, details, payment instructions, default notes, the automatic reminders setting and the names the QuickBooks export writes |
payments.csv | Every payment and refund on those invoices (voided ones too, with when and why): the invoice, kind, date received, method, reference, amount (always positive: Kind says Refund), notes, who recorded it and when, and when it last went into a QuickBooks Desktop export file. Payments and Receivables also have their own Export CSV; for QuickBooks files see Export to QuickBooks |
Photos on customers' timelines are listed too (the pictures themselves are in Download all photos, for owners and admins; see Photos on timelines):
| File | What's in it |
|---|---|
timeline_photos.csv | Each photo on a photo entry that isn't in the Trash, on a customer that isn't in the Trash: its ID and its entry's ID, the customer (type, name and ID), what it's about (a pet, stay, visit or service record, and its ID), the caption, type, size, width and height, the SHA-256 of the file, who added it and when it was taken. No pictures and no links |
timeline.csv | Photo entries show as type Photo, with their caption as the notes |
And Marketing's media and social posts (live ones; the photos and videos themselves aren't in the ZIP: owners and admins get them with Download all media, see Media and social posts):
| File | What's in it |
|---|---|
media.csv | Each media item: ID, kind, title, description, alt text, tags, the record it's linked to, file type, size, width, height, duration, consent badge (Don't use ones too), who added it and when |
media_subjects.csv | The people and pets shown in each item (its ID in media.csv): their consent, its note, and who set it and when |
social_posts.csv | Each post: ID, platform, status, caption, hashtags, first comment, alt text, notes, when it was posted and its link, its media (IDs in media.csv, in order) and its author |
Positions and sizes are in quarter cells (4 to a grid cell); README.txt in the ZIP explains them. Deleted plans and seats aren't included, nor are a deleted plan's shapes.
Trash and restore
When you delete a contact, company, deal, saved report, pet, media item, social post, photo entry, service record draft, load or invoice draft, it goes to Settings → Trash for 30 days. After that a nightly job deletes it for good, with its timeline.
Right after deleting, click Undo on the banner. Members can undo their own deletes of records they own for about 10 minutes.
Later:
- Go to Settings → Trash.
- Find the item ("Deleted ‹when› by ‹name›").
- Click Restore.
What you'll see: "‹Kind› restored. It's back in ‹list›."
- Only owners and admins can restore contacts, companies, deals, pets, media, posts and photo entries (a photo entry comes back only while its customer isn't in the Trash: restore the customer first). A report's owner can restore their own report. A pet whose client is in the trash too is restored after its client.
- Media marked Don't use is listed for owners and admins only.
- Trash shows the 100 most recent deletions of each type.
- There's no "delete forever" button. Items leave on their own after 30 days.
- Tasks, task notes and timeline entries other than photo entries don't go to Trash. Removing one photo is final at once; deleting a whole photo entry goes to Trash.
- Issued and void invoices are kept 7 years after they were issued: until then they can't be deleted at all (see Invoices). A deleted invoice draft can be restored by owners and admins, unless something it bills has been put on another invoice since.
Troubleshooting
| Message | What to do |
|---|---|
| "Only admins and owners can import. Ask one of them, or send them your file." | Ask an owner or admin. |
| "That file is over 5 MB. Split it into smaller files." | Split the file. |
| "Only the first 20,000 rows are imported…" | Import the rest as a second file. |
| "You changed something since this preview. Preview again before importing." | Click Preview import again. |
| "Another large export is running. Please try again in a minute." | Wait for your other export. |
| "Another contact now uses that email…" (restore) | Change or delete the other contact first. |
| "Its company is in the trash too. Restore the company first." | Restore the company, then the deal. |
| "Deals is turned off, so this can't be restored yet…" | Turn the module back on in Settings → Modules. Nothing is purged meanwhile. |