How to merge duplicate profiles in Omneo, the Winner/Loser pattern.
If you find two or more profiles in Omneo that belong to the same person, merge them into one. Omneo recommends initiating merges from Omneo (rather than external systems) to ensure downstream integrations are handled correctly.
The Winner keeps the earlier of the two profiles’ joined_at values. A merge never moves the join date later or clears it, since it drives tenure calculations and JoinDate and JoinAnniversary Reactions. See core fields for the same rule that applies on profile updates.
Merging is irreversible. The Loser profile is deleted. If a profile is actively being used by a customer for legitimate purposes, do not merge it unless explicitly requested by the customer.
Check that:
Both profiles clearly belong to the same person
You have identified the correct Winner (the one with the valid email)
External systems are aware of the merge if they store profile IDs
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Omneo API","colors":{"primary":"#FF6161","light":"#FF6161","dark":"#E04444"},"logo":{"light":"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/logo/light.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=c68e59d64ae77bf2ac88c191b875b014","dark":"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/logo/dark.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=800651cbcf5d77a7b130ae6928a7c590"},"favicon":"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/favicon.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=7ccd4454f7329addccfd399fcdff7d7c","navbar":{"links":[{"href":"mailto:support@omneo.io","label":"Support"}],"primary":{"type":"button","label":"Get started","href":"https://docs.omneo.io/getting-started/what-is-omneo"}},"footer":{"socials":{"github":"https://github.com/omneo","linkedin":"https://linkedin.com/company/omneocx"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://omneo.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"omneo","hasAudioNarration":false,"actualSubdomain":"omneo","customDomains":["docs.omneo.io"],"gitSource":{"type":"github","owner":"omneo","repo":"omneo-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae284fb869b557826a233be","collectionId":"85873b5f-85c2-4c0f-90dd-c9745b35de39","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae284fb869b557826a233be"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae284fb869b557826a233be","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":690},{"language":"default","tag":"Commerce","count":167},{"language":"default","tag":"Incentives","count":142},{"language":"default","tag":"Profiles","count":100},{"language":"default","tag":"Extensions","count":82},{"language":"default","tag":"Developers","count":78},{"language":"default","tag":"Configuration","count":73},{"language":"default","tag":"Concepts","count":62},{"language":"default","tag":"Reactions","count":54},{"language":"default","tag":"Platform","count":47}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@omneo.io"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"dev-guides/profiles/merging-profiles","slug":"/dev-guides/profiles/merging-profiles","pageMetadata":{"title":"Merging Profiles","description":"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.","href":"/dev-guides/profiles/merging-profiles"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`If you find two or more profiles in Omneo that belong to the same person, merge them into one. Omneo recommends initiating merges from Omneo (rather than external systems) to ensure downstream integrations are handled correctly.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-winner/loser-pattern`,children:`The Winner/Loser pattern`}),`\n`,_jsx(_components.p,{children:`Think of merging in terms of two profiles:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Winner`}),`: the profile that survives after the merge and receives all consolidated data`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Loser`}),`: the profile that is deleted after its data is moved to the Winner`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`As a general rule: the profile with the `,_jsx(_components.strong,{children:`correct email address`}),` should be the Winner.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-gets-merged`,children:`What gets merged`}),`\n`,_jsx(_components.p,{children:`When you merge, the Loser’s data is transferred to the Winner:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Transactions`}),`\n`,_jsx(_components.li,{children:`Identities`}),`\n`,_jsx(_components.li,{children:`Rewards, benefits, points, and tier progress`}),`\n`,_jsx(_components.li,{children:`Profile attributes (comms, appearance, custom)`}),`\n`,_jsx(_components.li,{children:`Addresses`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The Loser profile is deleted after the merge. You are taken to the Winner profile immediately on completion.`}),`\n`,_jsx(Heading,{level:`3`,id:`join-date`,children:`Join date`}),`\n`,_jsxs(_components.p,{children:[`The Winner keeps the earlier of the two profiles’ `,_jsx(_components.code,{children:`joined_at`}),` values. A merge never moves the join date later or clears it, since it drives tenure calculations and JoinDate and JoinAnniversary `,_jsx(_components.a,{href:`/concepts/automation/triggers`,children:`Reactions`}),`. See `,_jsx(_components.a,{href:`/concepts/profiles/core-fields`,children:`core fields`}),` for the same rule that applies on profile updates.`]}),`\n`,_jsx(Heading,{level:`2`,id:`merging-via-clienteling`,children:`Merging via Clienteling`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Navigate to the Loser profile in Clienteling`}),`\n`,_jsx(_components.li,{children:`Select the dropdown arrow on the profile`}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Merge Profile`})]}),`\n`,_jsx(_components.li,{children:`Search for the Winner profile by email`}),`\n`,_jsx(_components.li,{children:`Confirm the Winner: review what will be transferred`}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Merge`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`merging-via-api`,children:`Merging via API`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.[tenant].getomneo.com/api/v3/profiles/{winnerId}/merge`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"Authorization: Bearer ${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"loser_id\": \"{loserId}\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`merging-multiple-duplicates`,children:`Merging multiple duplicates`}),`\n`,_jsx(_components.p,{children:`If you have multiple duplicates to merge into one Winner:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Merge Loser 1 → Winner`}),`\n`,_jsx(_components.li,{children:`Verify the result`}),`\n`,_jsx(_components.li,{children:`Merge Loser 2 → Winner`}),`\n`,_jsx(_components.li,{children:`Continue until all duplicates are consolidated`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Do not merge all duplicates simultaneously, merge them sequentially into the one Winner.`}),`\n`,_jsx(Heading,{level:`2`,id:`high-volume-merges`,children:`High-volume merges`}),`\n`,_jsx(_components.p,{children:`For bulk merges (many duplicates), contact the Omneo support team to discuss a managed merge process that can handle the volume efficiently.`}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-merge`,children:`Before you merge`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Merging is irreversible. The Loser profile is deleted. If a profile is actively being used by a customer for legitimate purposes, do not merge it unless explicitly requested by the customer.`})}),`\n`,_jsx(_components.p,{children:`Check that:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Both profiles clearly belong to the same person`}),`\n`,_jsx(_components.li,{children:`You have identified the correct Winner (the one with the valid email)`}),`\n`,_jsx(_components.li,{children:`External systems are aware of the merge if they store profile IDs`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Merging Profiles","description":"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.","href":"/dev-guides/profiles/merging-profiles"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The Winner/Loser pattern","slug":"the-winner/loser-pattern","depth":2,"children":[]},{"title":"What gets merged","slug":"what-gets-merged","depth":2,"children":[{"title":"Join date","slug":"join-date","depth":3,"children":[]}]},{"title":"Merging via Clienteling","slug":"merging-via-clienteling","depth":2,"children":[]},{"title":"Merging via API","slug":"merging-via-api","depth":2,"children":[]},{"title":"Merging multiple duplicates","slug":"merging-multiple-duplicates","depth":2,"children":[]},{"title":"High-volume merges","slug":"high-volume-merges","depth":2,"children":[]},{"title":"Before you merge","slug":"before-you-merge","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"omneo","siteName":"Omneo API","title":"Merging Profiles - Omneo API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-21T02:14:34.738Z","originalFileLocation":"dev-guides/profiles/merging-profiles.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Omneo API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Merging Profiles - Omneo API\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Omneo API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.omneo.io/dev-guides/profiles/merging-profiles\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://omneo.mintlify.app/_mintlify/api/og/v2?division=Profiles+and+data\u0026amp;title=Merging+Profiles\u0026amp;description=How+to+merge+duplicate+profiles+in+Omneo%2C+the+Winner%2FLoser+pattern.\u0026amp;theme=a4af636e3b43b19a06e39d49\u0026amp;signature=87f3cf35c5f3dab4054c7d3af5f27f212ecaa68d6b27b7ace4717f455b684dd4\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Merging Profiles - Omneo API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://omneo.mintlify.app/_mintlify/api/og/v2?division=Profiles+and+data\u0026amp;title=Merging+Profiles\u0026amp;description=How+to+merge+duplicate+profiles+in+Omneo%2C+the+Winner%2FLoser+pattern.\u0026amp;theme=a4af636e3b43b19a06e39d49\u0026amp;signature=87f3cf35c5f3dab4054c7d3af5f27f212ecaa68d6b27b7ace4717f455b684dd4\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/omneo/svRkUa8yAUbXSnpa/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Omneo API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF6161\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.omneo.io/dev-guides/profiles/merging-profiles\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/dev-guides/profiles/merging-profiles.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.omneo.io/#organization\",\"name\":\"Omneo API\",\"url\":\"https://docs.omneo.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/omneo/fFdVHCWce-qgKJ08/logo/light.svg?fit=max\u0026auto=format\u0026n=fFdVHCWce-qgKJ08\u0026q=85\u0026s=c68e59d64ae77bf2ac88c191b875b014\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.omneo.io#website\",\"name\":\"Omneo API\",\"url\":\"https://docs.omneo.io\",\"publisher\":{\"@id\":\"https://docs.omneo.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles#webpage\",\"url\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles\",\"name\":\"Merging Profiles\",\"description\":\"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.\",\"dateModified\":\"2026-09-21T02:14:34.738Z\",\"isPartOf\":{\"@id\":\"https://docs.omneo.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Profiles and data\",\"item\":\"https://docs.omneo.io/dev-guides/profiles/working-with-profiles\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Merging Profiles\",\"item\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles#article\",\"headline\":\"Merging Profiles\",\"name\":\"Merging Profiles\",\"description\":\"How to merge duplicate profiles in Omneo, the Winner/Loser pattern.\",\"url\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles\",\"mainEntityOfPage\":{\"@id\":\"https://docs.omneo.io/dev-guides/profiles/merging-profiles#webpage\"},\"dateModified\":\"2026-09-21T02:14:34.738Z\",\"publisher\":{\"@id\":\"https://docs.omneo.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.omneo.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Omneo API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Omneo API","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://omneo.io"}]},"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":"/getting-started/what-is-omneo"}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts/glossary"}]},{"tab":"User Guides","pages":[{"title":"User Guides","href":"/business-guides/managing-your-instance/is-omneo-right"}]},{"tab":"Experiences","pages":[{"title":"Experiences","href":"/experiences/omneo-insights/overview"}]},{"tab":"Extensions","pages":[{"title":"Extensions","href":"/extensions/overview"}]},{"tab":"Developers","groups":[{"group":"Core setup","pages":[{"title":"Authentication","href":"/dev-guides/core-setup/authentication"},{"title":"API Tokens","href":"/dev-guides/core-setup/api-tokens"},{"title":"Postman","href":"/dev-guides/core-setup/postman"},{"title":"Omneo CLI","href":"/dev-guides/core-setup/cli"},{"title":"Omneo SDK","href":"/dev-guides/core-setup/sdk"},{"title":"Omneo MCP","href":"/dev-guides/core-setup/mcp"},{"title":"Global vs profile-scoped endpoints","href":"/dev-guides/core-setup/global-vs-profile-routes"},{"title":"Filtering, sorting, and search","href":"/dev-guides/core-setup/filtering-and-sorting"}]},{"group":"Profiles and data","pages":[{"title":"Working with Profiles","href":"/dev-guides/profiles/working-with-profiles"},{"title":"Working with Identities","description":"Adding, reading, and searching profile identities via the Omneo API.","href":"/dev-guides/profiles/working-with-identities"},{"title":"Merging Profiles","href":"/dev-guides/profiles/merging-profiles"},{"title":"Filtering Profiles","description":"Querying the profiles list endpoint with filters to find profiles matching specific criteria.","href":"/dev-guides/profiles/filtering-profiles"},{"title":"Working with Aggregations","href":"/dev-guides/profiles/working-with-aggregations"},{"title":"Working with Interactions","href":"/dev-guides/profiles/working-with-interactions"},{"title":"Tags","href":"/dev-guides/profiles/tags"},{"title":"Statuses","href":"/dev-guides/profiles/statuses"},{"title":"Profile Blacklist and Opt-Out","href":"/dev-guides/profiles/profile-blacklist"},{"title":"Addresses","href":"/dev-guides/profiles/addresses"},{"title":"Users and Permissions","href":"/dev-guides/profiles/users-and-permissions"}]},{"group":"Commerce","pages":[{"title":"Creating Transactions","href":"/dev-guides/commerce/creating-transactions"},{"title":"Working with Orders","href":"/dev-guides/commerce/working-with-orders"},{"title":"Working with Credits","href":"/dev-guides/commerce/working-with-credits"}]},{"group":"Incentives","pages":[{"title":"Working with Benefits","href":"/dev-guides/incentives/working-with-benefits"},{"title":"Claimable Benefits, eCommerce","href":"/dev-guides/incentives/claimable-benefits-ecommerce"},{"title":"Importing Rewards","href":"/dev-guides/incentives/importing-rewards"},{"title":"Creating a Reward Definition","href":"/dev-guides/incentives/creating-a-reward-definition"},{"title":"Creating a Benefit Definition","href":"/dev-guides/incentives/creating-a-benefit-definition"},{"title":"Requesting Benefits","href":"/dev-guides/incentives/requesting-benefits"},{"title":"Estimating Incentives","href":"/dev-guides/incentives/estimating-incentives"},{"title":"Using Rates","href":"/dev-guides/incentives/using-rates"}]},{"group":"Reactions","pages":[{"title":"Reactions Overview","href":"/dev-guides/reactions/overview"},{"title":"Reaction Actions","href":"/dev-guides/reactions/actions"},{"title":"Automation Queries","href":"/dev-guides/reactions/automation-queries"},{"title":"Reaction Filters","href":"/dev-guides/reactions/filters"},{"title":"JSON Conditions","href":"/dev-guides/reactions/json-conditions"},{"title":"Targets","href":"/dev-guides/reactions/targets"},{"title":"Example Reaction","href":"/dev-guides/reactions/example-reaction"}]},{"group":"Webhooks and events","pages":[{"title":"Webhooks","href":"/dev-guides/webhooks/webhooks"},{"title":"Event Contexts","href":"/dev-guides/webhooks/event-contexts"},{"title":"Custom Events","href":"/dev-guides/webhooks/custom-events"}]},{"group":"Frontend \u0026 SDK","pages":[{"title":"Using the Omneo SDK","href":"/dev-guides/frontend/omneo-sdk"},{"title":"Using Omneo ID","href":"/dev-guides/frontend/omneo-id"},{"title":"External app magic link","href":"/dev-guides/frontend/external-app-magic-link"},{"title":"Profile Portal login API","href":"/dev-guides/frontend/profile-portal-login-api"},{"title":"Barcodes","href":"/dev-guides/frontend/barcodes"},{"title":"Integrating Omneo Invites","href":"/dev-guides/frontend/invites-plugin"},{"title":"Integrating invite codes","href":"/dev-guides/frontend/invite-codes"},{"title":"Invites API reference","href":"/dev-guides/frontend/invites-api"},{"title":"Facebook Offline Events","href":"/dev-guides/frontend/facebook-offline-events"},{"title":"Meta Lead Ads","href":"/dev-guides/frontend/meta-leads-ads"}]},{"group":"Discovery search","pages":[{"title":"Discovery search","href":"/dev-guides/discovery/overview"},{"title":"Minting search tokens","href":"/dev-guides/discovery/search-tokens"},{"title":"Running a search","href":"/dev-guides/discovery/searching"},{"title":"Discovery indexes","href":"/dev-guides/discovery/indexes"},{"title":"Schools index","href":"/dev-guides/discovery/schools-index"}]},{"group":"POS integration","pages":[{"title":"POS Integration Overview","href":"/dev-guides/pos/overview"},{"title":"POS Integration Guide","href":"/dev-guides/pos/pos-integration-guide"}]},{"group":"Appointments","pages":[{"title":"Working with Appointments","href":"/dev-guides/visits/appointments"},{"title":"Managing appointment definitions","href":"/dev-guides/visits/appointment-definitions"},{"title":"Walk-in queues and waitlists","href":"/dev-guides/visits/walk-in-queues-and-waitlists"}]},{"group":"Lists","pages":[{"title":"Working with Product Lists","href":"/dev-guides/lists/working-with-product-lists"},{"title":"List Definitions","href":"/dev-guides/lists/list-definitions"},{"title":"List Reservations","href":"/dev-guides/lists/list-reservations"},{"title":"Product List Items","href":"/dev-guides/lists/product-list-items"}]},{"group":"Groups","pages":[{"title":"Working with Groups","href":"/dev-guides/groups/working-with-groups"},{"title":"Building dynamic groups","href":"/dev-guides/groups/dynamic-groups"},{"title":"Favourite groups","href":"/dev-guides/groups/favourite-groups"}]},{"group":"Feedback","pages":[{"title":"Building questionnaires","href":"/dev-guides/feedback/building-questionnaires"},{"title":"Submitting questionnaires and routing answers","href":"/dev-guides/feedback/submitting-questionnaires"}]},{"group":"Extensions","pages":[{"title":"Shopify Extension","href":"/dev-guides/extensions/shopify"},{"title":"Salesforce Commerce Cloud","href":"/dev-guides/extensions/sfcc"},{"title":"Magento / Adobe Commerce","href":"/dev-guides/extensions/magento"},{"title":"commercetools","href":"/dev-guides/extensions/commercetools"},{"title":"BigCommerce","href":"/dev-guides/extensions/bigcommerce"},{"title":"Commerce Layer","href":"/dev-guides/extensions/commerce-layer"},{"title":"Zendesk App","href":"/dev-guides/extensions/zendesk-app"},{"title":"Gorgias","href":"/dev-guides/extensions/gorgias"},{"title":"Corporate Invites","href":"/dev-guides/extensions/corporate-invites"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Merging Profiles - Omneo API","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}