PageSourceSearch

https://getverdict.com/help/assets/js/e644c5a2.d9a24d8f.js

js getverdict.com collected 2026-10-02 06:29:45 UTC 29,219 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_verdict_docs=self.webpackChunk_verdict_docs||[]).push([[8323],{13431:(e,r,t)=>{t.d(r,{R:()=>a,x:()=>n});var o=t(22155);const i={},s=o.createContext(i);function a(e){const r=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function n(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(s.Provider,{value:r},e.children)}},23336:(e,r,t)=>{t.d(r,{A:()=>a});t(22155);var o=t(70851);const i={tabItem:"tabItem_BwJB"};var s=t(65723);function a({children:e,hidden:r,className:t}){return(0,s.jsx)("div",{role:"tabpanel",className:(0,o.A)(i.tabItem,t),hidden:r,children:e})}},65670:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>c,metadata:()=>o,toc:()=>h});const o=JSON.parse('{"id":"flows/remember-repeat-customers","title":"Remember verified customers","description":"Real ID can track which of your customers have already completed ID verification once. This way your customers can return and make repeat purchases without requiring ID verification on each purchase.","source":"@site/docs/flows/remember-repeat-customers.mdx","sourceDirName":"flows","slug":"/flows/remember-repeat-customers","permalink":"/help/docs/flows/remember-repeat-customers","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docsSidebar","previous":{"title":"After account registration","permalink":"/help/docs/flows/after-registration"},"next":{"title":"Overview","permalink":"/help/docs/triggers/"}}');var i=t(65723),s=t(13431),a=t(98203),n=t(23336);const c={},l="Remember verified customers",d={},h=[{value:"Enabling Remembering Repeat Customers",id:"enabling-remembering-repeat-customers",level:2},{value:"How are verified customers tracked?",id:"how-are-verified-customers-tracked",level:2},{value:"After checkout flow",id:"after-checkout-flow",level:3},{value:"Before checkout flow",id:"before-checkout-flow",level:3},{value:"From browser cookies",id:"from-browser-cookies",level:4},{value:"From the customers login",id:"from-the-customers-login",level:4},{value:"From the customers email address",id:"from-the-customers-email-address",level:4},{value:"Trusting the email address without a code",id:"trusting-the-email-address-without-a-code",level:4},{value:"How can I tell in my store admin if a customer is considered verified?",id:"how-can-i-tell-in-my-store-admin-if-a-customer-is-considered-verified",level:2},{value:"Expired IDs",id:"expired-ids",level:2},{value:"Example",id:"example",level:3},{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"Does this feature work with manually approved customers?",id:"does-this-feature-work-with-manually-approved-customers",level:2},{value:"Does this work with the before checkout and before viewing store flows?",id:"does-this-work-with-the-before-checkout-and-before-viewing-store-flows",level:2},{value:"How can I pre-approve customers in the <strong>before checkout</strong> flow?",id:"how-can-i-pre-approve-customers-in-the-before-checkout-flow",level:2},{value:"Do I need to require customers to have an account to be remembered for future purchases?",id:"do-i-need-to-require-customers-to-have-an-account-to-be-remembered-for-future-purchases",level:2}];function u(e){const r={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.header,{children:(0,i.jsx)(r.h1,{id:"remember-verified-customers",children:"Remember verified customers"})}),"\n",(0,i.jsx)(r.p,{children:"Real ID can track which of your customers have already completed ID verification once. This way your customers can return and make repeat purchases without requiring ID verification on each purchase."}),"\n",(0,i.jsx)(r.p,{children:"If enabled, Real ID will remember repeat customers and not require already verified customers to provide photos again."}),"\n",(0,i.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/r8pG4V2CLuk",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),"\n",(0,i.jsx)(r.h2,{id:"enabling-remembering-repeat-customers",children:"Enabling Remembering Repeat Customers"}),"\n",(0,i.jsxs)(r.p,{children:["In the settings of the app, open the ",(0,i.jsx)(r.strong,{children:"Automations"})," tab. If you're using ID verification after checkout open the ",(0,i.jsx)(r.strong,{children:"Exceptions"})," tab."]}),"\n",(0,i.jsxs)(r.p,{children:["Then click the checkbox next to ",(0,i.jsx)(r.strong,{children:"Customers only need to verify once"})," to enable the feature."]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.img,{src:"https://res.cloudinary.com/tinyhouse/image/upload/v1686326539/Real%20ID/Docs/file-rsQE6fqQFn_1.png",alt:"How to enable remember repeat ID verified customers"})}),"\n",(0,i.jsx)(r.h2,{id:"how-are-verified-customers-tracked",children:"How are verified customers tracked?"}),"\n",(0,i.jsx)(r.p,{children:"Real ID will associate the completed ID check with your customer's account on your store. There are some differences between the out of the box ID verification flows, we'll go into those details below."}),"\n",(0,i.jsx)(r.h3,{id:"after-checkout-flow",children:"After checkout flow"}),"\n",(0,i.jsx)(r.p,{children:"When a already verified customer returns to your store to checkout again, Real ID will automatically find the completed or manually verified ID check in the database of your store's ID checks and count the customer as verified."}),"\n",(0,i.jsxs)(a.A,{children:[(0,i.jsxs)(n.A,{value:"shopify",label:"Shopify",children:[(0,i.jsxs)(r.p,{children:["On Shopify, customer profiles with the ",(0,i.jsx)(r.code,{children:"ID verification completed"})," or ",(0,i.jsx)(r.code,{children:"ID check manually approved"})," tags are considered verified."]}),(0,i.jsxs)(r.p,{children:["Real ID ",(0,i.jsx)(r.a,{href:"/help/docs/sh
1opify/tags",children:"automatically updates tags on orders and customers"})," during the ID check lifecycle. If a returning verified customer places an order using the same email address ",(0,i.jsx)(r.em,{children:"or"})," the is logged into their account on your store before placing the order, then Shopify will associate that order with their prior account that includes the ",(0,i.jsx)(r.code,{children:"ID verification completed"})," or ",(0,i.jsx)(r.code,{children:"ID check manually approved"})," tags."]}),(0,i.jsx)(r.p,{children:"Real ID will receive this order notification and see that the customer is already verified, so the returning customer won't be prompted for verification on their new order."})]}),(0,i.jsxs)(n.A,{value:"woocommerce",label:"WooCommerce",children:[(0,i.jsxs)(r.p,{children:["On WooCommerce, customer profiles with the ",(0,i.jsx)(r.code,{children:"real_id_check_status"})," set to ",(0,i.jsx)(r.code,{children:"completed"})," or ",(0,i.jsx)(r.code,{children:"manually_approved"})," will be considered verified. Real ID automatically ",(0,i.jsx)(r.a,{href:"/help/docs/woocommerce/metadata",children:"updates metadata"})," on both orders and customers during the ID verification lifecycle."]}),(0,i.jsxs)(r.p,{children:["If an already verified customer returns using the same email address as their prior order ",(0,i.jsx)(r.em,{children:"or"})," they are logged into their account before purchasing, then Real ID will not prompt the customer to verify again."]})]}),(0,i.jsxs)(n.A,{value:"bigcommerce",label:"BigCommerce",children:[(0,i.jsxs)(r.p,{children:["On BigCommerce, Real ID tracks verified customers using ",(0,i.jsx)(r.a,{href:"/help/docs/bigcommerce/metadata",children:"metafields"})," under the ",(0,i.jsx)(r.code,{children:"realid"})," namespace. When a customer completes ID verification, their customer profile's ",(0,i.jsx)(r.code,{children:"realid.verification_status"})," metafield is set to ",(0,i.jsx)(r.code,{children:"verified"})," (or ",(0,i.jsx)(r.code,{children:"manually_approved"})," if a staff member manually approved the check)."]}),(0,i.jsx)(r.p,{children:"When an already verified customer places a new order, Real ID will look up the customer by their BigCommerce customer ID and find the completed ID check in the database. If a prior verified check is found, the customer won't be prompted for verification on their new order."})]}),(0,i.jsxs)(n.A,{value:"custom",label:"Custom",children:[(0,i.jsxs)(r.p,{children:["For custom integrations, Real ID tracks verified customers by their email address. When a returning customer starts the ",(0,i.jsx)(r.a,{href:"/help/docs/js",children:"JS SDK"})," flow or a new check is created via the ",(0,i.jsx)(r.a,{href:"/help/docs/api/checks",children:"REST API"}),", Real ID will look up prior completed checks by the customer's email."]}),(0,i.jsx)(r.p,{children:"If the customer has a prior completed or manually approved check, the JS SDK will automatically recognize them as verified \u2014 no additional integration is required on your end."})]})]}),"\n",(0,i.jsx)(r.h3,{id:"before-checkout-flow",children:"Before checkout flow"}),"\n",(0,i.jsx)(r.p,{children:"If you're requiring ID verification before or during checkout, before the order is placed, then Real ID uses three different methods to determine if a returning customer is already verified:"}),"\n",(0,i.jsxs)(r.ol,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#from-browser-cookies",children:"From browser cookies"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#from-the-customers-login",children:"From the customers login (recommended)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#from-the-customers-email-address",children:"From the customers email address"})}),"\n"]}),"\n",(0,i.jsx)(r.admonition,{type:"info",children:(0,i.jsxs)(r.p,{children:["In the ",(0,i.jsx)(r.strong,{children:"before checkout"})," flow, Real ID does ",(0,i.jsx)(r.strong,{children:"not"})," use tags or metafields to consider the customer verified."]})}),"\n",(0,i.jsx)(r.h4,{id:"from-browser-cookies",children:"From browser cookies"}),"\n",(0,i.jsx)(r.p,{children:"Because customers can be unregistered at the time they verify their ID, Real ID will place a cookie within their browser to mark them as verified. The
1n after the customer completes checkout, their account will be associated with the ID check in Real ID's database."}),"\n",(0,i.jsx)(r.p,{children:"That way, if the customer switches browsers or devices in the future, they can still login to their acccount on your store and remain verified."}),"\n",(0,i.jsx)(r.p,{children:"However, this is the most brittle of the methods. Customers may switch devices, or browsers, or have their browsers to block cookies."}),"\n",(0,i.jsx)(r.p,{children:"If an unregistered customer blocks cookies, they'll still be able to verify their ID as well as look it up using their email address when returning to your store."}),"\n",(0,i.jsx)(r.h4,{id:"from-the-customers-login",children:"From the customers login"}),"\n",(0,i.jsx)(r.p,{children:"Customers can also log into their account on your store and Real ID will automatically recognize them as verified."}),"\n",(0,i.jsx)(r.p,{children:"After the customer logs in, Real ID will not require them to verify their ID again. Instead they'll be able to checkout directly."}),"\n",(0,i.jsx)(r.p,{children:"For this feature to work properly, we highly recommend enabling customer accounts and allowing customers to login to their accounts."}),"\n",(0,i.jsx)(r.h4,{id:"from-the-customers-email-address",children:"From the customers email address"}),"\n",(0,i.jsx)(r.p,{children:"If a returning customer isn't logged in, but they enter in the same email address from their account, then Real ID will recognize their past ID check."}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.img,{src:"https://res.cloudinary.com/tinyhouse/image/upload/v1713990821/Real%20ID/Docs/Already%20verified%20customers/CleanShot_2024-04-24_at_16.33.30.png",alt:"The pop up window shown to customers if they enter in the same email address as another ID check used on your storefront. The customer is shown a form with a single field that accepts a 6 digit unique code to confirm ownership of their email address."})}),"\n",(0,i.jsx)(r.p,{children:"The customer will be sent a 6 digit confirmation code to their email inbox. When the customer enters\nin this 6 digit code into the Real ID prompt, it will automatically load their corresponding ID check."}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.img,{src:"https://res.cloudinary.com/tinyhouse/image/upload/v1713990914/Real%20ID/Docs/Already%20verified%20customers/CleanShot_2024-04-24_at_16.17.58.png",alt:"The email sent to the customer that shows their confirmation code to use on your website."})}),"\n",(0,i.jsx)(r.p,{children:"If they have a prior verified or manually approved ID check, then the customer will be able to complete the order."}),"\n",(0,i.jsx)(r.p,{children:"This way, even if the customer isn't logged in, Real ID will recognize their already completed ID check."}),"\n",(0,i.jsxs)(r.admonition,{type:"info",children:[(0,i.jsx)(r.p,{children:"This feature includes ID checks that are in progress, in review, or manually rejected by your staff."}),(0,i.jsx)(r.p,{children:"If you'd like to allow the customer to try again, use the resend ID check feature to send the customer a brand new ID check for them to attempt again."})]}),"\n",(0,i.jsx)(r.admonition,{type:"tip",children:(0,i.jsx)(r.p,{children:"You are not charged for customers that return using their prior ID check from a confirmation code."})}),"\n",(0,i.jsx)(r.h4,{id:"trusting-the-email-address-without-a-code",children:"Trusting the email address without a code"}),"\n",(0,i.jsx)(r.p,{children:"By default, returning customers must enter a 6 digit confirmation code to prove they own the email address before their prior ID check is loaded."}),"\n",(0,i.jsx)(r.p,{children:"If you'd prefer a faster experience, you can turn this requirement off so that a returning customer who enters a matching email is recognized automatically \u2014 no confirmation code is sent or required."}),"\n",(0,i.jsxs)(r.p,{children:["To change this, open the ",(0,i.jsx)(r.strong,{children:"Settings"})," area and make sure repeat customer remembering is enabled. Then in the ",(0,i.jsx)(r.strong,{children:"Email verification for returning customers"})," section, turn off ",(0,i.jsx)(r.strong,{children:"Require email confirmation code for returning customers"}),"."]}),"\n",(0,i.jsx)(r.p,{children:"This setting works the same way on Shopify, WooCommerce, and BigCommerce."}),"\n",(0,i.jsx)(r.admonition,{title:"Consider the security trade-off",type:"caution",children:(0,i.jsx)(r.p,{children:"When the confirmation code is disabled, anyone who enters a previously verified email address is treated as that verified customer \u2014 without proving they actually own the inbox. We recommend keeping the confirmation code enabled unless you have a specific reason to trust email entry, such as a checkout where the email is already verified by your platform."})}),"\n",(0,i.jsx)(r.h2,{id:"how-can-i-tell-in-my-store-admin-if-a-customer-is-considered-verified",children:"How can I tell in my store admin if a customer is considered verified?"}),"\n",(0,i.jsx)(r.p,{children:"You can view your customers verification status witin y
1our eCommerce platform's dashboard."}),"\n",(0,i.jsxs)(a.A,{children:[(0,i.jsxs)(n.A,{value:"shopify",label:"Shopify",children:[(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.a,{href:"/help/docs/shopify/tags",children:"Real ID automatically tags orders and customer profiles"})," in your Shopify dashboard. When a customer completes ID verification, their profile is tagged with ",(0,i.jsx)(r.code,{children:"ID verification completed"}),". Additionally, if you elect to manually approve an ID check, the customer will be tagged with ",(0,i.jsx)(r.code,{children:"ID check manually approved"}),". Either one of these tags counts the customer as permanently verified for future orders."]}),(0,i.jsx)(r.p,{children:(0,i.jsx)(r.img,{src:"https://res.cloudinary.com/tinyhouse/image/upload/v1686326768/Real%20ID/Docs/file-NvqznrNH8q.png",alt:'Example of an order tagged with "ID verification completed" so the customer isn\'t prompted for ID checking on future orders'})}),(0,i.jsx)(r.admonition,{title:"Tags can be edited outside of Real ID's control",type:"note",children:(0,i.jsx)(r.p,{children:"Since tags can be modified in the Shopify Admin, they do not dictate if an order is verified or not. The customer must have a prior completed or manually approved ID check to be considered verified."})}),(0,i.jsx)(r.p,{children:"Additionally, Real ID also updates the metafields on the customer's account as they complete ID verification."}),(0,i.jsx)(r.p,{children:"You can view the metafields of a customer within your Shopify dashboard, by visiting the customer's profile."}),(0,i.jsx)(r.p,{children:"Metafields are also accessible in your store's theme within liquid templates, which allows you to craft feedback to the customer in their account page if they are verified."})]}),(0,i.jsxs)(n.A,{value:"woocommerce",label:"WooCommerce",children:[(0,i.jsx)(r.p,{children:"Real ID uses meta data on the customer's user profile to store their ID verification status."}),(0,i.jsx)(r.p,{children:"You can view this meta within your theme, or within the WordPress dashboard."})]}),(0,i.jsxs)(n.A,{value:"bigcommerce",label:"BigCommerce",children:[(0,i.jsxs)(r.p,{children:["Real ID uses ",(0,i.jsx)(r.a,{href:"/help/docs/bigcommerce/metadata",children:"metafields"})," on both customer and order profiles to store ID verification status. The ",(0,i.jsx)(r.code,{children:"realid.verification_status"})," metafield reflects the current state of the customer's ID check (e.g., ",(0,i.jsx)(r.code,{children:"verified"}),", ",(0,i.jsx)(r.code,{children:"manually_approved"}),", ",(0,i.jsx)(r.code,{children:"failed"}),")."]}),(0,i.jsxs)(r.p,{children:["You can view a customer's verification status directly from the BigCommerce admin using the Real ID ",(0,i.jsx)(r.a,{href:"/help/docs/bigcommerce/viewing-ids#from-customer-details",children:"customer panel"}),", which shows the current verification status and a full history of all ID checks for that customer."]}),(0,i.jsxs)(r.p,{children:["You can also access these metafields programmatically through the ",(0,i.jsx)(r.a,{href:"https://developer.bigcommerce.com/docs/rest-management/customers/customer-metafields",children:"BigCommerce Metafields API"}),"."]})]}),(0,i.jsxs)(n.A,{value:"custom",label:"Custom",children:[(0,i.jsxs)(r.p,{children:["You can view the verification status for any customer's ID check in the Real ID dashboard, or retrieve it programmatically via the ",(0,i.jsx)(r.a,{href:"/help/docs/api/checks#retrieve-an-id-check",children:"REST API"}),"."]}),(0,i.jsxs)(r.p,{children:["The check's ",(0,i.jsx)(r.code,{children:"step"})," field indicates the current status \u2014 ",(0,i.jsx)(r.code,{children:"completed"})," for verified customers, ",(0,i.jsx)(r.code,{children:"in_review"})," for pending manual review, and so on. Use ",(0,i.jsx)(r.a,{href:"/help/docs/api/webhooks",children:"webhooks"})," to get notified in real time when a customer's status changes."]})]})]}),"\n",(0,i.jsx)(r.h2,{id:"expired-ids",children:"Expired IDs"}),"\n",(0,i.jsx)(r.p,{children:"IDs such as driver's licenses commonly feature an expiration date. After the expiration date passes, the ID is no longer valid. For example, a U.S. issued drivers license can be unexpired at the time of verification, but in the future that ID's expiration date will pass and the ID is no longer valid."}),"\n",(0,i.jsx)(r.p,{children:"Real ID will automatically invalidate expired IDs for you, so that way you can tell the ID is now expired:"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:["On ",(0,i.jsx)(r.strong,{children:"Shopify"}),", the customer's profile tag is updated to ",(0,i.jsx)(r.code,{children:"ID expired"}),"."]}),"\n",(0,i.jsxs)(r.li,{children:["On ",(0,i.jsx)(r.strong,{children:"WooCommerce"}),", the customer and order ",(0,i.jsxs)(r.a,{href:"/help/docs/woocommerce/metadata",children:[(0,i.jsx)(r.code,{children:"real_id_check_status"})," metadata"]})," is set to ",(0,i.jsx)(r.code,{children:"expired"}),". The order's WooCommerce status is left unchanged."]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:"The next time the customer returns to place an order, they will be prompted to verify their ID again."}),"\n",(0,i.jsx)(r.h3,{id:"example",children:"Example"}),"\n",(0,i.jsx)(r.p,{children:"A customer Jane Doe verified her ID for her purchase on your store. Her ID isn't set to expire until January 1st 2030. Jane Doe will be automatically verified for future purchases."}),"\n",(0,i.jsxs)(r.p,{children:["After January 1st 2030 Jane's ID will be expired and no longer valid. Real ID will automatically update her profile to ",(0,i.jsx)(r.code,{children:"ID expired"})," which will invalidate her ID. The next time Jane makes a purchase from your store, she will be prompted to verify her ID once more."]}),"\n",(0,i.jsxs)(r.admonition,{title:"IDs without expiration",type:"note",children:[(0,i.jsxs)(r.p,{children:["Some forms of ID do not feature an expiration date, or Real ID may not be able to confidently read the expiration date on the ID and the ID is ",(0,i.jsx)(r.a,{href:"/help/docs/for-merchants/
1overridding-results",children:"manually approved"})," by your staff."]}),(0,i.jsx)(r.p,{children:"In these cases, Real ID will not be able expire these IDs automatically because there is not expiration date to invalidate."})]}),"\n",(0,i.jsx)(r.h2,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,i.jsx)(r.h2,{id:"does-this-feature-work-with-manually-approved-customers",children:"Does this feature work with manually approved customers?"}),"\n",(0,i.jsx)(r.p,{children:"Yes! If you manually approve a check, Real ID will also count this as a successful verification."}),"\n",(0,i.jsx)(r.p,{children:'Manually approving an ID check will tag the customer with "ID check manually approved", and future orders will count as verified.'}),"\n",(0,i.jsxs)(r.admonition,{title:"Manual approval can happen without ID photos submitted from the customer",type:"tip",children:[(0,i.jsx)(r.p,{children:"You can manually approve an ID check at any time, even if the customer has not actually submitted any photos."}),(0,i.jsx)(r.p,{children:"Please be certain you intend to manually override a customer's ID verification for their order or account, because on future purchases they will not be prompted again if manually overridden."})]}),"\n",(0,i.jsx)(r.h2,{id:"does-this-work-with-the-before-checkout-and-before-viewing-store-flows",children:"Does this work with the before checkout and before viewing store flows?"}),"\n",(0,i.jsx)(r.p,{children:"Yes, by default Real ID will remember your already verified customers if you decide to require ID verification before checkout or before customers can view your store."}),"\n",(0,i.jsxs)(r.h2,{id:"how-can-i-pre-approve-customers-in-the-before-checkout-flow",children:["How can I pre-approve customers in the ",(0,i.jsx)(r.strong,{children:"before checkout"})," flow?"]}),"\n",(0,i.jsx)(r.p,{children:"You can pre-approve customers in the before checkout flow by starting an ID check manually for them, and then manually approving the ID check immediately after sending it."}),"\n",(0,i.jsxs)(r.p,{children:["That way, an ID check is created in Real ID's database for that account, and ",(0,i.jsx)(r.a,{href:"#from-the-customers-email-address",children:"they can use their email address at checkout"})," to link the ID check to their account."]}),"\n",(0,i.jsx)(r.p,{children:"They will not be prompted to submit photos, and their already manually approved check will be used."}),"\n",(0,i.jsx)(r.h2,{id:"do-i-need-to-require-customers-to-have-an-account-to-be-remembered-for-future-purchases",children:"Do I need to require customers to have an account to be remembered for future purchases?"}),"\n",(0,i.jsx)(r.p,{children:"No, this is not required."}),"\n",(0,i.jsx)(r.p,{children:"Real ID associates a verified ID with the customer's account as well as their email address used for their order. That way even if the customer doesn't have an account with your store, we can use their email address to look up their verified ID automatically."})]})}function m(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},98203:(e,r,t)=>{t.d(r,{A:()=>j});var o=t(22155),i=t(70851),s=t(10803),a=t(20856),n=t(33387),c=t(74020),l=t(94829),d=t(53502);function h(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:r}=e;return!!r&&"object"==typeof r&&"value"in r}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function u(e){const{values:r,children:t}=e;return(0,o.useMemo)((()=>{const e=r??function(e){return h(e).map((({props:{value:e,label:r,attributes:t,default:o}})=>({value:e,label:r,attributes:t,default:o})))}(t);return function(e){const r=(0,l.XI)(e,((e,r)=>e.value===r.value));if(r.length>0)throw new Error(`Docusaurus error: Duplicate values "${r.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[r,t])}function m({value:e,tabValues:r}){return r.some((r=>r.value===e))}function f({queryString:e=!1,groupId:r}){const t=(0,a.W6)(),i=function({queryString:e=!1,groupId:r}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!r)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:e,groupId:r});return[(0,c.aZ)(i),(0,o.useCallback)((e=>{if(!i)return;
1const r=new URLSearchParams(t.location.search);r.set(i,e),t.replace({...t.location,search:r.toString()})}),[i,t])]}function p(e){const{defaultValue:r,queryString:t=!1,groupId:i}=e,s=u(e),[a,c]=(0,o.useState)((()=>function({defaultValue:e,tabValues:r}){if(0===r.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!m({value:e,tabValues:r}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=r.find((e=>e.default))??r[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:r,tabValues:s}))),[l,h]=f({queryString:t,groupId:i}),[p,v]=function({groupId:e}){const r=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,i]=(0,d.Dv)(r);return[t,(0,o.useCallback)((e=>{r&&i.set(e)}),[r,i])]}({groupId:i}),y=(()=>{const e=l??p;return m({value:e,tabValues:s})?e:null})();(0,n.A)((()=>{y&&c(y)}),[y]);return{selectedValue:a,selectValue:(0,o.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);c(e),h(e),v(e)}),[h,v,s]),tabValues:s}}var v=t(75625);const y={tabList:"tabList_wD9k",tabItem:"tabItem_Y9fE"};var w=t(65723);function x({className:e,block:r,selectedValue:t,selectValue:o,tabValues:a}){const n=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.a_)(),l=e=>{const r=e.currentTarget,i=n.indexOf(r),s=a[i].value;s!==t&&(c(r),o(s))},d=e=>{let r=null;switch(e.key){case"Enter":l(e);break;case"ArrowRight":{const t=n.indexOf(e.currentTarget)+1;r=n[t]??n[0];break}case"ArrowLeft":{const t=n.indexOf(e.currentTarget)-1;r=n[t]??n[n.length-1];break}}r?.focus()};return(0,w.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":r},e),children:a.map((({value:e,label:r,attributes:o})=>(0,w.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{n.push(e)},onKeyDown:d,onClick:l,...o,className:(0,i.A)("tabs__item",y.tabItem,o?.className,{"tabs__item--active":t===e}),children:r??e},e)))})}function b({lazy:e,children:r,selectedValue:t}){const s=(Array.isArray(r)?r:[r]).filter(Boolean);if(e){const e=s.find((e=>e.props.value===t));return e?(0,o.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,w.jsx)("div",{className:"margin-top--md",children:s.map(((e,r)=>(0,o.cloneElement)(e,{key:r,hidden:e.props.value!==t})))})}function g(e){const r=p(e);return(0,w.jsxs)("div",{className:(0,i.A)("tabs-container",y.tabList),children:[(0,w.jsx)(x,{...r,...e}),(0,w.jsx)(b,{...r,...e})]})}function j(e){const r=(0,v.A)();return(0,w.jsx)(g,{...e,children:h(e.children)},String(r))}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.