The Scenario
The message arrived in Slack on a Tuesday afternoon: a partner firm was sending over 120 new client contacts, and your bookkeeping practice needed them in sevdesk before the week was out. You downloaded the file, opened it in Google Sheets, and stared at columns A through E — company name, first name, last name, email, phone.
The bad version:
- Open sevdesk, navigate to Contacts, click New Contact, fill in company name, names, email, phone, set category to Customer, save — then go back and start again for contact 2.
- After the first dozen, your eyes start to blur across rows. You accidentally paste the email from row 18 into the phone field on row 19 and don't notice until the export three weeks later.
- By row 50 you're rationing your focus. The last 70 get done in shorter bursts across the rest of the week, meaning the import never actually finishes on time.
Nobody hired you to do data entry at this scale. Your time has a rate attached to it, and that rate does not justify spending eight hours copying fields from one system into another.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent built into Google Sheets that reads your data and talks to sevdesk on your behalf. Open the sidebar, type your ask, and it handles the API calls for every row.
Create sevdesk contacts for every row in my Contacts sheet — use column A for company name, B for first name, C for last name, D for email, E for phone, set category to Customer for all, and write the returned contact ID back into column F
What You Get
- One sevdesk contact record created for each row in the sheet.
- Contact IDs written into column F as each record is saved — so you have a reference for any future invoice creation tied to these clients.
- Rows that fail (malformed email, duplicate record) surface an error note in column F instead of a silent skip.
- The import runs in one pass. You don't babysit it.
What If the Data Is Not Quite Ready
The company name column has blank cells for freelance contacts
Create sevdesk contacts for every row in my Contacts sheet — use column A for company name (leave blank if empty), B for first name, C for last name, D for email, E for phone, set category to Customer, and write the contact ID into column F — skip any row where both column A and column B are empty
The email column has formatting issues — some entries have trailing spaces or uppercase domains
Before creating contacts, clean column D — trim whitespace and lowercase the domain part of each email — then create a sevdesk contact for every row using columns A through E and write the returned ID into column F
Contacts span two tabs: Freelancers and Companies, with slightly different columns
Create sevdesk contacts from both the Freelancers tab (columns A through D: first name, last name, email, phone) and the Companies tab (columns A through E: company name, first name, last name, email, phone) — set category to Customer for Companies rows and Freelancer for the other tab — write contact IDs back into column E on the Freelancers tab and column F on the Companies tab
The sheet has duplicates — some emails appear twice, and sevdesk will reject them
Scan column D of my Contacts sheet for duplicate email addresses — mark duplicates in column G with DUPLICATE — then for all non-duplicate rows, create sevdesk contacts using columns A through E and write the returned contact ID into column F
The pattern is to handle the data problem and perform the action in the same prompt. Ask for deduplication and creation together, and you get one clean result instead of an error halfway through.
Try It
Get the 7-day free trial of SheetXAI and open the Google Sheet where your contact list lives, then ask it to push every row into sevdesk. When you're done, see how the same approach works for generating invoices from a sheet or pulling open invoices back out.
