Goal: an internal Destination may receive an email under an explicit audit-only rule, while an external Destination receives a masked value. Use synthetic data only.
This scenario builds on an existing Connector, Destination and Stream. If you have not configured a Source yet, start from the connector-specific collection guides. Follow the concrete steps below and verify actual Logs and Destination/quarantine evidence. Existing test screenshots are illustrative, not runtime proof.
Complete Two destinations with both Routes working. Make sure the sampled event actually contains user.email (or choose the equivalent field path displayed in your Union Schema).
Open the Stream’s Edit Wizard (/streams/{id}/edit) or, for a new Stream, its Route Processing step.
Select Global Processing → Data Protection. Choose the observed email field (the actual path shown by the UI).
Set the intended default rule to Audit Only and Continue Delivery, if that is permitted for your isolated internal test.
Explicitly save any rule that requires Save Rule, rather than assuming the preview autosaves.
Review the default summary and warnings.
Audit Only preserves the original value. Do not use it for real regulated personal data unless your organization’s policy explicitly permits that internal Destination.
Select the same email field and set Mask (partial/full according to your intended policy).
Set event-level Delivery Behavior to Continue Delivery. Remove/Drop removes a field; Block prevents the whole event from being delivered — they are not interchangeable.
Save the complete Route Protection configuration and confirm its effective status is Overridden rather than Intent only.
Inspect any Route-specific protection preview. A mapping-only preview is not proof of masking.
If the wizard stages an override but reports a conflict on Save, do not assert deployment succeeded; use the supported Route Edit path and inspect Known Limitations.
Field does not appear: confirm Sample & Record Selection, field path and Union Schema.
External still receives raw email: stop testing with real data; check Inherit/Override, effective policy, and the run used for evidence.
409 STREAM_STALE_WRITE during staged Save: this is a known, reproduced development issue in Control #413; preserve the draft, avoid claiming it persisted, and use the verified Route editor only where that operation succeeds.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"DataRelay Control","description":"Data delivery, route processing, protection, and operational control for enterprise data flows.","colors":{"primary":"#C2410C","light":"#FB923C","dark":"#C75A00"},"logo":{"light":"https://mintcdn.com/datarelay-control/tSouZfeXx238dWIU/logo/light.svg?fit=max\u0026auto=format\u0026n=tSouZfeXx238dWIU\u0026q=85\u0026s=dbaae21bf2f930ba9c91c5c6f56131d1","dark":"https://mintcdn.com/datarelay-control/tSouZfeXx238dWIU/logo/dark.svg?fit=max\u0026auto=format\u0026n=tSouZfeXx238dWIU\u0026q=85\u0026s=e2996dc158fb10355bb1f62a7c5ea1a7","href":"https://control.datarelay.run"},"favicon":"https://mintcdn.com/datarelay-control/tSouZfeXx238dWIU/favicon.svg?fit=max\u0026auto=format\u0026n=tSouZfeXx238dWIU\u0026q=85\u0026s=712ef0b5b0545ce5dea415ca5ef77cf9","appearance":{"default":"system","strict":false},"navbar":{"links":[{"href":"https://datarelay.run/","label":"DataRelay"},{"href":"https://link.datarelay.run/","label":"Link"},{"href":"https://control.datarelay.run/","label":"Control"},{"href":"https://grant.datarelay.run/","label":"Grant"},{"href":"https://engineering.datarelay.run/","label":"Engineering"},{"href":"https://github.com/datarelay-labs/datarelay-control","type":"github"}]},"search":{"prompt":"Search DataRelay Control docs..."},"seo":{"metatags":{"canonical":"https://control.datarelay.run"},"indexing":"navigable"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"ko","href":"ko"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"datarelay-control","hasAudioNarration":false,"actualSubdomain":"datarelay-control","customDomains":["control.datarelay.run"],"gitSource":{"type":"github","owner":"datarelay-labs","repo":"datarelay-control-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad4f6dd6410502f2e4657ca","collectionId":"3cd9860b-3224-48a0-9710-00991a4cf6c9","liveDeploymentHistoryId":"6ad4f6dd6410502f2e4657ca","schemaVersion":"v3"},"entitlements":{},"buildId":"6ad4f6dd6410502f2e4657ca","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"en","tag":"Step-by-step Use Cases","count":17},{"language":"ko","tag":"활용 사례별 따라하기","count":17},{"language":"en","tag":"Reference","count":8},{"language":"ko","tag":"참고","count":8},{"language":"en","tag":"Getting Started","count":7},{"language":"ko","tag":"시작하기","count":7},{"language":"en","tag":"Operations","count":4},{"language":"ko","tag":"운영","count":4},{"language":"en","tag":"Administration","count":3},{"language":"ko","tag":"관리","count":3},{"language":"en","tag":"Deployment","count":2},{"language":"en","tag":"Processing \u0026 Governance","count":2},{"language":"en","tag":"Security","count":2},{"language":"ko","tag":"배포","count":2},{"language":"ko","tag":"처리 \u0026 Governance","count":2},{"language":"ko","tag":"보안","count":2},{"language":"en","tag":"Roadmap","count":1},{"language":"ko","tag":"로드맵","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"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":"byok-sep-25","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":"billing-updated-9-15","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":[{"filePath":"style.css","content":":root{--dr-brand:#C2410C;--dr-brand-hover:#9A3412;--dr-brand-soft:#FFF7ED;--dr-product-accent:#047857;--dr-bg:#FFFFFF;--dr-surface:#FFFFFF;--dr-surface-subtle:#FAFAF9;--dr-ink:#1C1917;--dr-muted:#57534E;--dr-border:#E7E5E4;--dr-border-strong:#D6D3D1;--dr-shadow-sm:0 1px 2px rgb(28 25 23 / 0.05);--dr-shadow-md:0 14px 34px rgb(28 25 23 / 0.09);--dr-radius-sm:10px;--dr-radius-md:16px;--dr-radius-lg:24px}.dark{--dr-brand:#FB923C;--dr-brand-hover:#FDBA74;--dr-brand-soft:#2A160D;--dr-product-accent:#34D399;--dr-bg:#0C0A09;--dr-surface:#141210;--dr-surface-subtle:#1C1917;--dr-ink:#FAFAF9;--dr-muted:#C7C2BC;--dr-border:#292524;--dr-border-strong:#44403C;--dr-shadow-sm:0 1px 2px rgb(0 0 0 / 0.25);--dr-shadow-md:0 18px 42px rgb(0 0 0 / 0.32)}html{scroll-behavior:smooth}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}#navbar-transition{background:rgb(255 255 255/.9)!important;border-color:rgb(120 113 108/.16)!important;backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%)}.dark #navbar-transition{background:rgb(12 10 9/.88)!important;border-color:rgb(231 229 228/.1)!important}.nav-logo{height:2rem!important}body,main h1,main h2{color:var(--dr-ink)}main h1{letter-spacing:-.038em;font-weight:760;line-height:1.08}main h2{letter-spacing:-.025em;font-weight:700}main h3{letter-spacing:-.015em}main li,main p{line-height:1.72}main blockquote{border-left:3px solid var(--dr-product-accent)!important;background:var(--dr-surface-subtle);border-radius:0 var(--dr-radius-sm) var(--dr-radius-sm) 0;padding:.8rem 1rem}main pre{border:1px solid var(--dr-border)!important;border-radius:var(--dr-radius-md)!important;box-shadow:var(--dr-shadow-sm)}main table{border-color:var(--dr-border)!important;border-radius:var(--dr-radius-sm)}.dr-hero-kicker{display:inline-flex;align-items:center;gap:.5rem;margin:0 0 1rem;padding:.42rem .7rem;border:1px solid #fed7aa;border-radius:999px;background:#fff7ed;color:#9a3412;font-size:.72rem;font-weight:760;letter-spacing:.12em;text-transform:uppercase}.dark .dr-hero-kicker{border-color:#7c2d12;background:#2a160d;color:#fdba74}.dr-hero-kicker+h1{max-width:950px;margin-top:0!important;font-size:clamp(2.7rem,6vw,4.85rem)!important;line-height:.98!important;letter-spacing:-.055em!important}.dr-hero-actions{display:flex;flex-wrap:wrap;gap:.7rem;margin:1.55rem 0 1.35rem}.dr-button{display:inline-flex;min-height:2.75rem;align-items:center;justify-content:center;border-radius:.72rem;padding:.68rem 1rem;border:1px solid transparent;font-size:.9rem;font-weight:680;line-height:1;text-decoration:none!important;transition:transform 150ms ease,border-color 150ms ease,background-color 150ms ease,box-shadow 150ms ease}.dr-button:hover{transform:translateY(-1px)}.dr-button-primary{background:var(--dr-brand);color:#fff!important;box-shadow:0 6px 18px rgb(194 65 12/.2)}.dr-button-primary:hover{background:var(--dr-brand-hover)}.dark .dr-button-primary{color:#1c1917!important}.dr-button-secondary{background:var(--dr-surface);color:var(--dr-ink)!important;border-color:var(--dr-border-strong);box-shadow:var(--dr-shadow-sm)}.dr-button-secondary:hover{border-color:var(--dr-product-accent)}.dr-family-strip{display:flex;align-items:center;gap:.35rem;margin:0 0 2rem;padding:.4rem;width:fit-content;max-width:100%;overflow-x:auto;border:1px solid var(--dr-border);border-radius:.85rem;background:var(--dr-surface-subtle);scrollbar-width:none}.dr-family-strip::-webkit-scrollbar{display:none}.dr-family-strip .dr-family-current,.dr-family-strip a{display:inline-flex;align-items:center;min-height:2rem;padding:.42rem .68rem;border-radius:.56rem;white-space:nowrap;color:var(--dr-muted)!important;font-size:.78rem;font-weight:650;text-decoration:none!important}.dr-family-strip a:hover{color:var(--dr-ink)!important;background:var(--dr-surface)}.dr-family-strip .dr-family-current{color:#fff!important;background:var(--dr-product-accent);box-shadow:var(--dr-shadow-sm)}.dark .dr-family-strip .dr-family-current{color:#0c0a09!important}.card{border-color:var(--dr-border)!important;border-radius:var(--dr-radius-md)!important;background:var(--dr-surface)!important;box-shadow:var(--dr-shadow-sm);transition:transform 160ms ease,box-shadow 160ms ease,border-color 160ms ease!important}.card:hover{transform:translateY(-2px);border-color:var(--dr-product-accent)!important;box-shadow:var(--dr-shadow-md)}[data-component-part=card-title]{letter-spacing:-.012em}[data-component-part=card-icon]{color:var(--dr-product-accent)!important}.callout{border-radius:var(--dr-radius-md)!important}footer{border-top-color:var(--dr-border)!important}:where(a, button, input, select, textarea):focus-visible{outline:3px solid var(--dr-product-accent)!important;outline-offset:3px!important}@media (max-width:768px){.dr-hero-kicker+h1{font-size:clamp(2.35rem,13vw,3.55rem)!important}.dr-hero-actions{display:grid;grid-template-columns:1fr}.dr-button,.dr-family-strip{width:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card,.dr-button{transition:none!important}.card:hover,.dr-button:hover{transform:none}}"}],"page":{"pagePath":"use-cases/protect-pii","slug":"/use-cases/protect-pii","pageMetadata":{"title":"Mask Data for Only One Route","description":"Configure separate per-destination data protection rules without duplicating the Stream.","href":"/use-cases/protect-pii"},"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: \"Configure separate per-destination data protection rules without duplicating the Stream.\"\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(Heading,{level:`1`,id:`mask-data-for-only-one-route`,children:`Mask Data for Only One Route`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Goal:`}),` an internal Destination may receive an email under an explicit audit-only rule, while an external Destination receives a masked value. Use `,_jsx(_components.strong,{children:`synthetic`}),` data only.`]}),`\n`,_jsx(Heading,{level:`2`,id:`when-to-use-this-scenario`,children:`When to use this scenario`}),`\n`,_jsxs(_components.p,{children:[`This scenario builds on an existing Connector, Destination and Stream. If you have not configured a Source yet, start from the `,_jsx(_components.a,{href:`/use-cases/index`,children:`connector-specific collection guides`}),`. Follow the concrete steps below and verify `,_jsx(_components.strong,{children:`actual Logs and Destination/quarantine evidence`}),`. Existing test screenshots are illustrative, not runtime proof.`]}),`\n`,_jsx(Heading,{level:`2`,id:`starting-state`,children:`Starting state`}),`\n`,_jsxs(_components.p,{children:[`Complete `,_jsx(_components.a,{href:`/use-cases/multi-destination`,children:`Two destinations`}),` with both Routes working. Make sure the sampled event actually contains `,_jsx(_components.code,{children:`user.email`}),` (or choose the equivalent field path displayed in your Union Schema).`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pii-demo-001\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"user\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"email\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"lab@example.invalid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"synthetic protection demo\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`1-establish-the-default`,children:`1. Establish the default`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Open the Stream’s Edit Wizard (`,_jsx(_components.code,{children:`/streams/{id}/edit`}),`) or, for a new Stream, its `,_jsx(_components.strong,{children:`Route Processing`}),` step.`]}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Global Processing → Data Protection`}),`. Choose the observed email field (the actual path shown by the UI).`]}),`\n`,_jsxs(_components.li,{children:[`Set the intended default rule to `,_jsx(_components.strong,{children:`Audit Only`}),` and `,_jsx(_components.strong,{children:`Continue Delivery`}),`, if that is permitted for your isolated internal test.`]}),`\n`,_jsxs(_components.li,{children:[`Explicitly save any rule that requires `,_jsx(_components.strong,{children:`Save Rule`}),`, rather than assuming the preview autosaves.`]}),`\n`,_jsx(_components.li,{children:`Review the default summary and warnings.`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Audit Only preserves the original value. Do not use it for real regulated personal data unless your organization’s policy explicitly permits that internal Destination.`})}),`\n`,_jsx(Heading,{level:`2`,id:`2-override-the-external-route`,children:`2. Override the external Route`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Select the `,_jsx(_components.strong,{children:`Lab External`}),` Route.`]}),`\n`,_jsxs(_components.li,{children:[`Turn off `,_jsx(_components.strong,{children:`Inherit Global`}),` for `,_jsx(_components.strong,{children:`Protection`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Select the same email field and set `,_jsx(_components.strong,{children:`Mask`}),` (partial/full according to your intended policy).`]}),`\n`,_jsxs(_components.li,{children:[`Set event-level `,_jsx(_components.strong,{children:`Delivery Behavior`}),` to `,_jsx(_components.strong,{children:`Continue Delivery`}),`. `,_jsx(_components.code,{children:`Remove/Drop`}),` removes a field; `,_jsx(_components.code,{children:`Block`}),` prevents the `,_jsx(_components.strong,{children:`whole event`}),` from being delivered — they are not interchangeable.`]}),`\n`,_jsxs(_components.li,{children:[`Save the complete Route Protection configuration and confirm its `,_jsx(_components.strong,{children:`effective`}),` status is `,_jsx(_components.strong,{children:`Overridden`}),` rather than `,_jsx(_components.strong,{children:`Intent only`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Inspect any Route-specific protection preview. A mapping-only preview is `,_jsx(_components.strong,{children:`not`}),` proof of masking.`]}),`\n`,_jsxs(_components.li,{children:[`If the wizard stages an override but reports a conflict on Save, do not assert deployment succeeded; use the supported Route Edit path and inspect `,_jsx(_components.a,{href:`/reference/limitations`,children:`Known Limitations`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`3-send-and-compare`,children:`3. Send and compare`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Publish the synthetic `,_jsx(_components.code,{children:`pii-demo-001`}),` event via the configured Webhook Receiver.`]}),`\n`,_jsx(_components.li,{children:`Inspect the internal and external receiver output files and matching Route Logs.`}),`\n`,_jsxs(_components.li,{children:[`Confirm the external recipient’s email `,_jsx(_components.strong,{children:`is not equal to`}),` `,_jsx(_components.code,{children:`lab@example.invalid`}),`; verify the effective action actually masked or removed it as intended.`]}),`\n`,_jsx(_components.li,{children:`Check the internal receipt only if Audit Only is expressly allowed in your lab; correlate both events by ID.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`PASS =`}),` saved effective Route rule, Route delivery status, and independent payload showing that the external receiver does `,_jsx(_components.strong,{children:`not`}),` receive the raw email.`]}),`\n`,_jsx(Heading,{level:`2`,id:`if-it-fails`,children:`If it fails`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Field does not appear: confirm `,_jsx(_components.strong,{children:`Sample \u0026 Record Selection`}),`, field path and Union Schema.`]}),`\n`,_jsx(_components.li,{children:`External still receives raw email: stop testing with real data; check Inherit/Override, effective policy, and the run used for evidence.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`409 STREAM_STALE_WRITE`}),` during staged Save: this is a known, reproduced development issue in `,_jsx(_components.a,{href:`https://github.com/datarelay-labs/datarelay-control/issues/413`,children:`Control #413`}),`; preserve the draft, avoid claiming it persisted, and use the verified Route editor only where that operation succeeds.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Related:`}),` `,_jsx(_components.a,{href:`/use-cases/schema-change`,children:`Schema changes`}),`, `,_jsx(_components.a,{href:`/governance/overview`,children:`Governance`}),`.`]})]})}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":"Mask Data for Only One Route","description":"Configure separate per-destination data protection rules without duplicating the Stream.","href":"/use-cases/protect-pii"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Mask Data for Only One Route","slug":"mask-data-for-only-one-route","depth":1,"children":[]},{"title":"When to use this scenario","slug":"when-to-use-this-scenario","depth":2,"children":[]},{"title":"Starting state","slug":"starting-state","depth":2,"children":[]},{"title":"1. Establish the default","slug":"1-establish-the-default","depth":2,"children":[]},{"title":"2. Override the external Route","slug":"2-override-the-external-route","depth":2,"children":[]},{"title":"3. Send and compare","slug":"3-send-and-compare","depth":2,"children":[]},{"title":"If it fails","slug":"if-it-fails","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"datarelay-control","siteName":"DataRelay Control","title":"Mask Data for Only One Route - DataRelay Control","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/use-cases/protect-pii","matchLevel":0},"ko":{"href":"/ko/use-cases/protect-pii","matchLevel":1}}},"lastModified":"2026-10-18T16:42:11.442Z","gitLastModified":"2026-10-18T16:42:01.000Z","originalFileLocation":"use-cases/protect-pii.mdx","locale":"en"},"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=\"Configure separate per-destination data protection rules without duplicating the Stream.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DataRelay Control\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datarelay-control/Jay7lA66uQT7y97k/_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/datarelay-control/Jay7lA66uQT7y97k/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datarelay-control/Jay7lA66uQT7y97k/_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/datarelay-control/Jay7lA66uQT7y97k/_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/datarelay-control/Jay7lA66uQT7y97k/_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/datarelay-control/Jay7lA66uQT7y97k/_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/datarelay-control/Jay7lA66uQT7y97k/_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/datarelay-control/Jay7lA66uQT7y97k/_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/datarelay-control/Jay7lA66uQT7y97k/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Mask Data for Only One Route - DataRelay Control\">\u003cmeta data-mint-head property=\"og:description\" content=\"Configure separate per-destination data protection rules without duplicating the Stream.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DataRelay Control\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://control.datarelay.run/use-cases/protect-pii\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://datarelay-control.mintlify.app/_mintlify/api/og/v2?division=Step-by-step+Use+Cases\u0026amp;title=Mask+Data+for+Only+One+Route\u0026amp;description=Configure+separate+per-destination+data+protection+rules+without+duplicating+the+Stream.\u0026amp;theme=49091afdb5ce7328bec07c83\u0026amp;signature=e19e3a055e1c45c31cad04a62d55848d497faa5507fc67063c5a9bb364c92f3c\">\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=\"Mask Data for Only One Route - DataRelay Control\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Configure separate per-destination data protection rules without duplicating the Stream.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://datarelay-control.mintlify.app/_mintlify/api/og/v2?division=Step-by-step+Use+Cases\u0026amp;title=Mask+Data+for+Only+One+Route\u0026amp;description=Configure+separate+per-destination+data+protection+rules+without+duplicating+the+Stream.\u0026amp;theme=49091afdb5ce7328bec07c83\u0026amp;signature=e19e3a055e1c45c31cad04a62d55848d497faa5507fc67063c5a9bb364c92f3c\">\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/datarelay-control/Jay7lA66uQT7y97k/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DataRelay Control\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#C2410C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://control.datarelay.run/use-cases/protect-pii\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/use-cases/protect-pii.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://control.datarelay.run/use-cases/protect-pii\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://control.datarelay.run/ko/use-cases/protect-pii\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://control.datarelay.run/use-cases/protect-pii\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://control.datarelay.run/#organization\",\"name\":\"DataRelay Control\",\"url\":\"https://control.datarelay.run\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/datarelay-control/tSouZfeXx238dWIU/logo/light.svg?fit=max\u0026auto=format\u0026n=tSouZfeXx238dWIU\u0026q=85\u0026s=dbaae21bf2f930ba9c91c5c6f56131d1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://control.datarelay.run#website\",\"name\":\"DataRelay Control\",\"url\":\"https://control.datarelay.run\",\"publisher\":{\"@id\":\"https://control.datarelay.run/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://control.datarelay.run/use-cases/protect-pii#webpage\",\"url\":\"https://control.datarelay.run/use-cases/protect-pii\",\"name\":\"Mask Data for Only One Route\",\"description\":\"Configure separate per-destination data protection rules without duplicating the Stream.\",\"dateModified\":\"2026-10-18T16:42:01.000Z\",\"isPartOf\":{\"@id\":\"https://control.datarelay.run#website\"},\"breadcrumb\":{\"@id\":\"https://control.datarelay.run/use-cases/protect-pii#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://control.datarelay.run/use-cases/protect-pii#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Step-by-step Use Cases\",\"item\":\"https://control.datarelay.run/use-cases/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mask Data for Only One Route\",\"item\":\"https://control.datarelay.run/use-cases/protect-pii\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://control.datarelay.run/use-cases/protect-pii#article\",\"headline\":\"Mask Data for Only One Route\",\"name\":\"Mask Data for Only One Route\",\"description\":\"Configure separate per-destination data protection rules without duplicating the Stream.\",\"url\":\"https://control.datarelay.run/use-cases/protect-pii\",\"mainEntityOfPage\":{\"@id\":\"https://control.datarelay.run/use-cases/protect-pii#webpage\"},\"dateModified\":\"2026-10-18T16:42:01.000Z\",\"publisher\":{\"@id\":\"https://control.datarelay.run/#organization\"},\"isPartOf\":{\"@id\":\"https://control.datarelay.run#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DataRelay Control\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"DataRelay Control","nav":{"global":null,"languages":[{"language":"en","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"DataRelay Control","href":""},{"title":"Overview","href":"/getting-started/overview"},{"title":"Architecture","href":"/getting-started/architecture"},{"title":"Quick Start","href":"/getting-started/quickstart"},{"title":"First Login","href":"/getting-started/first-login"},{"title":"First Stream","href":"/getting-started/first-stream"},{"title":"DataRelay Link Relationship","href":"/getting-started/data-relay-link"}]},{"group":"Step-by-step Use Cases","icon":"book","pages":[{"title":"Hands-on Use Cases","href":"/use-cases/index"},{"title":"Follow the Stream Wizard with Screenshots","href":"/use-cases/screen-walkthrough"},{"title":"Prepare a Safe Lab","href":"/use-cases/lab-setup"},{"title":"Webhook to First Delivered Event","href":"/use-cases/webhook-first-flow"},{"title":"Collect from an HTTP API","href":"/use-cases/http-api"},{"title":"Collect Events from PostgreSQL","href":"/use-cases/postgresql-collection"},{"title":"Collect Logs from S3 or MinIO","href":"/use-cases/s3-object-collection"},{"title":"Collect Files over SFTP","href":"/use-cases/sftp-file-collection"},{"title":"One Stream, Two Destinations","description":"Fan out one input to two Destinations and apply a different Transform per Route.","href":"/use-cases/multi-destination"},{"title":"Mask Data for Only One Route","href":"/use-cases/protect-pii"},{"title":"Handle Schema Changes","description":"Inspect Union Schema and select an explicit policy for new or sensitive fields.","href":"/use-cases/schema-change"},{"title":"Quarantine, Review, and Replay","href":"/use-cases/quarantine-replay"},{"title":"Recover from a Delivery Failure","href":"/use-cases/delivery-incident"},{"title":"Find, Save, and Export Delivery Evidence","href":"/use-cases/logs-audit"},{"title":"Marketplace Package to Running Stream","href":"/use-cases/marketplace-install"},{"title":"Deliver Events to a Syslog Receiver","href":"/use-cases/syslog-delivery"},{"title":"Daily Operations Checklist","href":"/use-cases/daily-operations"}]},{"group":"Administration","icon":"gear","pages":[{"title":"Administration","href":"/administration/overview"},{"title":"Users \u0026 Roles","href":"/administration/users-roles"},{"title":"Connectors \u0026 Marketplace","href":"/administration/connectors-marketplace"}]},{"group":"Processing \u0026 Governance","icon":"route","pages":[{"title":"Route Processing","href":"/processing/route-processing"},{"title":"Governance","href":"/governance/overview"}]},{"group":"Operations","icon":"screwdriver-wrench","pages":[{"title":"Operations","href":"/operations/overview"},{"title":"Backup \u0026 Restore","href":"/operations/backup-restore"},{"title":"Upgrades","href":"/operations/upgrades"},{"title":"Troubleshooting","href":"/operations/troubleshooting"}]},{"group":"Deployment","icon":"server","pages":[{"title":"Deployment Requirements","href":"/deployment/requirements"},{"title":"Network, Reverse Proxy \u0026 TLS","href":"/deployment/network-tls"}]},{"group":"Security","icon":"shield-halved","pages":[{"title":"Security Overview","href":"/security/overview"},{"title":"Authentication \u0026 Authorization","href":"/security/authentication-authorization"}]},{"group":"Reference","icon":"book","pages":[{"title":"Configuration","href":"/reference/configuration"},{"title":"API Reference","href":"/reference/api"},{"title":"CLI \u0026 Operator Tools","href":"/reference/cli-tools"},{"title":"Data Model","href":"/reference/data-model"},{"title":"Release Status","href":"/reference/release-status"},{"title":"Known Limitations","href":"/reference/limitations"},{"title":"License","href":"/reference/license"},{"title":"Glossary","href":"/reference/glossary"}]},{"group":"Roadmap","icon":"map","pages":[{"title":"Current Status \u0026 Roadmap","href":"/roadmap/current-status"}]}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/use-cases/protect-pii"}]}]},"basePath":"","title":"Mask Data for Only One Route - DataRelay Control","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}