# Customer profile entity

> A customer profile is Talon.One's internal representation of your customer.

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

A profile combines data supplied by your Application's [attributes](/docs/dev/concepts/attributes.md) with profile data
created and updated by campaign rules, loyalty scores, lifetime expenditure etc.

Like any entity, customer profiles can be extended with [custom attributes](/docs/dev/concepts/attributes.md#custom-attributes) to suit
your particular domain. Custom attributes are often used to represent
internal counters, such as the number of support tickets a particular customer has opened.

Keep in mind the following information about customer profiles:

- Customer profiles are shared between [**all Applications from the same environment**](/docs/product/applications/overview.md#application-environments).
- You set the ID of each profile. Profiles are created with the [Update customer session](/integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2) or [Update customer profile](/integration-api#tag/Customer-profiles/operation/updateCustomerProfileV2) endpoint.
- The **Has joined an audience** and **Has left an audience** [conditions](/docs/product/rules/conditions/available-conditions.md#audience-conditions) only trigger effects when you update the profile through the [Update customer profile][cp] endpoint.

Profile IDs are sent as URL path parameters and must follow URL encoding rules:

- Allowed without encoding: Letters (A–Z, a–z), digits (0–9), hyphens (`-`), underscores (`_`), periods (`.`), and tildes (`~`).
- Not allowed: Forward slashes (`/`). They break URL paths and cause request failures.
- Other special characters: Must be [URL-encoded](https://www.w3schools.com/tags/ref_urlencode.asp) before sending.

As a result, we recommend the following best practices:

- When using multiple Applications from the same environment (for example, _live_), we recommend
  that you add a per-Application prefix to each customer ID. That way, you can always tell
  which Application created the profile.
- Choose an un-mutable ID. For example, an email address doesn't make a good profile ID because
  a customer might change their registered email.

## Create customer profiles

Customer profiles are created automatically, sometimes implicitly, via
the following API endpoints:

- [Update customer session][cs]
- [Update customer profile][cp]
- [Track event](/integration-api#tag/Events/operation/trackEventV2)

## Related pages

- [Use attributes](/docs/product/applications/use-attributes.md)
- [Display customer profiles](/docs/product/applications/display-customer-profiles.md)
- [Customer profiles endpoints](/integration-api#tag/Customer-profiles)

[cs]: /integration-api#tag/Customer-sessions/operation/updateCustomerSessionV2
[cp]: /integration-api#tag/Customer-profiles/operation/updateCustomerProfileV2
