Contact Us

May 4, 2026

May 8, 2026 1:45 am

Sync Data Warehouse to Salesforce Marketing Cloud 2026: SFTP vs API — The Honest Decision Guide

Share with

Salesforce Partner & ISV Insights by Genetrix Technology
Marketing Cloud · CRM Integration

Person Accounts in Salesforce Marketing Cloud Synchronized DEs 2026: Contact Counting, Keys, and Sendable DE Setup Done Right

GT

Team Genetrix


April 2, 2026

7 min read

Person Accounts confuse nearly every SFMC implementation team that encounters them. The questions are always the same: if we sync both the Account and Contact objects, are we counting the same person twice against our contact credits? What should the SubscriberKey be — the Account ID or the PersonContactId? Can we even query the Account synced DE for a send?

The answers are not obvious from the SFMC documentation and the consequences of getting them wrong are real — inflated contact counts that affect billing, or sendable DEs that create ghost duplicates in All Contacts. This guide maps out the data model clearly and gives you the correct patterns for querying, joining, and building sendable DEs from Person Account synced data.

What Person Accounts Actually Are in Salesforce CRM

A Person Account in Salesforce CRM is a merged object. It combines the Account and Contact objects into a single record that represents an individual person rather than a business. Under the hood, when a Person Account is created in CRM, Salesforce automatically creates both an Account record and a hidden Contact record. The Account record holds the person’s name and account-level fields. The hidden Contact record holds the person’s contact details and, critically, has its own 18-digit Contact ID — this field is called PersonContactId on the Account object.

This is the field that matters in SFMC. When MC Connect syncs Person Accounts, it recognises the PersonContactId as the unique identifier for the person, not the Account ID.

Person Account Data Model — Salesforce CRM to SFMC Synchronized DEs

Person Account Record
Id

001XXXXXXXXXXXX (Account ID)
PersonContactId

003XXXXXXXXXXXX (Contact ID)
USE THIS
Name

Full name
PersonEmail

Email address
Id (Account)

001XXXXXXXXXXXX
AVOID AS KEY

MC Connect syncs both

Contact_Salesforce (Synced DE)
Id

003XXXXXXXXXXXX (PersonContactId)
SUBSCRIBER KEY
Email, FirstName, LastName…

Sendable DE — SubscriberKey Mapping Rules

Correct — no duplicate contact
SubscriberKey = PersonContactId (003XX…)
SFMC recognises the PersonContactId as already representing a contact via the Contact_Salesforce synced DE. No new contact is created. One person = one contact credit.

Wrong — creates ghost duplicate
SubscriberKey = AccountId (001XX…)
SFMC has no prior record of the Account ID as a Contact Key. A new, separate contact is created in All Contacts. The same person now exists twice — one via PersonContactId, one via AccountId.

Does Syncing Both Account and Contact DEs Double-Count Contacts?

This is the question that causes the most anxiety. The answer is no — syncing both does not double-count, because MC Connect is smart enough to recognise that the Contact record linked to a Person Account is the same person. The Contact synced DE uses the 003 Contact ID. The Account synced DE also contains the PersonContactId field which is the same 003 ID. SFMC sees one unique Contact Key and counts one contact regardless of how many synced DEs that person appears in.

Contact Credit Counting — Scenarios

Sync both Account and Contact DEs
Both the Account_Salesforce and Contact_Salesforce DEs are synced. PersonContactId (003XX) is the shared identifier. SFMC recognises one unique Contact Key across both DEs.
Contact credits consumed: 1 per person

Use AccountId as SubscriberKey in sendable DE
A sendable DE uses AccountId (001XX) as the SubscriberKey. SFMC creates a new contact with this unknown key. The person now exists twice in All Contacts. Billing reflects two contacts.
Contact credits consumed: 2 per person — billing impact

Building a Sendable DE for Campaigns Using Person Account Data

Synced DEs are not sendable directly. You cannot use them as a Journey entry source or send to them from Email Studio. You need to copy the data you need into a standard sendable DE using a SQL query in Automation Studio.

For Person Accounts, the Account DE is often the better starting point because it contains all the account-level fields you might need for personalisation — industry, custom fields, relationship data. But the send relationship in the output DE must be linked to PersonContactId, not the Account ID. The SQL below shows the correct join and field mapping:

Automation Studio SQL — Build sendable DE from Person Account synced data

/* Builds a sendable DE from Person Account data.
   Uses PersonContactId (003XX) as SubscriberKey — NOT the Account ID.
   Joins Account and Contact synced DEs to combine account-level and
   contact-level fields in one row.
   
   Target DE send relationship: SubscriberKey → Subscriber Key (Email Studio) */

