---
title: "Using Person Accounts with StoreConnect"
source: https://support.storeconnect.com/articles/person-accounts
type: article
format: markdown
site: StoreConnect Support — product and developer documentation for StoreConnect
site_index: https://storeconnect.com/llms.txt
docs_index: https://support.storeconnect.com/llms.txt
note: Append .md to any page or article URL on this site to get its Markdown form.
---
# Using Person Accounts with StoreConnect

Use this topic to configure StoreConnect for a Salesforce org that has Person Accounts enabled. Person Accounts is a Salesforce feature that merges the **Account** and **Contact** objects into a single record representing an individual person rather than a business. StoreConnect works with Person Account orgs, but the setup steps below have to be completed before customers start registering or ordering.

## Before you begin

- Your Salesforce admin needs to complete this configuration. It involves profile record types, Flows, and duplicate rules.
- The StoreConnect sync user must already exist. See [set up a StoreConnect sync user](how-to-create-a-storeconnect-sync-user).
- Have your Person Account record type ID and the sync user's ID and alias to hand. Each is referenced by the configuration below.

## How StoreConnect creates records in a Person Account org

StoreConnect does not create Person Account records directly. When a customer registers or places an order, it creates records in this fixed sequence:

1. Creates the **Contact**.
2. Creates a standard business **Account**. A Person Account record type cannot be assigned at this point, because Salesforce requires a linked **Contact** first.
3. Links the **Contact** to the **Account**.
4. A Flow you create converts the **Account** to a Person Account.

Steps 1 to 3 happen automatically. Step 4 only works if your org is configured in advance.

Because the **Contact** does not exist on the **Account** at step 2, Salesforce cannot apply a Person Account record type during insert, regardless of any before-insert flow or profile record type configuration. The conversion has to happen after step 3, once the **Contact** relationship is established.

Four configuration tasks are required:

| Step | Task                            | Purpose                                                                                     |
| ---- | ------------------------------- | ------------------------------------------------------------------------------------------- |
| 1    | Configure the sync user profile | Grants the sync user access to the Person Account record type                               |
| 2    | Create an after-update flow     | Triggers the conversion once the Contact to Account link is established                     |
| 3    | Order other flows correctly     | Prevents errors from flows that reference Person Account fields before the conversion fires |
| 4    | Add duplicate rule exclusions   | Prevents the sync user from being blocked when creating records that match existing ones    |

Complete them in order. Task 2 depends on the record type access granted in task 1.

## Setup requirements

### 1. Configure the sync user profile

StoreConnect uses a dedicated Salesforce sync user to create and update records. For Person Accounts to work, that user's profile must have the Person Account record type available on the **Account** object.

If your sync user is on Salesforce's standard **Minimum Access - Salesforce Integration** profile (or a similar API-only profile), the **Account** object's record type settings are not editable through the standard profile interface. The **Enhanced Profile User Interface** setting controls access to that page and is locked on these profile types by default. Clone the profile first if you need to edit it.

For instructions on configuring record types for the sync user, see [set up a StoreConnect sync user](how-to-create-a-storeconnect-sync-user).

### 2. Create an after-update flow to convert the account to a Person Account

Because StoreConnect creates a business **Account** first, you need a Salesforce Flow to convert it to a Person Account once the **Contact** is linked.

Configure the flow as follows:

- **Object** — **Account**
- **Trigger** — record-triggered flow, after update (not before insert)
- **Entry condition** — detect when the **Contact** has just been linked by the StoreConnect sync user. For example, `PersonContactId` changed from null to a value, and `$User.Id` equals the sync user ID.
- **Action** — update the **Account** record's `RecordTypeId` to your Person Account record type ID

:::note
The after-update flow is required because Salesforce cannot apply the Person Account record type during an API insert; it must be set explicitly once the **Contact** is linked.
:::

To confirm the flow works, place a test order on your store as a new customer, then check that the resulting **Account** record has the Person Account record type.

### 3. Order other flows correctly

If your org has additional flows that act on Person Accounts (for example, welcome emails, entitlement assignment, or field updates), they must fire after the conversion flow completes. Flows that reference Person Account behavior and fire before the record type has been updated fail with `INVALID_PERSON_ACCOUNT_OPERATION` errors.

1. Go to **Setup** > **Flows**.
2. Find any record-triggered flows on **Account** that reference Person Account fields or record types.
3. Adjust their entry conditions or execution order so they run after the conversion flow.

