[{"data":1,"prerenderedAt":101},["ShallowReactive",2],{"doc:\u002Fdocs\u002Fvisitor-identification":3},{"page":4,"toc":94,"updated":100},{"path":5,"title":6,"seoTitle":7,"description":8,"blocks":9},"\u002Fdocs\u002Fvisitor-identification","Visitor identification","Visitor IDs, Confidence and Returning Visitors","What a Fingerly visitor ID is, how stable it is, what visitor confidence means, and how to use them to recognise returning devices.",[10,13,18,26,28,31,33,52,55,57,60,62,67,70,87,91],{"type":11,"text":12},"p","Every identification returns a `visitor_id`: a stable identifier for the device, resolved by the server. The same device returns the same visitor ID on its next visit, whether or not it kept its cookies.",{"type":14,"level":15,"text":16,"id":17},"heading",2,"The visitor ID","the-visitor-id",{"type":19,"items":20},"list",[21,22,23,24,25],"Twenty letters and digits, such as `X9pL2mRc7KvT4bQw8NdF`. Treat it as an opaque string.","Issued by Fingerly and never derived from the device's data, so it reveals nothing about the device.","**Scoped to your organization.** The same device on another customer's site has a different visitor ID. Visitor IDs cannot be used to follow people across companies.","The same across your development, staging and production keys.","Always present on a successful identification.",{"type":11,"text":27},"The ID is designed to survive the changes devices go through: browser and operating system updates, new fonts, a different monitor, travel between networks.",{"type":14,"level":15,"text":29,"id":30},"Visitor confidence","visitor-confidence",{"type":11,"text":32},"`visitor_confidence` says how the ID was reached, from 0 to 100.",{"type":34,"columns":35,"rows":39},"table",[36,37,38],"Value","Meaning","How to treat it",[40,44,48],[41,42,43],"`100`","This exact device has been seen before.","A confident returning visitor.",[45,46,47],"`85` to `99`","Recognised after the device changed, such as after an update.","A returning visitor. Lower values mean more change.",[49,50,51],"`0`","Nothing matched, so a new visitor ID was issued.","A new visitor, or one Fingerly could not recognise.",{"type":14,"level":15,"text":53,"id":54},"New visitors","new-visitors",{"type":11,"text":56},"`visitor_is_new` is `true` the first time your organization sees a visitor. Use it for new-account and first-purchase decisions, such as whether a welcome offer should apply.",{"type":14,"level":15,"text":58,"id":59},"When a device cannot be identified","when-a-device-cannot-be-identified",{"type":11,"text":61},"Some browsers and clients give away almost nothing, whether through hardened privacy settings or deliberately. When there is too little to identify anyone, the response has `identifiable: false`:",{"type":19,"items":63},[64,65,66],"A fresh visitor ID is issued each time, so these clients appear as a stream of new visitors. Do not count them as returning or unique.","The request is still scored, and the `fingerprint_suppressed` signal is added.","A production request that is not identifiable costs $0.0005 instead of $0.003.",{"type":14,"level":15,"text":68,"id":69},"Using visitor IDs","using-visitor-ids",{"type":34,"columns":71,"rows":74},[72,73],"Pattern","Example",[75,78,81,84],[76,77],"Limit accounts per device","Refuse a fifth sign-up from one visitor ID in a day.",[79,80],"Recognise a returning customer","Skip a second factor for a known visitor with confidence `100` on their usual account.",[82,83],"Link accounts that share a device","Store the visitor ID with each account, and review accounts that share one.",[85,86],"Enforce one-per-customer offers","Allow one promotion redemption per visitor ID.",{"type":88,"tone":89,"text":90},"callout","tip","Store `visitor_id` alongside your own user, order or session records. Most of the value comes from joining it with what you already know.",{"type":88,"tone":92,"text":93},"note","A visitor ID identifies a device, not a person. Several people can share a device, and one person can use several.",[95,96,97,98,99],{"id":17,"text":16,"level":15},{"id":30,"text":29,"level":15},{"id":54,"text":53,"level":15},{"id":59,"text":58,"level":15},{"id":69,"text":68,"level":15},"2026-09-17T16:57:52.000Z",1789667797513]