Import guide

Bringing your data into Wedding Computer

For a whole contact list, start with a CSV, TSV or JSON export: confirm the column mapping and preview before anything is written. You can also paste text for AI-assisted extraction, post one lead at a time to the API, or use a supervised MCP assistant for individual dated bookings. This guide explains the limits of each path.

Imported contacts become plain-text Markdown records you can access through supported sync paths. Account exports can include authorised Markdown and JSON as a portable reference archive, but the ZIP is not a one-click restore format.

Advanced

Let an AI agent read your old CRM (no export needed)

If an AI assistant can see your browser and connect to Wedding Computer’s MCP server, it can help move one dated booking at a time. Have it show you the names, participant email, wedding date and other fields before you approve add_or_import_booking. This is a supervised Pro workflow, not an unattended bulk importer.

Screen reading can be slower and less reliable than a reviewed file export, so use it when the old system has no useful export or when you need detail that the export omits. Keep the source account signed in yourself, review every proposed write, and check the result in Wedding Computer before continuing.

1. Connect the MCP server

In your assistant, add Wedding Computer’s MCP server (https://wedding.computer/mcp) with your integration token from Settings → Calendar & contacts → Advanced integrations. MCP is a Pro feature.

2. Open your old CRM

Log into your existing CRM in a browser the agent can control — for example Claude in Chrome, or ChatGPT in agent mode — and leave your client list open.

3. Review one booking

Ask it to read the first dated booking, show you the parsed record, and wait. After you approve it, it can call add_or_import_booking. Check the contact and wedding before starting the next one.

Example prompt

I’m logged into my old CRM in this browser tab. Start with the first booking
only. Read the names, participant emails, phone numbers, wedding date, venue
and status, then show me exactly what you plan to send. After I approve it,
use add_or_import_booking. Stop on any conflict or ambiguous field. Do not move
to the next booking until I have checked the result in Wedding Computer.

Start with one booking, not a whole page. Confirm the primary email and real wedding date before approving the write.

The booking tool accepts booked or completed. It matches within your business using the wedding date plus either participant email and stops for review when existing details conflict.

For run sheets, packages or notes on a specific wedding, point it at the relevant page and the other MCP tools below.

Import a file (contacts)

The file importer brings in contacts from CSV, TSV or JSON, including supported contact and project-list exports from major wedding CRMs. It can optionally create a basic wedding workspace and calendar booking for booked or completed contacts with a valid date. It does not import invoices, payments, contracts or timelines.

Open Contacts → Import (or /app/import), pick where the data is coming from, and follow four steps:

1. Upload

Drop in a CSV, TSV or JSON file up to 10 MB. We auto-detect the delimiter and strip stray spaces and byte-order marks.

2. Map columns

We match your column headers to our fields automatically (with built-in presets for common CRMs). You confirm or adjust each one. Columns we don’t recognise are kept as extra detail, never silently dropped.

3. Preview

See the first few rows exactly as they’ll be saved before anything is written. You can also tick a box to auto-create a wedding for any booked or completed contact that has a date.

4. Import

We create the contacts and show you a summary: how many imported, skipped, or failed — with the row number and reason for anything that didn’t go through.

What we accept

Your file can use any column names — the importer maps them to the fields below. A row needs at least a first name; everything else is optional but maps cleanly when present.

These match the core fields used by contact Markdown, so individual files can round-trip through vault sync. The account ZIP itself is a reference archive, not an importer input.

Required fields

FieldTypeDescription
first_nametextRequired. The contact’s first name.
last_nametextStrongly recommended. The contact’s last name (or family name).

Optional fields

FieldTypeDescription
emailtextEmail address. Syntax is validated before import; invalid rows are shown in preflight and are not written.
phonetextPhone number, in any format (+, spaces, brackets all fine).
partner_first_nametextThe partner’s first name.
partner_last_nametextThe partner’s last name.
partner_emailtextThe partner’s email address.
partner_phonetextThe partner’s phone number.
addresstextPostal or street address.
instagramtextInstagram handle (with or without the @).
facebooktextFacebook profile or page.
tiktoktextTikTok handle.
websitetextWebsite URL.
wedding_datedateWedding date — see the date formats we accept below.
wedding_locationtextWedding venue or town.
sourcetextWhere the lead came from (e.g. website, referral, expo). Defaults to “import”.
statusenumPipeline status — normalised to our set, see below.
notestextFree-text notes — kept as the body of the contact file.
created_atdate/timeThe original date the lead was created, so your history is preserved. Accepts an ISO timestamp or a plain date.

Only a first name is strictly required — a row with no last name still imports. Any column you don’t map to a field below is preserved as “extra detail” on the contact rather than discarded.

A sample CSV

Headers can be in any order and any wording — these are just clear examples. Wrap any value that contains a comma in quotes.

First name,Last name,Email,Phone,Partner first name,Wedding date,Wedding location,Status,Instagram,Notes
Sarah,Smith,sarah@example.com,0400 123 456,James,2026-12-15,"Byron Bay, NSW",Booked,@sarahandjames,"Met at the expo — wants an elopement"
Tom,Nguyen,tom@example.com,0400 222 333,,2026-09-05,Melbourne,Enquiry,,"Asked about pricing"

Two contacts: one booked with a wedding date, one new enquiry.

Status values

We store one of eight statuses. Whatever your CRM calls a stage, we map common wordings to ours:

new        ←  lead, inquiry, enquiry, prospect, pending
contacted  ←  follow up, responded, replied
meeting    ←  in progress, consultation
quoted     ←  proposal, proposal sent, quote, quote sent
booked     ←  confirmed, hired, active, won
completed  ←  closed, done, finished, delivered
lost       ←  declined, rejected, not booked, cancelled
archived   ←  inactive, old

Anything we don’t recognise is flagged in preview, safely normalised to "new", and preserved as the original pipeline status.

Dates

Wedding and birthday dates accept ISO (2026-12-15), numeric dates, month names (15 December 2026), and two-digit years. For ambiguous numeric dates, choose DMY or MDY on the mapping screen and confirm the interpretation in the preview.

Unparseable wedding or birthday text remains visible in the preview but is saved as a blank date. An invalid original-created timestamp uses the import time instead. Impossible dates never create a wedding workspace or calendar booking.

Coming from another CRM

Pick your CRM on the import screen and we apply a tailored column map. Here’s how to get the export file out of each:

Dubsado

Projects → choose a status or filter → Export / Export CSV → select client and project fields → download CSV. Review custom field headings during mapping.

Studio Ninja

Clients → Export clients downloads a supported CSV. Leads/Jobs exports are broader ZIP archives and cannot be imported directly; prepare a standalone CSV first.

HoneyBook

Clients → Contacts tab → ⋯ menu → Download spreadsheet. Column names vary by account; our fuzzy matcher handles it.

VSCO Workspace (formerly Táve)

Any list (Leads, Jobs, or Address Book) → Export, choosing “all columns” for the best result.

Any CSV / JSON

Any spreadsheet works — export to CSV or JSON, upload, and map the columns yourself. We remember nothing proprietary; it’s just your data.

Good to know

Files up to 10 MB. Large files import in batches with a progress bar.

Imports detect existing contacts by email, phone, or matching names and wedding date, then skip them for review rather than overwriting them. Imports never update existing contacts automatically.

The file importer handles contacts and, when you opt in, basic wedding workspaces for eligible booked or completed rows. Invoices, payments, contracts, forms and timelines still need to be recreated or brought in through their supported app workflows.

Paste text and let AI extract it

Don’t have a clean spreadsheet? On the import screen choose “Paste text”, then paste copied text from an email, a list, a web page, or another source. Our AI pulls names, emails, phones, dates, and venues into structured contacts.

The extracted columns go through the same mapping and preview flow before anything is saved. Check ambiguous names, dates and statuses carefully; use the non-AI file path whenever you already have a clean export.

Import via MCP (AI agents & automations)

Wedding Computer runs an MCP server at https://wedding.computer/mcp. Connect Claude or any MCP client with your integration token (Settings → Calendar & contacts → Advanced integrations) and an agent can create data on your behalf in natural language. MCP is a Pro feature.

These are the write tools an agent uses to bring data in:

add_or_import_booking

Create or safely match one dated booking with add_or_import_booking. It requires first name, last name, primary email and wedding date; existing non-empty details are preserved and conflicts are returned for review.

update_run_sheet

Replace or upsert a whole run sheet for a wedding in one call — a list of timeline items with times, locations, who, and category.

save_timeline_item

Add or edit a single timeline item, including relative timing like “30 minutes before sunset”.

update_wedding_todo

Set a wedding’s checklist from a markdown task list.

append_wedding_note

Append to the shared, vendors-only, or private note on a wedding.

propose_timeline_change

Change core wedding fields (date, times, locations). Applied immediately if you control the timeline, otherwise sent for the planner’s approval.

Example prompts

Talk to your agent in plain language — it picks the right tool. A few that work well:

Review dated bookings one at a time → add_or_import_booking

Review and import these bookings one at a time with add_or_import_booking. Show me each parsed record before writing it:
1. Sarah & James Smith — sarah@example.com — 0400 123 456 — wedding 15 Dec 2026, Byron Bay
2. Tom Nguyen & Riley Chen — tom@example.com — wedding 8 Nov 2026, Daylesford
3. Alex Lee & Morgan Jones — alex@example.com — wedding 24 Oct 2026, Melbourne

Build a run sheet from a venue email → update_run_sheet

Here's the run sheet the venue sent for the Smith wedding (id abc123). Update the timeline:
- 12:00  Guest arrival — The Old Chapel
- 14:30  Ceremony — The Old Chapel — category ceremony
- 16:00  Couple portraits — East Garden — category portraits
- 17:30  Reception dinner — The Marquee — category reception

Add an item timed to the sun → save_timeline_item

For the Smith wedding (abc123), add "Golden hour portraits":
30 minutes before sunset, 60 minutes long, at the East Garden, assigned to me.

Set a checklist → update_wedding_todo

Set the checklist for the Smith wedding (abc123):
- [ ] Confirm coverage hours
- [x] Send deposit invoice
- [ ] Final timeline review 3 days before

Apply a date change → propose_timeline_change

The Smith wedding moved a week. For abc123 set date 2026-12-22 and ceremony time 15:00.
(I'm the planner, so apply it.)

The JSON intake API

For webhooks, Zapier, or your own forms, POST a lead to /api/v1/enquiries with your enquiry intake key (Settings → Enquiry form). Same fields as a contact; a Pro feature.

Each call creates one lead and returns its id and status.

curl -X POST https://wedding.computer/api/v1/enquiries \
  -H "Authorization: Bearer YOUR_ENQUIRY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Sarah",
    "last_name": "Smith",
    "email": "sarah@example.com",
    "phone": "0400 123 456",
    "partner_first_name": "James",
    "wedding_date": "2026-12-15",
    "wedding_location": "Byron Bay, NSW",
    "notes": "Wants an elopement"
  }'

Import via the open markdown format

Because your data lives as plain-text markdown, you can write contact and wedding files directly — by hand, from a script, or through the Obsidian plugin — and sync them in via the vault API (PUT /vault/v1/file/…). This is the highest-fidelity path: every field round-trips exactly.

The file format is documented field-by-field on the open standard page. An individual contact Markdown file can round-trip through the vault API with its supported fields intact; this is separate from downloading the account reference ZIP.

Does this line up with exporting?

Individual Markdown files can be edited and written back through the vault API with their supported fields intact. Account → Export instead downloads a portable reference ZIP with JSON, authorised Markdown, and uploads; it is not a one-click restore package.

The CSV file importer is a little different on purpose — it’s built for moving in from another CRM, so it focuses on contacts and the fields above. It now accepts the same core contact fields the export emits (including address and social handles), with anything else preserved as extra detail.

Weddings, invoices, and calendar events are included as reference data where you are authorised to access them. Restoring or importing them requires a supported app or vault path; calendar feeds (iCal, CalDAV, and CardDAV) are read-only by design.

Ready to bring your data over?

Start free, import your contacts in minutes, and keep every byte as plain text you own.