Skip to main content
Contact fields are the properties a contact can hold. Every field in the workspace lives in one catalog, and that catalog is what the rest of Senderz reads. The same list feeds the segment builder, the personalization picker in the email and SMS editors, the column dropdown on the import wizard, the Properties card on a contact, the automation steps that read or write a property, and the column picker when you export. Add a field once and it turns up everywhere.

Where to find it

Go to Settings, then AI & Automation, then Contact Fields. The screen has two tabs: Contact fields and Metrics. This page is about the first one. You can also reach it from a contact. Open any contact, find the Properties card, and click Manage fields.

Three kinds of field

Every row in the table carries one of three badges. The badge decides what you are allowed to do with it.

System

Built in. Email, phone, name, timezone, consent, tags, created date and the rest. You can fill the value on a contact, but the field itself cannot be renamed, retyped or deleted.

Integration

Comes from a connected store, reviews app or loyalty app. Managed by that integration, so it is read-only here. The row links straight to Integrations.

Custom

Fields you create. Rename them, change the value type, delete them. These are the only editable rows.
An integration field only appears while that integration is connected. Connect Shopify and the Shopify fields show up under a Shopify group. Disconnect it and they leave the catalog again. That is deliberate: listing a field nothing can fill would give you a filter that always returns nobody.

How the catalog is grouped

Fields are grouped in this order:
  1. Contact details identity, address, consent and attribution
  2. Email & SMS activity opens, clicks and other messaging history
  3. Tags
  4. One group per connected integration, named after the integration, in alphabetical order
  5. Custom fields
Store, web activity, loyalty and reviews fields do not get generic groups. They sit under the integration that supplies them, so you can always tell where a value came from.

Reading the table

Above the table there is a counter showing the total plus a breakdown by kind, a search box that matches on name and key, filter pills for All / System / Integration / Custom, and a Source dropdown when you have more than one source.

Fill rate

Fill rate is a real measurement, not an estimate. It is the percentage of contacts in the workspace that have a value in that field, recalculated when the page loads. A dash instead of a number means no contact has ever had a value there. That is the honest signal that a field is offered but empty, and it is worth checking before you build a segment on it.

Used in

Hover Used in to see exactly which segments, automations and templates reference the field, each one a link. This is the list you work through before deleting a field. Deleted automations do not count. They are on a retention clock and are not reachable, so they never block you.

Creating a field

1

Click New field

Top right of the Contact fields tab.
2

Type a field name

Use plain language, for example “Favourite category”. Senderz shows the derived field key underneath as you type, in this case favourite_category. The key is lower case with underscores, at least two characters and at most 64.
3

Choose a value type

See the table below. Pick carefully: changing it later is possible but it has to be checked against every value you already stored.
4

Add options, for Select and Multi-select

Type each option and press Enter or comma. At least one is required.
You can also create a field without leaving the import wizard. On the mapping step, open the dropdown for any column and choose + Create new custom field. Senderz suggests a value type from the sample values in that column, creates the field and maps the column to it in one go.

The value types

Because the type is enforced on write, a Date field really does hold dates and a Number field really does hold numbers. That is what lets the segment builder offer “before / after / in the last N days” on one and “greater than / between” on the other.

Editing a field

Custom rows have an edit button. You can change:
  • Display label freely. It updates everywhere the field is shown.
  • Value type, with a check first.
  • Options, for Select and Multi-select.
The field key cannot be changed after the field is created. It is what every segment, merge tag and automation refers to, so changing it would silently break them.

Changing a value type

When you change the type, Senderz re-checks the values you already stored, sampling up to 500 contacts, and tells you how many would not survive the change. It shows you the offending values before you commit. If you confirm anyway, those values are not converted. They stay as they are and may stop matching filters that use the field. Confirm only when you have looked at the samples.

Deleting a field

Custom rows have a delete button. You are asked to type the field key to confirm, because deleting a field also removes every contact’s value for it and cannot be undone.
A field that is in use cannot be deleted. If any segment, automation or template references it, the dialog switches to “Can’t delete this field” and lists exactly which assets are blocking, each as a link. Remove the field from those first, then delete it.
The same rule applies to bulk delete. Select several custom fields, choose Delete, and the confirmation tells you how many are in use and will be kept. Integration and system fields have no delete button at all.

Where a field is usable

Every field that can be filtered on turns up in the segment builder’s field picker, grouped the same way it is here. The operators you get depend on the value type:See Segments.
Every field has a merge tag. Fields stored directly on the contact record use their own name, for example {{firstName}} or {{email}}. Everything else, including every field you create, uses the custom. prefix, for example {{custom.favourite_category}}.You do not have to type them. Use the personalization menu in the email editor or the variable picker in the SMS composer, both of which read this catalog. Set a fallback so a contact with no value still gets a sensible message.See Templates.
The column dropdown on the mapping step is generated from this catalog, so what you see in Settings and what you see when importing are always the same list.Computed fields appear but are disabled, with a note saying so. Every column also offers Don’t import this column, which is honoured as a real instruction: an ignored column is not auto-detected behind your back.See Importing contacts.
The Properties card on a contact profile edits values inline. Add property opens a picker of everything that can be written. Computed fields show with a Computed badge and cannot be typed.See Contacts.
Two steps read this catalog. Update user properties lets an automation set a property on a contact, with the input matching the value type. And a date-based trigger picks its anchor from your Date fields, which is how a birthday or a renewal-date automation is built.See Steps and Triggers.
The export column picker groups the same catalog and shows how many contacts actually have each field. Fields that are empty for every contact are tucked behind Show N fields with no data, with the explanation that they would export as blank columns. You can still pick them.

Computed and read-only fields

Some fields are marked Computed. Senderz works the value out for you, so nobody can type it, import it or set it from an automation.
Be careful with computed fields. A number of them are declared in the catalog but nothing populates them yet, so they read as permanently empty. The fill rate column is how you tell: a dash means no contact has ever had a value. Check it before you build a segment on a computed field, or the segment will match nobody.
Thirteen commerce and engagement fields are the exception. They are calculated at the moment you export, from your real event history, so they are populated in an export file even though they read as empty on a contact: first active, last active, first email opened, last email opened, total messages opened, first message clicked, last message clicked, total messages clicked, first purchase, last purchase, total purchases, total spent and average order value.

Aliases: why your file maps itself

Each built-in field carries a list of alternative names. “E-mail”, “Email address”, “Customer email” and the Hebrew equivalents all resolve to Email. Shopify’s own column headers, and the $-prefixed keys other platforms export, resolve too. That is why an export from another platform usually arrives with most columns already mapped on the import wizard. Always review the mapping before starting the import, but you rarely have to build it from nothing.

Limits

There is no product cap on how many custom fields you can create. A very high safety ceiling exists so a runaway import cannot create fields without bound, but it is far above any real catalog and you should never meet it.

Segments

Filtering on a field, and the operators each value type offers.

Contacts

Editing property values on a single contact.

Importing contacts

Mapping columns and creating a field inline.

Templates

Merge tags and fallbacks.