# Incentivize users to provide profile information

> Customer profiles contain valuable zero-party data that can be used to personalize the brand experience for customers. This tutorial shows how to use achievements to incentivize new and existing customers to share optional profile information.

> For the complete documentation index, see [llms.txt](https://docs.talon.one/llms.txt).

We will set up a one-time achievement that awards customers 100 loyalty points
for providing optional profile details, such as their date of birth and phone
number.

## Set up the achievement and rules

<StepsContainer>

### Prepare your environment

1. Create a
   [standard campaign](/docs/product/campaigns/overview#standard-campaigns)
   named `Profile Details Bonus` with the **Achievements** and **Loyalty**
   features enabled. We will define the rules for this campaign later in this
   tutorial.
1. Create a
   [profile-based](/docs/product/loyalty-programs/profile-based/create-pb-programs.md)
   loyalty program named `Coffee Club` and connect it to your Application.
1. Create
   [custom attributes](/docs/product/account/dev-tools/manage-attributes.md#create-a-custom-attribute)
   named <Attribute name="Date of birth" type="custom" /> and <Attribute
   name="Phone number" type="custom" /> with **Customer Profile** as the
   associated entity for both. Ensure to connect each attribute to the
   Application that contains the Profile Details Bonus campaign.

### Create the achievement

Create a
[one-time user-action achievement](/docs/product/achievements/create-achievements.md)
named `Enter Profile Details`:

- Set the **Target** to `1`. The customer's progress gets updated to `1` as soon
  as they provide the optional profile details.
- Select the **End progress on achieving target** option.
- Set any achievement period. In this example, the achievement period does not
  matter because the achievement target is `1`, meaning the achievement is
  completed when the user makes their first progress.

To complete the achievement, the customer must provide their date of birth and
phone number. Let's set up a rule to track this.

### Create a rule to update customer progress

Let's
[create a rule](/docs/product/rules/create-and-manage-rules.md#create-a-rule) in
the campaign to update a customer's progress when they provide optional profile
details. We will name this rule `Update Achievement Progress`.

Customers receive points only after they provide their date of birth and phone
number. In this first rule, we check if the Rule Engine has triggered the
`Customer Profile Update` event and the <Attribute name="Date of birth"
type="custom" /> and <Attribute name="Phone number" type="custom" /> attributes
contain a value.

#### Rule 1: Conditions

When **all** of these are true:

- **Check customer progress in an achievement**:
  - Achievement `Enter Profile Details` `is not` `Completed`

- **Check for event types and custom event values**:
  - **Event type**: `Customer Profile Update`

- **Check if attribute exists**:
  - <Attribute name="Date of birth (Customer Profile)" type="custom" /> `exists`

- **Check if attribute exists**:
  - <Attribute name="Phone number (Customer Profile)" type="custom" /> `exists`

#### Rule 1: Effects

- **Update customer progress**:
  - **Achievement name**: `Enter Profile Details`
  - **Update progress by**: `1`

:::note
The rule only checks whether the <Attribute name="Date of birth" type="custom"
/> and <Attribute name="Phone number" type="custom" /> attributes contain a
value. You can add validation checks for these attributes in your
implementation.
:::

### Create a rule to award loyalty points

Let's create a second rule that checks if the achievement has been completed and
immediately awards the customer with 100 loyalty points. We can name the rule
`Profile Details Award`.

#### Rule 2: Conditions

- **Has completed an achievement**:
  - **Achievement name**: `Enter Profile Details`

#### Rule 2: Effects

- **Add loyalty points**:
  - **Loyalty program**: `Coffee Club`
  - **Recipient**: `Current Customer`
  - **Reason**: `Optional profile details provided`
  - **Amount of points**: `100`

</StepsContainer>

## Related pages

- [Achievements](/docs/product/achievements/overview.md)
- [Create achievements](/docs/product/achievements/create-achievements.md)
