Look up the verified Device ID in your own experience records and read the current risk context.Use the current Risk Score and flags, plus High-Risk Events where relevant. Treat a missing or incomplete result as an explicit unverified state.
Restore non-sensitive preferences or a familiar experience after the backend verifies the result.Use authenticated sessions for access to private account data. Device recognition supports the experience; account authentication protects it.
The runnable tutorial includes the starting app, the completed integration, and steps to test its behavior. Its application policy is stated separately from ShieldLabs detection.For implementation details, see Acting on results and Identification flow. Verify the expected domain, result age and account association, and consume protected actions atomically.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ShieldLabs","description":"ShieldLabs documentation for visitor identification, risky user detection, bot and AI traffic detection, fraud prevention, traffic quality scoring, SDKs and APIs.","colors":{"primary":"#009966","light":"#10B981","dark":"#04603A"},"logo":{"light":"https://mintcdn.com/shieldlabs-725d18f1/VoYXSgKgvMTs7C6o/logo-light.svg?fit=max\u0026auto=format\u0026n=VoYXSgKgvMTs7C6o\u0026q=85\u0026s=6693f16153311129af9912d26cb76982","dark":"https://mintcdn.com/shieldlabs-725d18f1/VoYXSgKgvMTs7C6o/logo-dark.svg?fit=max\u0026auto=format\u0026n=VoYXSgKgvMTs7C6o\u0026q=85\u0026s=6857cb6c45bd367a936d21948e2c0821"},"favicon":"https://mintcdn.com/shieldlabs-725d18f1/RvKkgWwymqgcBqls/favicon.svg?fit=max\u0026auto=format\u0026n=RvKkgWwymqgcBqls\u0026q=85\u0026s=c58fd882f05283ff56788053031394ed","api":{"openapi":"references/openapi.yaml"},"navbar":{"links":[{"href":"https://demo.shieldlabs.ai/","label":"Playground"}],"primary":{"type":"button","label":"Start Free","href":"https://app.shieldlabs.ai/"}},"footer":{"socials":{"x":"https://x.com/Shieldlabs_ai","linkedin":"https://www.linkedin.com/company/shieldlabs-ai"}},"seo":{"metatags":{"canonical":"https://docs.shieldlabs.ai","og:site_name":"ShieldLabs","twitter:site":"@Shieldlabs_ai","msvalidate.01":"AAA8BEBFE099D54745B8A6944A7C8038"},"organization":{"id":"https://shieldlabs.ai/#organization","name":"ShieldLabs","legalName":"ShieldLabs Inc","url":"https://shieldlabs.ai","logo":"https://docs.shieldlabs.ai/logo-light.svg","sameAs":["https://x.com/Shieldlabs_ai","https://www.linkedin.com/company/shieldlabs-ai","https://github.com/ShieldLabs-ai"]},"indexing":"navigable"},"integrations":{"ga4":{"measurementId":"G-SVSXGMD6BH"},"plausible":{"domain":"shieldlabs.ai"},"cookies":{"key":"shield_analytics_allowed","value":"yes"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"shieldlabs-725d18f1","hasAudioNarration":false,"actualSubdomain":"shieldlabs-725d18f1","customDomains":["docs.shieldlabs.ai"],"gitSource":{"type":"github","owner":"shieldlabs-ai","repo":"shield.docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae4a419f07304f33466eaaf","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"Use Case Tutorials","count":45},{"language":"default","tag":"Start","count":32},{"language":"default","tag":"Overview","count":29},{"language":"default","tag":"API Reference","count":20},{"language":"default","tag":"Get the result","count":8},{"language":"default","tag":"Run a check","count":8},{"language":"default","tag":"Browser integration","count":8},{"language":"default","tag":"Payments and rewards","count":8},{"language":"default","tag":"Accounts","count":8},{"language":"default","tag":"Methods","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":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":"custom-rbac-roles","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":"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":"editor-metadata","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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".sl-cta{display:flex;flex-wrap:wrap;gap:0.75rem;margin:1.5rem 0 0.25rem}.sl-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.7rem 1.3rem;border-radius:0.625rem;font-weight:600;font-size:0.95rem;line-height:1;text-decoration:none;cursor:pointer;transition:background-color 200ms ease, color 200ms ease, box-shadow 200ms ease}.sl-btn-primary{background-color:#009966;color:#ffffff!important;box-shadow:0 1px 2px rgba(4, 96, 58, 0.25)}.sl-btn-primary:hover{background-color:#04603a}.sl-btn-ghost{background-color:transparent;color:#04603a!important;border:1px solid #009966}.sl-btn-ghost:hover{background-color:rgba(0, 153, 102, 0.08)}.sl-btn:focus-visible{outline:2px solid #10b981;outline-offset:2px}.dark .sl-btn-ghost{color:#10b981!important;border-color:#10b981}.sl-trust{color:#6b7280;font-size:0.9rem;margin-top:0.75rem}.dark .sl-trust{color:#9ca3af}.sl-strip{font-size:0.9rem;color:#64748b;font-weight:500;margin:0.9rem 0 0}.dark .sl-strip{color:#94a3b8}.sl-home{max-width:78rem;margin:0 auto;padding:2.5rem 1.5rem 4rem}.sl-hero{display:grid;grid-template-columns:1.15fr 0.85fr;gap:2.5rem;align-items:center;padding:1rem 0 1.5rem}.sl-hero-title{font-size:2.6rem;line-height:1.1;font-weight:700;letter-spacing:-0.02em;margin:0 0 1rem;color:#0f172a}.dark .sl-hero-title{color:#f1f5f9}.sl-brand{color:#009966}.dark .sl-brand{color:#10b981}.sl-hero-sub{font-size:1.12rem;line-height:1.6;color:#475569;margin:0 0 0.5rem;max-width:34rem}.dark .sl-hero-sub{color:#94a3b8}.sl-kbd{display:inline-flex;align-items:center;gap:0.4rem;font-size:0.85rem;color:#64748b;margin-top:1.1rem}.sl-kbd kbd{font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.8rem;padding:0.15rem 0.45rem;border-radius:0.35rem;border:1px solid #e2e8f0;background:#f8fafc;color:#334155}.dark .sl-kbd{color:#94a3b8}.dark .sl-kbd kbd{border-color:#334155;background:#1e293b;color:#cbd5e1}.sl-hero-visual{display:flex;justify-content:center}.sl-score-card{width:100%;max-width:22rem;border:1px solid #e6e9ef;border-radius:1rem;background:#ffffff;box-shadow:0 12px 32px rgba(2, 44, 34, 0.08);padding:1.25rem 1.35rem;font-family:ui-monospace, SFMono-Regular, Menlo, monospace}.dark .sl-score-card{background:#0f1c18;border-color:#1f3b32}.sl-score-section{font-size:0.62rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#009966;padding:0.55rem 0 0.15rem;font-family:-apple-system, system-ui, sans-serif}.sl-score-card>.sl-score-section:first-child{padding-top:0}.dark .sl-score-section{color:#34d399}.sl-score-row{display:flex;justify-content:space-between;align-items:center;padding:0.42rem 0;font-size:0.85rem}.sl-score-row+.sl-score-row{border-top:1px solid #f1f5f9}.dark .sl-score-row+.sl-score-row{border-top-color:#16271f}.sl-score-key{color:#64748b}.dark .sl-score-key{color:#7b8a83}.sl-score-val{color:#0f172a}.dark .sl-score-val{color:#e2e8f0}.sl-score-big{font-size:1.05rem;font-weight:700}.sl-badge-high{display:inline-block;font-size:0.68rem;font-weight:700;letter-spacing:0.04em;padding:0.12rem 0.5rem;border-radius:999px;background:rgba(239, 68, 68, 0.12);color:#dc2626;margin-left:0.5rem;font-family:-apple-system, system-ui, sans-serif}.dark .sl-badge-high{background:rgba(248, 113, 113, 0.16);color:#f87171}.sl-badge-suspicious,.sl-badge-trusted,.sl-badge-confidence{display:inline-block;font-size:0.68rem;font-weight:700;letter-spacing:0.04em;padding:0.12rem 0.5rem;border-radius:999px;margin-left:0.5rem;font-family:-apple-system, system-ui, sans-serif}.sl-badge-suspicious{background:rgba(245, 158, 11, 0.14);color:#b45309}.dark .sl-badge-suspicious{background:rgba(251, 191, 36, 0.16);color:#fbbf24}.sl-badge-trusted{background:rgba(0, 153, 102, 0.12);color:#007a52}.dark .sl-badge-trusted{background:rgba(52, 211, 153, 0.16);color:#34d399}.sl-badge-confidence{background:rgba(71, 85, 105, 0.1);color:#334155;box-shadow:inset 0 0 0 1px rgba(71, 85, 105, 0.28)}.dark .sl-badge-confidence{background:rgba(148, 163, 184, 0.14);color:#cbd5e1;box-shadow:inset 0 0 0 1px rgba(148, 163, 184, 0.32)}.sl-score-pts{font-weight:700;color:#b45309}.dark .sl-score-pts{color:#fbbf24}.sl-score-total{border-top:2px solid #e2e8f0!important;margin-top:0.2rem;padding-top:0.6rem}.dark .sl-score-total{border-top-color:#2a4339!important}.sl-section{margin-top:3.5rem}.sl-h2{font-size:1.7rem;font-weight:700;letter-spacing:-0.01em;color:#0f172a;margin:0 0 0.5rem}.dark .sl-h2{color:#f1f5f9}.sl-lead{font-size:1.02rem;color:#475569;margin:0 0 1.5rem;max-width:46rem}.dark .sl-lead{color:#94a3b8}.sl-lead a{color:#009966;font-weight:600;text-decoration:none}.sl-lead a:hover{text-decoration:underline}.dark .sl-lead a{color:#10b981}.sl-pills{display:flex;flex-wrap:wrap;gap:0.4rem;margin-top:0.85rem}.sl-pill{font-size:0.72rem;font-weight:600;padding:0.18rem 0.55rem;border-radius:999px;background:rgba(0, 153, 102, 0.1);color:#04603a;white-space:nowrap}.dark .sl-pill{background:rgba(16, 185, 129, 0.14);color:#34d399}.sl-uc-theme{font-size:0.78rem;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:#009966;margin:2rem 0 0.9rem;display:flex;align-items:center;gap:0.55rem}.dark .sl-uc-theme{color:#10b981}.sl-uc-theme::before{content:\"\";width:1.4rem;height:2px;background:#009966;display:inline-block;border-radius:2px}.dark .sl-uc-theme::before{background:#10b981}.sl-api{position:relative;margin-top:3.5rem;background:#04241b;border-radius:1.25rem;padding:2.25rem;display:grid;grid-template-columns:minmax(0, 0.9fr) minmax(0, 1.1fr);gap:1.75rem;align-items:start;width:100%;max-width:64rem;margin-inline:auto;box-sizing:border-box}.sl-api-tab-in{position:absolute;width:1px;height:1px;opacity:0;top:0;left:0}.sl-tablist{display:flex;flex-direction:column;gap:0.4rem;margin:1.25rem 0}.sl-tab{display:block;cursor:pointer;padding:0.65rem 1rem;border-radius:0.6rem;border:1px solid transparent;color:#a7c4ba;font-weight:600;font-size:0.95rem;transition:background-color 150ms ease, color 150ms ease, border-color 150ms ease}.sl-tab:hover{color:#ffffff;background:rgba(255, 255, 255, 0.04)}#sl-t1:checked~.sl-api-left label[for=\"sl-t1\"],#sl-t2:checked~.sl-api-left label[for=\"sl-t2\"],#sl-t3:checked~.sl-api-left label[for=\"sl-t3\"]{color:#ffffff;background:rgba(52, 211, 153, 0.12);border-color:#1f6b54}.sl-tab:focus-visible{outline:2px solid #34d399;outline-offset:2px}.sl-api-left,.sl-api-right,.sl-panel{min-width:0}.sl-api-right{display:grid}.sl-panel{grid-area:1 / 1;visibility:hidden}#sl-t1:checked~.sl-api-right .sl-p1,#sl-t2:checked~.sl-api-right .sl-p2,#sl-t3:checked~.sl-api-right .sl-p3{visibility:visible}.sl-api-right .sl-check{margin:1.1rem 0 0}.sl-tab-link{display:inline-block;margin-top:1rem;color:#34d399;font-weight:600;font-size:0.9rem;text-decoration:none}.sl-tab-link:hover{text-decoration:underline}.sl-api-title{font-size:1.5rem;font-weight:700;color:#ffffff;margin:0 0 0.75rem}.sl-api-text{color:#a7c4ba;font-size:1rem;line-height:1.6;margin:0 0 1.1rem}.sl-check{list-style:none;padding:0;margin:0 0 1.25rem}.sl-check li{color:#d1e7df;font-size:0.92rem;padding:0.3rem 0 0.3rem 1.6rem;position:relative}.sl-check li::before{content:\"\\2713\";position:absolute;left:0;color:#34d399;font-weight:700}.sl-console{display:flex;flex-direction:column;height:17rem;max-width:100%;box-sizing:border-box;background:#021712;border:1px solid #0c3a2c;border-radius:0.75rem;overflow:hidden}.sl-console-bar{display:flex;align-items:center;justify-content:space-between;flex:0 0 auto;gap:0.75rem;padding:0.4rem 0.55rem 0.4rem 0.9rem;border-bottom:1px solid #0c3a2c;color:#8fb8aa;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.75rem;line-height:1}.sl-console-copy{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:0;border-radius:0.35rem;background:transparent;color:#8fb8aa;cursor:pointer}.sl-console-copy:hover{color:#ffffff;background:rgba(255, 255, 255, 0.06)}.sl-console-copy:focus-visible{outline:2px solid #34d399;outline-offset:2px}pre.sl-code{background:transparent;border:0;border-radius:0;padding:1rem 1.25rem;overflow:auto;flex:1 1 auto;min-height:0;height:auto;max-width:100%;box-sizing:border-box;white-space:pre;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.82rem;line-height:1.55;color:#c8e6db;margin:0}.sl-api .sl-cta{margin-top:0}.sl-api .sl-btn-ghost{color:#34d399!important;border-color:#1f6b54}.sl-api .sl-btn-ghost:hover{background:rgba(52, 211, 153, 0.1)}@media (max-width: 820px){.sl-hero{grid-template-columns:1fr;gap:1.75rem}.sl-hero-title{font-size:2.1rem}.sl-api{grid-template-columns:1fr;padding:1.75rem}}@media (prefers-reduced-motion: reduce){.sl-btn{transition:none}}.code-block[language]::before{content:attr(language);position:absolute;z-index:5;top:0;left:0;right:0;height:2.15rem;display:flex;align-items:center;padding:0 2.6rem 0 0.9rem;box-sizing:border-box;border-bottom:1px solid rgba(15, 23, 42, 0.08);background:#f4f6f8;color:#52606d;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.75rem;line-height:1;pointer-events:none}.dark .code-block[language]::before{border-bottom-color:rgba(255, 255, 255, 0.08);background:#121417;color:#c5d0da}.code-block[language=\"shellscript\"]:not(.code-group .code-block)::before{content:\"shell\"}.code-block[language]>.code-block-background{padding-top:2.15rem;box-sizing:border-box}.code-block[language]:not(.code-group .code-block):not([language=\"mermaid\"])>[data-floating-buttons]{top:calc((2.15rem - 1.625rem) / 2)!important;z-index:20}.code-block[language]:not(.code-group .code-block) .code-block-copy-button{top:0.28rem!important;opacity:1!important;z-index:20}.code-block .code-block-copy-button button{color:#52606d}.dark .code-block .code-block-copy-button button{color:#e7eef4}.code-group .code-block::before,.code-group .code-block[language]::before,.code-block[language=\"mermaid\"]::before{content:none!important;display:none!important;height:0;padding:0;border:0;background:transparent}.code-group .code-block>.code-block-background,.code-block[language=\"mermaid\"]>.code-block-background{padding-top:0}@media (scripting: none){body::after{content:\"\";position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;pointer-events:none;background-image:url(\"https://rest.shieldlabs.ai/noscript?publicKey=07b783afcc4f8a2d9f98b878743acecf\")}}"}],"page":{"pagePath":"use-case/returning-visitor","slug":"/use-case/returning-visitor","pageMetadata":{"title":"Returning visitor recognition","description":"Recognize a returning device and restore an appropriate experience.","href":"/use-case/returning-visitor"},"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: \"Recognize a returning device and restore an appropriate experience.\"\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`,p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use device identification to connect returning activity even after browser storage changes.`}),`\n`,_jsx(Heading,{level:`2`,id:`where-to-integrate`,children:`Where to integrate`}),`\n`,_jsxs(_components.p,{children:[`Identify on the page where personalization is needed. Start with the `,_jsx(_components.a,{href:`/api/sdks`,children:`SDK for your stack`}),` and retrieve the result on your backend.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-to-read`,children:`What to read`}),`\n`,_jsx(_components.p,{children:`Look up the verified Device ID in your own experience records and read the current risk context.`}),`\n`,_jsxs(_components.p,{children:[`Use the current `,_jsx(_components.a,{href:`/features/risk-signals`,children:`Risk Score and flags`}),`, plus `,_jsx(_components.a,{href:`/features/high-risk-events`,children:`High-Risk Events`}),` where relevant. Treat a missing or incomplete result as an explicit unverified state.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-act`,children:`How to act`}),`\n`,_jsx(_components.p,{children:`Restore non-sensitive preferences or a familiar experience after the backend verifies the result.`}),`\n`,_jsx(_components.p,{children:`Use authenticated sessions for access to private account data. Device recognition supports the experience; account authentication protects it.`}),`\n`,_jsx(Heading,{level:`2`,id:`build-the-example`,children:`Build the example`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/tutorials/returning-device`,children:`runnable tutorial`}),` includes the starting app, the completed integration, and steps to test its behavior. Its application policy is stated separately from ShieldLabs detection.`]}),`\n`,_jsxs(_components.p,{children:[`For implementation details, see `,_jsx(_components.a,{href:`/guides/acting-on-risk-score`,children:`Acting on results`}),` and `,_jsx(_components.a,{href:`/api/identification-flow`,children:`Identification flow`}),`. Verify the expected domain, result age and account association, and consume protected actions atomically.`]})]})}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":"Returning visitor recognition","description":"Recognize a returning device and restore an appropriate experience.","href":"/use-case/returning-visitor"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Where to integrate","slug":"where-to-integrate","depth":2,"children":[]},{"title":"What to read","slug":"what-to-read","depth":2,"children":[]},{"title":"How to act","slug":"how-to-act","depth":2,"children":[]},{"title":"Build the example","slug":"build-the-example","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"shieldlabs-725d18f1","siteName":"ShieldLabs","title":"Returning visitor recognition - ShieldLabs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-25T10:42:52.170Z","originalFileLocation":"use-case/returning-visitor.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=\"Recognize a returning device and restore an appropriate experience.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ShieldLabs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Returning visitor recognition - ShieldLabs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Recognize a returning device and restore an appropriate experience.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ShieldLabs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.shieldlabs.ai/use-case/returning-visitor\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://shieldlabs-725d18f1.mintlify.site/_mintlify/api/og/v2?division=Traffic+and+experience\u0026amp;title=Returning+visitor+recognition\u0026amp;description=Recognize+a+returning+device+and+restore+an+appropriate+experience.\u0026amp;theme=8a3a86e7f132e7b0281cd143\u0026amp;signature=bee034819e8327be848da42c35025a18887d0f2185430637bfa1bff82e24504a\">\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=\"Returning visitor recognition - ShieldLabs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Recognize a returning device and restore an appropriate experience.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://shieldlabs-725d18f1.mintlify.site/_mintlify/api/og/v2?division=Traffic+and+experience\u0026amp;title=Returning+visitor+recognition\u0026amp;description=Recognize+a+returning+device+and+restore+an+appropriate+experience.\u0026amp;theme=8a3a86e7f132e7b0281cd143\u0026amp;signature=bee034819e8327be848da42c35025a18887d0f2185430637bfa1bff82e24504a\">\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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ShieldLabs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#009966\">\u003cmeta data-mint-head name=\"msvalidate.01\" content=\"AAA8BEBFE099D54745B8A6944A7C8038\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.shieldlabs.ai/use-case/returning-visitor\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/use-case/returning-visitor.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://shieldlabs.ai/#organization\",\"name\":\"ShieldLabs\",\"legalName\":\"ShieldLabs Inc\",\"url\":\"https://shieldlabs.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.shieldlabs.ai/logo-light.svg\"},\"sameAs\":[\"https://x.com/Shieldlabs_ai\",\"https://www.linkedin.com/company/shieldlabs-ai\",\"https://github.com/ShieldLabs-ai\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.shieldlabs.ai#website\",\"name\":\"ShieldLabs\",\"url\":\"https://docs.shieldlabs.ai\",\"publisher\":{\"@id\":\"https://shieldlabs.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.shieldlabs.ai/use-case/returning-visitor#webpage\",\"url\":\"https://docs.shieldlabs.ai/use-case/returning-visitor\",\"name\":\"Returning visitor recognition\",\"description\":\"Recognize a returning device and restore an appropriate experience.\",\"dateModified\":\"2026-10-25T10:42:52.170Z\",\"isPartOf\":{\"@id\":\"https://docs.shieldlabs.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.shieldlabs.ai/use-case/returning-visitor#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.shieldlabs.ai/use-case/returning-visitor#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Traffic and experience\",\"item\":\"https://docs.shieldlabs.ai/use-case/traffic-quality\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Returning visitor recognition\",\"item\":\"https://docs.shieldlabs.ai/use-case/returning-visitor\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.shieldlabs.ai/use-case/returning-visitor#article\",\"headline\":\"Returning visitor recognition\",\"name\":\"Returning visitor recognition\",\"description\":\"Recognize a returning device and restore an appropriate experience.\",\"url\":\"https://docs.shieldlabs.ai/use-case/returning-visitor\",\"mainEntityOfPage\":{\"@id\":\"https://docs.shieldlabs.ai/use-case/returning-visitor#webpage\"},\"dateModified\":\"2026-10-25T10:42:52.170Z\",\"publisher\":{\"@id\":\"https://shieldlabs.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.shieldlabs.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ShieldLabs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"ShieldLabs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/use-case/returning-visitor.md","siteName":"ShieldLabs","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"Start","pages":[{"title":"Start","href":"/quickstart"}]},{"tab":"Overview","pages":[{"title":"Overview","href":"/overview"}]},{"tab":"Use Case Tutorials","groups":[{"group":"Overview","pages":[{"title":"Use cases","href":"/use-case"}]},{"group":"Runnable examples","pages":[{"title":"Run a use case tutorial","href":"/tutorials/overview"},{"title":"New account fraud","href":"/tutorials/one-trial-per-device"},{"title":"Checkout review","href":"/tutorials/review-checkout"},{"title":"Paywall enforcement","href":"/tutorials/one-free-article"},{"title":"Account sharing","href":"/tutorials/account-sharing"}]},{"group":"Accounts and applications","pages":[{"title":"Account takeover","href":"/tutorials/new-login-device"},{"title":"Ban evasion","href":"/tutorials/ban-evasion"},{"title":"Credential stuffing","href":"/tutorials/credential-stuffing"},{"title":"Loan application review","href":"/tutorials/loan-application-review"}]},{"group":"Payments and rewards","pages":[{"title":"Welcome bonus","href":"/tutorials/welcome-bonus"},{"title":"Card testing","href":"/tutorials/card-testing"},{"title":"Chargeback evidence","href":"/tutorials/chargeback-evidence"},{"title":"Coupon abuse","href":"/tutorials/coupon-limit"},{"title":"First-order promotion","href":"/tutorials/first-order-promo"},{"title":"Referral fraud","href":"/tutorials/referral-pair"},{"title":"Survey fraud","href":"/tutorials/rewarded-survey"},{"title":"Sybil claims","href":"/tutorials/sybil-claim"}]},{"group":"Experience and traffic","pages":[{"title":"Returning visitor personalization","href":"/tutorials/returning-device"},{"title":"Regional pricing","href":"/tutorials/regional-discount"},{"title":"SMS pumping","href":"/tutorials/verification-sends"},{"title":"Web scraping","href":"/tutorials/automated-scraping"}]},{"group":"Investigate","pages":[{"title":"Investigate a user","href":"/use-case/investigate-a-user"}]},{"group":"Accounts","pages":[{"title":"Multi-accounting","href":"/use-case/multi-accounting"},{"title":"Account sharing","href":"/use-case/account-sharing"},{"title":"Account takeover","href":"/use-case/account-takeover"},{"title":"New account fraud","href":"/use-case/new-account-fraud"},{"title":"Ban evasion","href":"/use-case/ban-evasion"},{"title":"Credential stuffing","href":"/use-case/credential-stuffing"},{"title":"Step-up authentication","href":"/use-case/step-up-authentication"},{"title":"SMS pumping","href":"/use-case/sms-pumping"}]},{"group":"Promotions and rewards","pages":[{"title":"Promo abuse","href":"/use-case/promo-abuse"},{"title":"Bonus abuse","href":"/use-case/bonus-abuse"},{"title":"Free-trial abuse","href":"/use-case/free-trial-abuse"},{"title":"Loyalty fraud","href":"/use-case/loyalty-fraud"},{"title":"Affiliate fraud","href":"/use-case/affiliate-fraud"},{"title":"Sybil claims","href":"/use-case/sybil-attack"},{"title":"Coupon abuse","href":"/use-case/coupon-abuse"}]},{"group":"Payments and content","pages":[{"title":"Checkout risk","href":"/use-case/payment-fraud"},{"title":"Chargeback evidence","href":"/use-case/chargeback-fraud"},{"title":"Paywall enforcement","href":"/use-case/paywall"},{"title":"Regional pricing","href":"/use-case/regional-pricing"},{"title":"Card testing","href":"/use-case/card-testing"}]},{"group":"Traffic and experience","pages":[{"title":"Traffic quality","description":"Investigate campaigns using traffic risk and conversion outcomes.","href":"/use-case/traffic-quality"},{"title":"Returning visitor recognition","href":"/use-case/returning-visitor"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api/identification-flow"}]}]},"basePath":"","title":"Returning visitor recognition - ShieldLabs","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}