Understanding attributes
Attributes define the customer facts a campaign can use: email address, plan tier, renewal date or company relationship. Each belongs to a schema. Choose fields for the decisions you need to make, with clear names, types and descriptions.
Add a field
Open Settings → Schemas, pick the schema, then Attributes → Create attribute. Set the source and field details:
- How is the value set? Choose Stored value or Evaluated attribute. For a stored value, Value type defines the allowed format.
- Name. The label you will see everywhere in the app. "Plan tier".
- Key. How the field is addressed in imports, the API, and personalization. Suggested from the name, and permanent once saved.
- Description. Optional, and worth writing anyway: maxinja reads it when it builds segments and evaluated attributes.
The Attributes tab lists your system fields first (marked System, not editable) and your own fields underneath.
Pick the type that describes the value
Choosing the most specific type is how you keep data clean, because maxclicks validates every incoming value against it. A field typed as Email rejects "not an address" before it ever reaches a record.
| Type | Holds |
|---|---|
| Text | Any text. Can be multi-line, or restricted to a set of options shown as a dropdown or radio buttons. |
| An email address, checked and normalized. | |
| Phone | A phone number, checked and normalized. |
| URL | A link, marked as a web page, a file, or an image, with an option to show a preview. |
| Number | Optionally integer only, with a minimum, a maximum, or shown as a percentage. |
| Decimal | Precise numbers with an optional currency. Use this for money. |
| Checkbox | True or false. |
| Timestamp | A date and a time. |
| Date | A calendar date, no time. |
| Time | A time of day, no date. |
| Multi-select | A list of values, optionally from fixed options, shown as checkboxes or a dropdown. |
| Address | A postal address. |
| Geolocation | A coordinate pair. |
| JSON | A structure you describe yourself, for anything the other types do not cover. |
| Evaluated attribute | Generated logic supplies an on-demand answer or scheduled event-history measure. Review its timing. |
Decide what happens when the value is missing
The form asks When a record is created without a value. Choose one policy:
- Leave it empty for an optional fact you may not know.
- Use a default value for a genuine fixed fallback.
- Require it when a missing value should reject the new record.
- AI autofill to Infer from the record or Follow a prompt.
The policy applies to creation, not an existing record's updates. It does not backfill older records, regenerate an omitted field on an update, or overwrite a value you supply. An explicit empty value still has to satisfy the field's allowed emptiness.
For example, a fixed sourceCampaign default can label new newsletter signups. Reimporting an existing subscriber with that column blank will not apply the default again. AI autofill is paid work for each new record and missing AI field that needs it; test it on a small sample before a large import.
Fields maxclicks works out for you
Choose Evaluated attribute under How is the value set? and the form changes: instead of configuring a value, you write a prompt describing what the field should compute.
Sum the amount of completed Orders whose customerId matches this
Customer's userId and whose purchasedAt is within the last 30 days.
Use EUR orders only. Return zero when there are no matching orders.
This example needs an Order object schema with those fields. It returns an on-demand total from order records. Decide separately what should happen when the customer has no usable identifier or the query fails; neither proves they spent zero.
Type @ in the prompt to reference this record's own fields. maxinja writes the logic, decides whether the answer is a value or a set of related records, and shows you a plain-language description of what it built. Read that description before you save: it is the part you are responsible for checking, and you can refine the prompt until it says what you meant.
The evaluated value is not stored. maxclicks computes it when requested, using the source records currently available to the workspace. Generating the definition spends credits once; working the value out afterwards is a database query, not an AI call.
Connecting records covers what these fields can reach and how to use them.
For a rolling measurement of event history, create an Evaluated attribute on the destination contact or object schema. Choose a destination contact or object schema, describe a count, sum or latest value over one source, and review the generated window and cadence. The default proposal uses 30 days and hourly updates. A preview does not publish the value; wait for Published value and check Data through.
A valid publication with no matching event history yields an empty value rather than zero. No complete publication or an expired enabled result blocks a new decision that requests it. That matters for an audience such as “customers with no observed purchases.” See scheduled evaluated attributes for source links, supported windows and publication states.
What you can change afterwards
Open an existing attribute to edit its name and description. The key stays fixed, but a stored field's value type and validation rules can be changed through setup review.
Choose an Existing records policy: preserve values, fill empty ones, map exact values, convert to the new format, or replace all values. Review the resulting values and saved consumers in Changes before applying a change that needs your decision. A renamed label does not update the key used by imports and templates. See attribute changes.
Before you delete a field
maxclicks refuses to delete an attribute that is still in use, and tells you which kind of thing is using it: another calculated attribute, a segment, a broadcast, a workflow step, a webhook, an email template, or a form. Clear those uses first.
Deleting a field that nothing depends on still means the values in it are gone from every record.
For a populated schema, follow Setup changes to inspect converted values, affected campaigns and application status.
Next
See how base and custom fields come together in one record in understanding records, or open the attributes reference for every type and its settings.