SELECT

    /* This is the critical field — must be PersonContactId, not a.Id */
    a.PersonContactId              AS SubscriberKey,

    a.PersonEmail                  AS EmailAddress,
    a.Name                         AS FullName,
    c.FirstName,
    c.LastName,

    /* Account-level fields available in Account DE */
    a.Industry,
    a.BillingCity,
    a.AccountSource,

    /* Custom fields synced to Account DE */
    a.Tier__c                      AS CustomerTier,
    a.LastPurchaseDate__c          AS LastPurchaseDate

FROM   Account_Salesforce  a
JOIN   Contact_Salesforce  c
    ON  a.PersonContactId = c.Id    /* Join on PersonContactId = Contact.Id */

WHERE
    a.IsPersonAccount = true         /* Person Accounts only */
    AND a.PersonEmail IS NOT NULL   /* Ensure deliverable email exists */
Set the send relationship on the output DE to SubscriberKey, not Email Address. When creating the output sendable DE, map the send relationship to the SubscriberKey field, which holds the PersonContactId value. If you map the send relationship to Email Address instead, SFMC will use the email as the Contact Key — creating yet another duplicate contact for any person who was previously synced via MC Connect with their 003 ID.

Joining Account and Contact DEs for Query-Based Segmentation

For segmentation queries that do not need to produce a sendable DE — reporting, filtering, or joining to other objects — you can query either the Account DE or the Contact DE. When you need fields from both, join them on PersonContactId = Contact.Id as shown above. This join is always one-to-one for Person Accounts — each Account has exactly one PersonContactId.

If your segmentation query will ultimately produce a sendable DE, always output the PersonContactId as the SubscriberKey column regardless of which DE you start from. This is the only safe pattern.

Person Account Setup Checklist

  • Sync both the Account and Contact objects via MC Connect. Syncing both does not double-count contacts. The shared PersonContactId is what prevents duplication.
  • Never use the Account Id (001XX) as a SubscriberKey or send relationship field. This creates a ghost duplicate contact in All Contacts and inflates billing.
  • In all sendable DEs built from Person Account data, map the SubscriberKey column to PersonContactId from the Account DE, or to Id from the Contact DE — they are the same value.
  • Set the sendable DE send relationship to SubscriberKey, not Email Address.
  • Use WHERE IsPersonAccount = true in your SQL to filter out any standard Account records that may also be present in the Account synced DE.
  • After the first send to a Person Account segment, check the All Contacts count. It should not have increased by more than the number of new people you sent to.
  • For segmentation needing fields from both Account and Contact DEs, join on a.PersonContactId = c.Id. This join is always one-to-one for Person Accounts.

Frequently Asked Questions

What if our Person Account DE does not have the PersonContactId field visible?

The PersonContactId field must be explicitly selected when configuring the Account object sync in Contact Builder under Data Sources. If it is not in your Account synced DE, go to the Account sync configuration, add PersonContactId to the selected fields, and wait for the next sync cycle to populate it. This is often missed during initial setup because the field is not in the default field selection.

We already have a sendable DE using AccountId as the SubscriberKey. How do we fix the duplicates?

This requires a subscriber key migration. The process involves identifying contacts in All Contacts that have the Account ID format (001XX) as their Contact Key, updating the sendable DE to use PersonContactId instead, and then deleting the duplicate subscriber records via the REST API. This is a significant remediation effort — the earlier you catch it, the smaller the scope. If you have existing email tracking history against the Account ID keys, that history will remain associated with the old key after migration.

Can I use the Account synced DE as a Journey entry source directly?

No. Synced DEs are not sendable and cannot be used as Journey entry sources directly. You must copy the data you need into a standard sendable DE via SQL in Automation Studio first. The synced DEs are read-only reference data sources — the Journey entry DE you build from them is where you define the SubscriberKey send relationship.

How does this work if we have a mix of Person Accounts and standard Business Accounts in the same sync?

Standard Business Accounts (non-Person Accounts) do not have a PersonContactId — that field will be null for them. In your segmentation SQL, add WHERE IsPersonAccount = true to filter to Person Accounts only. For standard Business Account records, your segmentation should work through the Contact DE linked to that Account, not the Account DE itself. Mixing both in the same sendable DE without the IsPersonAccount filter will cause errors or null SubscriberKey rows.

Genetrix Technology · Salesforce Marketing Cloud Partner

Navigating Person Accounts in a Complex SFMC Setup?

Person Account configurations in SFMC touch contact counting, subscriber keys, segmentation architecture, and send relationships all at once. Genetrix helps teams untangle these setups and build patterns that scale cleanly without inflating contact counts.

Talk to Genetrix →

Blogs for the

Business-Savvy!​

Let’s Connect

A 30 min no cost strategy session
with cloud support expert

Let’s Connect

A 30 min no cost strategy session
with cloud support expert