### 4. Handle duplicate rules

If your org has Salesforce duplicate rules on **Account** or **Contact** set to **Block**, the sync user hits `DUPLICATES_DETECTED` sync errors when StoreConnect tries to create a record that matches an existing one.

:::warning
Do not disable duplicate rules entirely. Add an exclusion for the sync user instead, so duplicate enforcement stays in place for everyone else.
:::

1. Go to **Setup** > **Duplicate Rules**.
2. Open each duplicate rule on **Account** and **Contact**.
3. Add a condition of **Current User: Alias** equals the sync user's alias, and set the action to **Allow**.
4. Save the rule.
5. Confirm the exclusion works: place a test order using an email address that already exists in your org, and check the order syncs without a `DUPLICATES_DETECTED` error.

For more on managing duplicate records, see [automated lead conversion to avoid duplication](lead-contact-and-account-deduplication).

## How StoreConnect matches existing Person Account records

When a customer registers or checks out on a StoreConnect storefront, StoreConnect attempts to match them to an existing Person Account record by first and last name combined with either email or phone. If a match is found, it links the new login to the existing Person Account record rather than creating a new one.

## Multi-business-unit orgs with Person Accounts

If your Salesforce org uses both Person Accounts and multiple business account structures (for example, separate accounts per division, region, or entity), there are additional considerations for how StoreConnect creates and matches records.

### The matching risk

StoreConnect's account-matching logic uses name, email, address, and phone to find an existing account. In an org with many accounts across different business units, a customer checking out could potentially be matched to an account in a different business unit if the matching fields overlap.

This is most likely to occur during guest checkout for customers who have existing records in your org but have not yet been assigned a StoreConnect ID.

### Mitigations

#### Record type defaults on the sync user profile

Any **Account** or **Contact** created through StoreConnect uses the record type set as the default on the sync user's profile for that object. If your org has multiple **Account** record types for different business units, set the sync user's default to the record type appropriate for website-created records. See [set up a StoreConnect sync user](how-to-create-a-storeconnect-sync-user).

#### Scoping existing records with per-record sync opt-in

If only a subset of your **Account** and **Contact** records should take part in StoreConnect matching and checkout, use [per-record sync opt-in](per-record-sync-opt-in) to mark those records explicitly. Records without opt-in are not matched during checkout, even if their email or name appears to match.

#### Disabling automatic account linking

If your org's account structure makes automatic matching unreliable, you can turn it off using the **Enable Company Name** store variable. When active, StoreConnect skips account matching for guest checkouts and always creates a new **Account**. Logged-in customers are still linked to their existing **Account**. Contact StoreConnect support or your implementation partner to configure this.

#### Duplicate rule exclusions

