Custom fields

    Add fields to a list in IGSendMail so you can store more than an email address, personalize campaigns, and build segments on real data.

    On this page

    Fields are the columns of a list. Out of the box a contact is an email address; fields are how you also store a first name, a company, a plan, a signup source, or a renewal date. When you finish this page you will know how to add a field, how to name its tag, and how that value reaches a campaign.

    Fields are defined per list. Open a list and go to ListsFields to see what that list stores.

    Why fields exist#

    Two reasons, and it is worth being clear about which one you are solving for.

    Personalization. A field value can be dropped into a subject line or the body of an email, so the same campaign reads slightly differently for each recipient. "Hi Sarah" instead of "Hi there".

    Segmentation. A field you can filter on is a field you can send to selectively. If you store the country, you can send a shipping notice to one country. If you store the plan, you can send an upgrade offer to everyone not already on the top plan.

    If a piece of data serves neither purpose, do not store it. Every field is one more column your imports have to fill and one more thing to keep accurate.

    Add a field#

    Open Fields for the list

    Go to Lists, open the list, and choose Fields. Existing fields are listed here.

    Create the field and give it a label

    The label is what you and your team see in the interface and in the import mapping step. Write it in plain language: "First name", "Company", "Plan".

    Choose the field type

    Pick the type that matches the shape of the data. A short line of text, a longer block of text, a number, a date, or a value chosen from a fixed set of options all behave differently when you filter on them later.

    Set the tag name

    This is the identifier you use in campaigns. See below for how to choose one.

    Decide whether it is required

    A required field must have a value for the contact to be saved. Requiring a field you cannot reliably collect will block signups and reject import rows, so require only what you genuinely cannot work without.

    Save, then fill it

    A new field is empty on every existing contact. Re-import your file with that column mapped to backfill it, or accept that only new contacts will have a value and write your campaigns to cope with a blank.

    Choosing a field type#

    Use the type that reflects how you will query the value, not how it looks on screen.

    • Text for names, companies, cities, anything free-form.
    • Number for quantities, order counts, scores. Storing a number as text means a filter for "greater than 5" cannot work properly.
    • Date for signup dates, renewal dates, last purchase. Again, a date stored as text cannot be compared as a date.
    • A fixed set of options for anything with a known small vocabulary: plan tier, country, lead source. This keeps your data clean, because "US", "USA", and "United States" as free text are three different values to a filter.

    Tag names#

    The tag is the short machine-readable name for the field. It is what you write in a campaign to insert the value.

    Guidelines that will save you trouble:

    • Lowercase, no spaces, words joined by underscores: first_name, company, plan_tier.
    • Descriptive, not abbreviated. renewal_date beats rd.
    • Consistent across lists. If one list calls it first_name and another calls it fname, every template you write has to be forked.

    Renaming a tag breaks campaigns that use it

    The tag is a reference, not a label. If a campaign or template contains the tag first_name and you rename that field's tag to firstname, the reference no longer resolves. Depending on where it appeared, recipients see a blank space or the raw tag text in their email.

    Treat a tag name as permanent once anything uses it. If you truly need a different name, create a new field with the new tag, copy the values over with an import, update every campaign, template, automation, and form that referenced the old tag, and only then remove the old field.

    The display label is safe to change at any time. It is only the tag that other things point at.

    How field values reach a campaign#

    When a campaign sends, each recipient's field values are substituted into the message. You write the tag where the value should appear, and each recipient gets their own.

    The mechanics of writing tags, the exact syntax, and how to set a fallback for contacts with a blank value are covered on Personalization tags. Two things to keep in mind while you are designing fields:

    Blank values are common. Any contact who arrived before the field existed has nothing in it. Any import that did not map that column left it empty. Write your copy so a missing value degrades gracefully, and set a fallback where the platform supports one.

    Garbage in shows up in the inbox. If your import has sarah in lowercase and SARAH CHEN in caps, that is what recipients read in the greeting. Clean the data in your spreadsheet before importing, not in the email template afterwards.

    Fields and segments#

    Every field you add becomes something you can filter on. This is where the payoff is. A country field turns into a segment for one market. A plan_tier field turns into a segment of everyone you could upgrade. A signup_source field lets you compare how contacts from different channels behave.

    Design your fields with the segments you want in mind. If you cannot name a segment or a subject line the field would make possible, you probably do not need the field.

    Last updated September 10, 2026

    Was this page helpful?