> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mailofly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Properties

> Store custom attributes and metadata on contacts for personalization and segmentation.

# Properties

Custom properties let you store arbitrary metadata on contacts to enable rich personalization in templates and powerful filtering in segments.

***

## Supported Property Types

* **String**: `plan: "enterprise"`, `job_title: "CTO"`
* **Number**: `logins_count: 42`, `mrr: 1500`
* **Boolean**: `is_beta_tester: true`, `onboarding_completed: false`
* **Date (ISO-8601 string)**: `trial_expires_at: "2026-10-01T00:00:00Z"`

***

## Updating Properties via API

You can update a contact's properties using `PATCH /api/contacts/:id`:

```typescript theme={null}
await mailofly.contacts.update("cnt_01J8G52XYZ", {
  properties: {
    plan: "enterprise",
    upgraded_at: new Date().toISOString(),
  },
});
```

***

## Using Properties in Templates

Any custom property attached to a contact can be referenced directly in templates using standard merge tag syntax:

```html theme={null}
<p>Your current plan: <strong>{{plan | Free}}</strong></p>
<p>Company: {{company}}</p>
```


## Related topics

- [Segments](/audience/segments.md)
- [Create Contact](/api/contacts/create-contact.md)
- [Attachments](/sending/attachments.md)
- [Template Variables](/templates/template-variables.md)
- [Introduction](/audience/introduction.md)