If your org has Salesforce duplicate rules set to **Block** on **Account** or **Contact**, add a sync user exclusion as described in [setup requirements](#setup-requirements) above. This prevents `DUPLICATES_DETECTED` errors without disabling your rules for all users.

### Flow conditions for multi-business-unit conversion

If you use an after-update flow to convert accounts to Person Accounts (see [create an after-update flow](#2-create-an-after-update-flow-to-convert-the-account-to-a-person-account)), scope the entry condition to records that belong to the correct business unit, for example by checking the **Account** record's record type or a custom field that identifies the business unit. Without scoping, the flow fires on every **Account** the sync user creates, including business accounts for other divisions.

## Account credits with Person Accounts

Account credits work with Person Accounts without any additional configuration. Behind every Person Account is both an **Account** and a **Contact** record, and StoreConnect's credit logic resolves through that chain to the Person Account's underlying **Account** record.

Key points:

- Account credits are per person, not shared across a household.
- Create `Account_Credit__c` records against the Person Account's **Account**, not a parent household account.
- Set `Can_Use_Account_Credit__c` to `true` on the Person Account's **Contact** side.
- Set `Pay_By_Account__c` to `true` on the Person Account's **Account** if you use pay by account.

Household-level shared credits are not supported. There is no setting for them. Sharing credits across household members requires custom logic and carries concurrency risk.

See [account credit](account-credit) and [pay on account at checkout](pay-by-account) for general configuration.

## Custom data mapping with Person Accounts

When Person Accounts is enabled, Salesforce automatically creates `__pc` suffix fields on the **Account** object that mirror **Contact** fields (for example, `PersonEmail`). These fields stay in sync with the underlying **Contact** automatically.

Map your StoreConnect custom data mappings against the **Account** object using the `__pc` fields, not the **Contact** object or its `__c` fields. This matters most for read/write mappings, where StoreConnect needs to write data back to Salesforce. For read-only mappings the distinction is less critical, but using `__pc` on **Account** is still the consistent approach.

:::warning
Do not remap native StoreConnect fields; this causes them to sync as null. Use custom data mappings only for fields StoreConnect does not already handle natively.
:::

See [add custom data fields to your store](liquid-custom-data-fields) for mapping instructions.

## Log in as a customer

The log in as a customer feature lets Salesforce users browse the storefront as a specific customer. Before testing it in a Person Account org, confirm the sync user's profile has the Person Account record type available. See [set up a StoreConnect sync user](how-to-create-a-storeconnect-sync-user) for profile configuration details.

## Setup checklist

| Step | Who | Notes |
| --- | --- | --- |
| Add Person Account as an available record type on the sync user's profile | Salesforce admin | On a standard API-only profile, clone the profile first. These profiles do not support editing record types through the standard profile interface. |
| Create the after-update flow to convert **Account** to Person Account | Salesforce admin | Must fire after the **Contact** is linked to the **Account**, not on insert |
| Order other Person Account flows to fire after the conversion flow | Salesforce admin | Prevents `INVALID_PERSON_ACCOUNT_OPERATION` errors |
| Add the sync user exclusion to duplicate rules | Salesforce admin | Prevents `DUPLICATES_DETECTED` sync errors |
| Validate that existing customer email addresses align | Implementation | Ensures existing Person Accounts match on customer registration |

## Verify the configuration

Once all four tasks are complete, place a test order on your store as a new customer, then confirm:

- A Person Account record was created, not a separate business **Account** and **Contact** pair.
- The **Account** record has your Person Account record type.
- No `INVALID_PERSON_ACCOUNT_OPERATION` or `DUPLICATES_DETECTED` errors appear in the StoreConnect sync errors.

Then repeat the test using an email address that already exists in your org, and confirm the order links to the existing Person Account rather than creating a new one.

---

## Follow StoreConnect

- [Email Newsletter](https://storeconnect.com/c/lp-newsletter)
- [LinkedIn Newsletter](https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7444956928444862464)
- [YouTube](https://www.youtube.com/channel/UCngKdP2x8l1wcbAKW3tvU8g)
- [LinkedIn](https://www.linkedin.com/company/storeconnect)
- [X / Twitter](https://x.com/storeconnecthq)

## Popular Links

- [Partners](https://storeconnect.com/partners)
- [Become a Partner](https://storeconnect.com/become-a-partner)
- [News](https://storeconnect.com/articles/news)
- [Events](https://storeconnect.com/articles/events)
- [Live Events](https://storeconnect.com/live-events)
- [Feature Comparison](https://storeconnect.com/how-we-compare)
- [Download a free trial](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000FMkeKUAT)
- [Book a Demo](https://storeconnect.com/contact)

## Documentation

- [Help documentation](https://support.storeconnect.com/help-documentation)
- [AI agents](https://support.storeconnect.com/ai)
- [Videos & tutorials](https://support.storeconnect.com/videos-tutorials)
- [Developer reference](https://support.storeconnect.com/developer-reference)
- [Release notes](https://support.storeconnect.com/release-notes)
- [Troubleshooting](https://support.storeconnect.com/troubleshooting)
- [Trust Center](https://trust.getstoreconnect.com/)
- [Status Page](https://status.storeconnect.com/)

## Contact

- info@getstoreconnect.com
- US +1 415 745 3230
- AUS +61 2 8365 2308

100 S Ashley Dr, Suite 600-2461
Tampa FL 33602-600 USA

Level 22, Sydney Place
180 George Street
Sydney, NSW, 2000, AUS

## Machine-readable

- [Site index for agents](https://storeconnect.com/llms.txt): curated map of the StoreConnect site in llms.txt format
- [Documentation index for agents](https://support.storeconnect.com/llms.txt): full technical and product documentation map

Every page and article on this site has a Markdown rendering: append `.md` to its URL.

Continue in Markdown: [Help documentation](https://support.storeconnect.com/help-documentation.md) · [Developer reference](https://support.storeconnect.com/developer-reference.md) · [Videos & tutorials](https://support.storeconnect.com/videos-tutorials.md) · [Release notes](https://support.storeconnect.com/release-notes.md)

---

StoreConnect Support — https://support.storeconnect.com/articles/person-accounts