The Scenario
A new SaaS product just launched its Mailercloud account. The lifecycle marketing plan calls for eight custom contact properties — plan_tier, last_purchase_date, nps_score, referral_source, trial_started_at, upgrade_eligible, churned_at, and reactivation_count. Someone has already documented them in a Google Sheet: property name in column A, data type in column B.
The Mailercloud UI adds one property at a time. Click the button, type the name, pick the type, save, click again. For eight properties that's eight rounds of clicking through the same modal.
The bad version:
- Open the Mailercloud properties panel, add the first property manually, confirm the type, save
- Repeat seven more times, trying to keep track of where you are in the sheet with one eye on the UI and one eye on your browser tab
- Notice on the sixth one that you mis-typed the property name — go back, find it, fix it, re-save
This is setup work. It shouldn't cost the same cognitive load as building the campaign. The sheet already has the definitions. The definitions should just land in Mailercloud.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads the property definition table you already built, understands what each row represents, and through its Mailercloud integration it can create each property for you — writing back a status when each one completes.
Create a new custom contact property in Mailercloud for each row in this sheet using the property name in column A and data type in column B — write CREATED or FAILED into column C for each row
What You Get
- SheetXAI reads each row in your definition table and makes a separate Mailercloud API call for each property
- Column C gets CREATED written back when the property is successfully created
- If a row fails — because the name is already taken, or the data type value isn't valid — FAILED lands in column C for that row instead, so you know exactly which ones need attention
- Rows that succeed leave you with live custom properties in Mailercloud, ready to accept contact values
What If the Data Is Not Quite Ready
The data type values in column B don't match Mailercloud's accepted formats
For each row in this sheet, create a Mailercloud custom contact property using column A as the name — interpret column B as the data type and convert "text" to "string", "date" to "date", and "number" to "integer" before creating each property — write CREATED or FAILED into column C
You want the new Mailercloud property ID written back alongside the status
Create a Mailercloud custom property for each row using the name in column A and type in column B — write the new property ID into column D and CREATED or FAILED into column C
You only want to create properties in rows where column E is marked "include"
For each row in this sheet where column E says "include", create a Mailercloud custom contact property using column A as the name and column B as the type — write results into column C
Kill chain: validate the type values, create the properties, write status and ID
For each row in this sheet, check that column B contains a valid Mailercloud data type — if it does, create the custom property using column A as the name and write the property ID and CREATED into columns D and C — if the type is invalid, write SKIPPED: bad type into column C
The sheet becomes a live record of what was created, what failed, and why.
Try It
Get the 7-day free trial of SheetXAI and open your Google Sheet property definition table — paste your property names and types in columns A and B, then ask SheetXAI to create each one in Mailercloud. For related work, see how to bulk rename custom properties when your naming conventions change.
