PageSourceSearch

https://orki.ai/docs/assets/js/c0cbfe40.067bbf19.js

js orki.ai collected 2026-10-05 16:12:11 UTC 20,675 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkorki_docs=globalThis.webpackChunkorki_docs||[]).push([[5762],{6145(e,t,s){s.d(t,{R:()=>a,x:()=>l});var n=s(7140);const r={},i=n.createContext(r);function a(e){const t=n.useContext(i);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(i.Provider,{value:t},e.children)}},7804(e,t,s){s.d(t,{A:()=>n});const n=s.p+"assets/images/attribute-validation-f1094ffc1b040a1ff89f4fbd56180fb4.png"},9622(e,t,s){s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"customers/attributes","title":"Custom Attributes","description":"Custom attributes let you extend customer profiles with your own fields beyond the built-in name, email, and phone number. Use them to store business-specific data \u2014 like customer tier, product interest, or account type \u2014 and then filter, segment, and target customers based on those values.","source":"@site/docs/customers/attributes.md","sourceDirName":"customers","slug":"/customers/attributes","permalink":"/docs/customers/attributes","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3},"sidebar":"tutorialSidebar","previous":{"title":"Customer Profile","permalink":"/docs/customers/profile"},"next":{"title":"Customer Segments","permalink":"/docs/customers/segments"}}');var r=s(5656),i=s(6145);const a={sidebar_position:3},l="Custom Attributes",d={},c=[{value:"What Are Custom Attributes?",id:"what-are-custom-attributes",level:2},{value:"Creating Attributes",id:"creating-attributes",level:2},{value:"Data Types",id:"data-types",level:2},{value:"Validation Rules",id:"validation-rules",level:2},{value:"Personal Data Type",id:"personal-data-type",level:2},{value:"Enum Attributes",id:"enum-attributes",level:2},{value:"How the AI Agent Uses Attributes",id:"how-the-ai-agent-uses-attributes",level:2},{value:"Reading Attributes",id:"reading-attributes",level:3},{value:"Updating Attributes",id:"updating-attributes",level:3},{value:"Example Flow",id:"example-flow",level:3},{value:"Using Attributes in Filtering",id:"using-attributes-in-filtering",level:2},{value:"Using Attributes in Segments",id:"using-attributes-in-segments",level:2},{value:"Using Attributes in Campaigns and Broadcasts",id:"using-attributes-in-campaigns-and-broadcasts",level:2},{value:"Best Practices",id:"best-practices",level:2},{value:"Where to Find It",id:"where-to-find-it",level:2}];function o(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"custom-attributes",children:"Custom Attributes"})}),"\n",(0,r.jsx)(t.p,{children:"Custom attributes let you extend customer profiles with your own fields beyond the built-in name, email, and phone number. Use them to store business-specific data \u2014 like customer tier, product interest, or account type \u2014 and then filter, segment, and target customers based on those values."}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"what-are-custom-attributes",children:"What Are Custom Attributes?"}),"\n",(0,r.jsxs)(t.p,{children:["Every customer in Orki has standard fields (name, email, phone, language, country, tags). Custom attributes add ",(0,r.jsx)(t.strong,{children:"your own fields"})," to every customer profile, tailored to your business needs. For example:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["A ",(0,r.jsx)(t.code,{children:"tier"})," attribute to classify customers as bronze, silver, gold, or platinum"]}),"\n",(0,r.jsxs)(t.li,{children:["An ",(0,r.jsx)(t.code,{children:"interest"})," attribute to track what product or service they're interested in"]}),"\n",(0,r.jsxs)(t.li,{children:["A ",(0,r.jsx)(t.code,{children:"companySize"})," attribute to store the number of employees"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Once created, custom attributes appear on the customer profile, are available in filters and segments, and are accessible to AI agents during conversations."}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"creating-attributes",children:"Creating Attributes"}),"\n",(0,r.jsxs)(t.p,{children:["Navigate to ",(0,r.jsx)(t.strong,{children:"Customers > Custom Attributes"})," to create and manage custom attributes."]}),"\n",(0,r.jsx)(t.p,{children:"To create a new attribute:"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["Click ",(0,r.jsx)(t.strong,{children:"Add Attribute"})]}),"\n",(0,r.jsxs)(t.li,{children:["Enter a descriptive ",(0,r.jsx)(t.strong,{children:"name"})," (this is the key the AI agent sees)"]}),"\n",(0,r.jsxs)(t.li,{children:["Choose the ",(0,r.jsx)(t.strong,{children:"data type"})]}),"\n",(0,r.jsx)(t.li,{children:"For Enum types, define the list of allowed values"}),"\n",(0,r.jsxs)(t.li,{children:["Optionally set ",(0,r.jsx)(t.strong,{children:"Validation"})," rules for the type \u2014 see ",(0,r.jsx)(t.a,{href:"#validation-rules",children:"Validation Rules"})]}),"\n",(0,r.jsxs)(t.li,{children:["Optionally fill in a ",(0,r.jsx)(t.strong,{children:"Description"}),", a ",(0,r.jsx)(t.strong,{children:"Default Value"}),", and an ",(0,r.jsx)(t.strong,{children:"Example Value"})]}),"\n",(0,r.jsxs)(t.li,{children:["If the attribute holds personal data, set ",(0,r.jsx)(t.strong,{children:"Personal data type"})," \u2014 see below"]}),"\n",(0,r.jsx)(t.li,{children:"Save"}),"\n"]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"data-types",children:"Data Types"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Data Type"}),(0,r.jsx)(t.th,{children:"Description"}),(0,r.jsx)(t.th,{children:"Example Values"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Text"})}),(0,r.jsx)(t.td,{children:"Free-form string"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:'"Interested in Pro plan"'}),", ",(0,r.jsx)(t.code,{children:'"Muscat branch"'})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Number"})}),(0,r.jsx)(t.td,{children:"Numeric value (integer or decimal)"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:"500"}),", ",(0,r.jsx)(t.code,{children:"3.5"}),", ",(0,r.jsx)(t.code,{children:"12000"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Enum"})}),(0,r.jsx)(t.td,{children:"One value from a predefined list"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:'"gold"'})," from ",(0,r.jsx)(t.code,{children:"[bronze, silver, gold, platinum]"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Boolean"})}),(0,r.jsx)(t.td,{children:"True or false"}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:"true"}),", ",(0,r.jsx)(t.code,{children:"false"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Date"})}),(0,r.jsx)(t.td,{children:"A calendar date"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"2026-09-25"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Date & time"})}),(0,r.jsx)(t.td,{children:"A date with a time, stored with its timezone offset"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"2026-09-25T17:00:00+04:00"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Array"})}),(0,r.jsx)(t.td,{children:"List of values"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:'["electronics", "home", "garden"]'})})]})]})]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"validation-rules",children:"Validation Rules"}),"\n",(0,r.jsxs)(t.p,{children:["Text, Number, Date, and Date & time attributes accept optional rules \u2014 ",(0,r.jsx)(t.a,{href:"../ai-agents/forms/overview#validation-rules",children:"the same rules forms use"}),":"]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Rules"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Number"})}),(0,r.jsx)(t.td,{children:"Minimum and maximum value"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Text"})}),(0,r.jsxs)(t.td,{children:["Min/max length \xb7 a ",(0,r.jsx)(t.strong,{children:"Format"})," (regular expression) with a ",(0,r.jsx)(t.strong,{children:"Format hint"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Date, Date & time"})}),(0,r.jsx)(t.td,{children:"Allow past / allow future \xb7 earliest and latest date, in days from today"})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Validation rules on an attribute",src:s(7804).A+"",width:"1912",height:"960"})}),"\n",(0,r.jsxs)(t.p,{children:["When the AI captures an attribute during a conversation, the value is checked against its rules ",(0,r.jsx)(t.strong,{children:"before"})," anything is written to the customer record. An invalid value is never stored \u2014 the AI is told the rule, so it can ask the customer again with the reason. The ",(0,r.jsx)(t.strong,{children:"Format hint"})," is the only thing the AI (or the customer) ever sees of a regular expression, so write it in plain language."]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"personal-data-type",children:"Personal Data Type"}),"\n",(0,r.jsxs)(t.p,{children:["If an attribute stores something sensitive \u2014 a national ID, an account number, a second phone number \u2014 set ",(0,r.jsx)(t.strong,{children:"Personal data type (optional)"})," on the attribute."]}
1),"\n",(0,r.jsxs)(t.p,{children:["The effect is described in the dialog itself: ",(0,r.jsx)(t.em,{children:'"Values of this attribute are hidden from dashboard users below the matching access level."'})," A civil ID becomes readable to admins only; a phone number to agents and above."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Setting"}),(0,r.jsx)(t.th,{children:"Result"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.strong,{children:"Not personal data"})," (default)"]}),(0,r.jsx)(t.td,{children:"Everyone who can see the customer sees the value"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Name \xb7 Email \xb7 Phone number \xb7 Civil ID \xb7 CR number \xb7 IBAN \xb7 Bank account"}),(0,r.jsx)(t.td,{children:"Masked for staff below that type's access level"})]})]})]}),"\n",(0,r.jsx)(t.admonition,{title:"This controls your team's visibility, not the AI's",type:"note",children:(0,r.jsxs)(t.p,{children:["It decides who in the dashboard can read the value. Masking what the AI model receives is a separate, workspace-level setting \u2014 see ",(0,r.jsx)(t.a,{href:"../settings/privacy",children:"Personal Data Masking"}),"."]})}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"enum-attributes",children:"Enum Attributes"}),"\n",(0,r.jsx)(t.p,{children:"Enum attributes are especially powerful because they restrict values to a predefined list. This ensures data consistency and makes the attribute reliable for filtering and AI usage."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Example enum attributes:"})}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Attribute Name"}),(0,r.jsx)(t.th,{children:"Allowed Values"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"tier"})}),(0,r.jsx)(t.td,{children:"bronze, silver, gold, platinum"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"status"})}),(0,r.jsx)(t.td,{children:"lead, prospect, customer, churned"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"interest"})}),(0,r.jsx)(t.td,{children:"Starter, Business Pro, Enterprise"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"department"})}),(0,r.jsx)(t.td,{children:"Sales, Support, Billing, Technical"})]})]})]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"how-the-ai-agent-uses-attributes",children:"How the AI Agent Uses Attributes"}),"\n",(0,r.jsx)(t.p,{children:"Custom attributes are deeply integrated with Orki's AI agents, enabling personalized and context-aware conversations."}),"\n",(0,r.jsx)(t.h3,{id:"reading-attributes",children:"Reading Attributes"}),"\n",(0,r.jsxs)(t.p,{children:["Customer attributes are ",(0,r.jsx)(t.strong,{children:"automatically included in the AI agent's context"})," when a conversation starts. The agent can see all attribute key-value pairs and use them to personalize responses."]}),"\n",(0,r.jsxs)(t.p,{children:["For example, if a customer has ",(0,r.jsx)(t.code,{children:"tier: gold"}),", the agent knows they are a high-value customer and can adjust its tone and offers accordingly."]}),"\n",(0,r.jsx)(t.h3,{id:"updating-attributes",children:"Updating Attributes"}),"\n",(0,r.jsxs)(t.p,{children:["AI agents can ",(0,r.jsx)(t.strong,{children:"update customer attributes"})," during a conversation using built-in tools. This lets the agent capture and store information as it learns about the customer."]}),"\n",(0,r.jsx)(t.h3,{id:"example-flow",children:"Example Flow"}),"\n",(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsx)(t.li,{children:"A customer messages your WhatsApp number"}),"\n",(0,r.jsxs)(t.li,{children:["The AI agent sees their current attributes (e.g., ",(0,r.jsx)(t.code,{children:"tier: silver"}),", ",(0,r.jsx)(t.code,{children:"interest: null"}),")"]}),"\n",(0,r.jsx)(t.li,{children:"During the conversation, the agent asks about their needs"}),"\n",(0,r.jsxs)(t.li,{children:["The agent sets ",(0,r.jsx)(t.code,{children:'interest: "Business Pro"'})," based on the conversation"]}),"\n",(0,r.jsxs)(t.li,{children:["Later, a marketing campaign targets all customers where ",(0,r.jsx)(t.code,{children:'interest = "Business Pro"'})]}),"\n"]}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["Use ",(0,r.jsx)(t.strong,{children:"enum types"})," for attributes the AI should recognize and set \u2014 like tier, status, or interest. The predefined values help the agent choose correctly."]})}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"using-attributes-in-filtering",children:"Using Attributes in Filtering"}),"\n",(0,r.jsxs)(t.p,{children:["Custom attributes appear as filter criteria in the ",(0,r.jsx)(t.strong,{children:"Advanced Filter"})," panel on the Customers page."]}),"\n",(0,r.jsx)(t.p,{children:"Depending on the data type, you can filter by:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Data Type"}),(0,r.jsx)(t.th,{children:"Available Filters"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Text"})}),(0,r.jsx)(t.td,{children:"Exact match, contains"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Number"})}),(0,r.jsx)(t.td,{children:"Equals, greater than, less than"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Enum"})}),(0,r.jsx)(t.td,{children:"Exact match (select from allowed values)"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Boolean"})}),(0,r.jsx)(t.td,{children:"True or false"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Array"})}),(0,r.jsx)(t.td,{children:"Contains value"})]})]})]}),"\n",(0,r.jsx)(t.p,{children:"Combine custom attribute filters with tags, language, platform, and country filters for precise targeting."}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"using-attributes-in-segments",children:"Using Attributes in Segments"}),"\n",(0,r.jsxs)(t.p,{children:["Save any attribute-based filter as a reusable ",(0,r.jsx)(t.strong,{children:"segment"})," for quick access and campaign targeting."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Example segments using custom attributes:"})}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Segment Name"}),(0,r.jsx)(t.th,{children:"Filter Criteria"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:'"High-value Omani customers"'}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:"countryCode = OM"})," AND ",(0,r.jsx)(t.code,{children:"tier = platinum"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:'"Business Pro leads"'}),(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.code,{children:'interest = "Business Pro"'})," AND ",(0,r.jsx)(t.code,{children:"status = lead"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:'"Large companies"'}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"companySize > 100"})})]})]})]}),"\n",(0,r.jsxs)(t.p,{children:["See ",(0,r.jsx)(t.a,{href:"./segments",children:"Customer Segments"})," for full details on creating and managing segments."]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"using-attributes-in-campaigns-and-broadcasts",children:"Using Attributes in Campaigns and Broadcasts"}),"\n",(0,r.jsx)(t.p,{children:"Custom attributes integrate with marketing campaigns in several ways:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Target campaigns"})," to customers with specific attribute values by selecting an attribute-based segment in the campaign audience step"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Map attributes to template variables"})," \u2014 use attribute values as dynamic content in WhatsApp template messages (e.g., include the customer's tier in the message)"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Set attributes when sending broadcasts"})," \u2014 the ",(0,r.jsx)(t.code,{children:"customAttributes"})," field lets you assign or update attribute values for all recipients as part of a broadcast send"]}),"\n"]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"best-practices",children:"Best Practices"}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["Use ",(0,r.jsx)(t.strong,{children:"enum types"})," for structured data the AI should recognize \u2014 tier, status, interest, department. The predefined list keeps data clean and filterable."]})}),"\n",(0,r.jsx)(t.admonition,{type:"tip",children:(0,r.jsxs)(t.p,{children:["Keep attribute names ",(0,r.jsx)(t.strong,{children:"descriptive and concise"})," \u2014 the AI agent sees the key name directly. ",(0,r.jsx)(t.code,{children:"customerTier"})," is clearer than ",(0,r.jsx)(t.code,{children:"ct"})," or ",(0,r.jsx)(t.code,{children:"field1"}),"."]})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Use ",(0,r.jsx)(t.strong,{children:"text"})," for free-form data where values vary widely"]}),"\n",(0,r.jsxs)(t.li,{children:["Use ",(0,r.jsx)(t.strong,{children:"number"})," for quantitative data you might want to filter with greater/less than"]}),"\n",(0,r.jsxs)(t.li,{children:["Use ",(0,r.jsx)(t.strong,{children:"boolean"})," for simple yes/no flags (e.g., verified, onboarded)"]}),"\n",(0,r.jsxs)(t.li,{children:["Use ",(0,r.jsx)(t.strong,{children:"array"})," for multi-value fields (e.g., product categories of interest)"]}),"\n"]}),"\n",(0,r.jsx)(t.hr,{}),"\n",(0,r.jsx)(t.h2,{id:"where-to-find-it",children:"Where to Find It"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Create and manage attributes:"})," Customers > Custom Attributes"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"View and edit attribute values:"})," Individual customer profile page"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Filter by attributes:"})," Customers page > Advanced Filter panel"]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}}}]);

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.