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

# Set User Custom Property

> Update user properties based on workflow events and context

<iframe src="https://app.flywheel.cx/doc-comp-previews/workflow-node-preview?type=set_org_user_custom_property" title="Workflow Node Preview" width="100%" height="250px" className="border dark:border-[#1C1C20]  rounded-xl" />

## How Set User Custom Property Works

Update user properties based on workflow events and context. This action allows you to dynamically update user attributes as they progress through your workflows, enabling better personalization and tracking.

## Configuration

<Columns cols={2}>
  <Card title="Inputs">
    <ParamField path="User ID" type="string" required>
      The ID of the user whose custom property will be updated. Typically references the workflow's target user.
    </ParamField>

    <ParamField path="Custom Property ID" type="string" required>
      The identifier of the custom property to update. This should match a property defined in your user schema.
    </ParamField>

    <ParamField path="Value" type="mixed" required>
      The new value to set for the custom property. Can be a string, number, boolean, or object depending on the property type.
    </ParamField>
  </Card>

  <Card>
    <iframe src="https://app.flywheel.cx/doc-comp-previews/workflow-config-preview?type=set_org_user_custom_property" title="Workflow Config Preview" width="100%" height="400px" className="" />
  </Card>
</Columns>

<Card title="Outputs">
  <ParamField path="success" type="boolean" required>
    Whether the custom property was set successfully. Returns `true` on successful update, `false` if the operation failed.
  </ParamField>
</Card>

## Use Cases

**Engagement Scoring**

```
Property: engagement_score
Value: Calculated based on recent activity level
Use: Track user engagement for targeted campaigns
```

**Journey Stage Tracking**

```
Property: onboarding_stage
Value: "email_verified" or "profile_completed"
Use: Customize content based on completion progress
```

**Feature Usage Tracking**

```
Property: features_used
Value: Array of feature names user has accessed
Use: Personalize recommendations based on usage patterns
```

**Preference Management**

```
Property: communication_preference
Value: "email" or "slack" or "both"
Use: Respect user communication preferences in future workflows
```

## Best Practices

**Property Naming**

* Use consistent naming conventions for custom properties
* Choose descriptive names that clearly indicate the property's purpose
* Avoid special characters that might cause issues

**Value Management**

* Validate values before setting to ensure data integrity
* Consider the data type of the custom property
* Plan for value updates and versioning

**Performance Considerations**

* Batch property updates when possible
* Monitor the frequency of property updates
* Consider the impact on downstream systems that consume this data
