Platform
Learn more advanced ways to interact with the platform.Articles
Use Klass relationships to create nested Order objects
If you're integrating an order system in Kustomer, you're likely to come across an example of Kustomer's flexible object model through the use of nested objects. Nested objects (or sub-objects) can be rendered in a Klass View, and might include objects like Shipments, or line items that would belong to an Order.The easiest way to start taking advantage of Order objects would be to browse the Kustomer App Directory and install an ecommerce app integration, which would set these objects up automatically.If you're interested in setting this up manually, this article will walk through multiple methods of setting up klasses with nested objects using the scenario of an orders <-> items being a one-to-many relationship.Who can access this feature?User typesAdmins can access Klass settings.In this articleAutomatic: App integrationsManual Option A: Using the default data field on custom objects (recommended)Manual Option B: Creating and relating multiple klassesFAQAutomatic: App integrationsKustomer offers a variety of app integrations in the Kustomer App Directory. This is the easiest way to get integrated with services like Shopify, BigCommerce, Magento, and more. Learn more about our ecommerce apps in the Kustomer Help Center.Manual Option A: Using the default data field on custom objects (recommended)Note: If you choose to set up orders manually, we highly recommend using Option A because it's simpler and requires less configuration. Option B should only be considered if your use case requires it.1. Go to Settings > Platform > Klasses and create an Order klass in Kustomer, if one doesn't exist already. (These are created automatically if you've installed an ecommerce app integration.) This will expose endpoints like /v1/customers/:id/orders, etc.A POST of an order with many items to /v1/customers/:id/klasses/order would look like the example shown below. Note that we are populating the data field. This field can store the raw JSON data as it is represented in the proprietary system.{ "title": "Order #1", "externalId": "1" "data": { "line_items": [ { "name": "T-Shirt", "price": 20 }, { "name": "Socks", "price": 5 } ] } }Objects implemented with this method would look like this on the customer's timeline in Kustomer:2. In order to create the klass view, go to Settings> Platform > Klasses, then select your Order klass and and press the Edit icon.3. Select the Timeline Layout tab, and then Edit the timeline card.4. Paste in this starter code snippet.<Segment> <Grid> <Column size="ten"> <Grid style={{ padding: '5px 20px', background: '#F7F8F8', border: '1px solid #EAEAEA' }}> <Column> <Grid style={{ fontWeight:'bold', opacity:'.5' }}> <Column size="five" >Item Name</Column> <Column size="five">Price</Column> </Grid> <hr /> {_.map(_.get(kobject, "data.line_items", []), (item) => ( <Grid> <Column size="five">{item.name}</Column> <Column size="five">{item.price}</Column> </Grid>))} </Column> </Grid> </Column> </Grid> </Segment>5. Press Save Changes to finish editing the timeline card.Pros of this method:No need to define klass relationships beforehandNo need for additional API calls to create additional item objects - we can include everything in our POST call to /v1/customers/:id/klasses/ordersDisplay data about an item within an order object instead of making users navigate to a separate objectCleaner customer timeline in KustomerCons of this method:Data in the data object are currently not indexed and therefore cannot be searched or reported on.Manual Option B: Creating and relating multiple klasses1. Create an Order klass in Kustomer. This will expose endpoints like /v1/klasses/orders, /v1/customers/:id/orders, etc.2. Create an item klass in Kustomer. This will expose endpoints like /v1/klasses/items, /v1/customers/:id/items, etc.We now need to define the relationship between the klasses.3. To define the relationships of an Order object having many Items, make the following PUT request to https://api.kustomerapp.com/v1/metadata/kobject.order (the Rel suffix is required here):{ "relationships": { "itemsRel": { "displayName": "Order Items", "target": "kobject.items", "multi": true } } } 4. To define the relationships of an Item object belonging to one Order object, make the following PUT request to https://api.kustomerapp.com/v1/metadata/kobject.items (the Rel suffix is required here):{ "relationships": { "orderRel": { "displayName": "Order", "target": "kobject.order", "multi": false } } } 5. We can now create/update instances of an object that are related to other items:A minimalist POST of an order with many items to /v1/customers/:id/klasses/order would look like this:{ "title": "Order #1", "externalId": "1" "data": {}, "custom": { "itemsRel":["5af9ac1bd672767b2f0a9869","5af9ac21deb0106530702456","5af9ac26deb010553b7024aa"] } }Likewise, an item that belongs to an order would have a POST to /v1/customers/:id/klasses/items and look like this:{ "title": "Item #1", "externalId": "1", "data": {}, "custom": { "orderRel": "5af9ad0cd67276ffe30aa6c0" } }Alternatively, you can also try making a POST to /v1/klasses/orders/:id/itemsRel without the custom object to create the nested object.The ID in orderRel and itemsRel represent the IDs of custom objects that exist in Kustomer. If you do not have the custom objects you want to relate when creating another object (ex: you are creating your order custom object before its respective item objects) yet then you can always make a PUT request to /v1/klasses/:klassName/:id to add the related objects later.Please note that setting an array of multiple objects (like itemsRel) will overwrite the existing itemsRel array on that object instead of appending to it.Objects would look like this on the customer's timeline:Pros of this method:Splitting objects out into multiple Klasses means Kustomer admins can build Saved Search queries on the custom fields in the object. This is currently not supported by nested Obj custom fields described below.In the above example, the Order Items get to be their own entity with their own set of Klass endpoints. Ex: if you wanted to just find an Order Item object by its external ID, then you could make a request to /v1/klasses/items/externalId={externalId}No nesting limitations like the Obj custom fieldCons of this method:Requires defining the relationships beforehandYou have to manage creating/updating each object with its relationships, which ultimately means more API calls as opposed to a create/update for a single Order object that has an Obj custom field for items.More objects on the timeline can potentially add a lot of clutter for agents viewing the timeline.FAQQ: What is the purpose of the data field?The data field can be any JSON object with any amount of nesting. We do not index on the items in this field so it will not be searchable. However, this data object will be available for rendering in a Klass View.Application limits for seat-based plans
This article outlines the standard limits that apply to all non-sandbox organization instances. These limits may include a combination of billing plan-specific limits, limits imposed by one or more sub-processors, or other system-level protective limits to protect the system.Notes: The information in this article only applies to our seat-based pricing plans (Business, Professional, Enterprise, or Ultimate).Additional and more restrictive limits may exist for sandbox organizations. Limits apply regardless of the instance region or production point of deployment, Prod1 (US) or Prod2 (EU).Professional and Business plans are legacy plans and not available to new customers.In this articleAPI rate limitAudit log storage limitsBrand limitsBusiness rules limitsBusiness schedule limitsConversation sub-status limitsCustomer merge limitsEmail limits (default provider)Email template limitsFacebook limitsInstagram limitsLanguage limitsKIQ conversation classification limitsKnowledge base article limitsOutbound webhook limitsPermission set limitsPlatform Klass limitsPlatform storage limitsQueue limitsQueue rule limitsReporting limitsSearch limitsShortcut category limitsSkill limitsSnippet category limitsTeam limitsUser limitsWorkflow limitsAPI rate limitAPI request rate limits are based on your current billing subscription plan. The rate limit is applied across all API tokens configured for your organization. The default rate limit interval is 60 seconds. The plan limits are:PlanRate LimitProfessional (legacy plan)300Business (legacy plan)500Enterprise1000Ultimate2000For additional details on API rate limits across our platform such as hook limits and object rate limits, see API rate limits.Audit log storage limitsKustomer audit logs are optimized to store your organization's most important data. Logs are stored for certain periods of time depending on the type of audit log. For more details, see Audit log storage limits.Brand limitsYou can support multiple brands under your Kustomer organization with Business or higher plans. The plan limits are:PlanLimit (including the default brand)Professional (legacy plan)1Business (legacy plan)5Enterprise25Ultimate300Business rules limitsBusiness rules help you manage common automations and allow you to trigger changes based on company, customer, conversation, and message attributes. The plan limits are:PlanLimitProfessional (legacy plan)25Business (legacy plan)50Enterprise100Ultimate200For more information, see Understand business rules.Business schedule limitsBusiness schedules allow your organization to specify their operating business hours for their Kustomer platform. Organizations that have access to this feature can create up to 50 individual business schedules for the various regions in which they provide customer support.For more information, see Create business schedules.Conversation sub status limitsSub statuses let you add more specific details to your standard conversation statuses. You can create up to 50 custom sub statuses for any of your three main status options. To learn more, see Create custom sub statuses.Customer merge limitsYou can merge customer profiles to quickly clean up any duplicate customers you may have in your organization. To ensure system resources run efficiently, you cannot merge two customer timelines that have more than a combined 1000 conversations and custom objects. For more information, see Merge customers.Email limits (default provider)Kustomer comes with a default email provider so that your team can start receiving emails quickly. The message limits are:Message DirectionLimitOutboundTextBody and HtmlBody are up to 5 MB each.The total message size, including attachments, is 10 MB.InboundThe total cumulative size for all inbound attachment files can not exceed 35 MB.For more information, see Receive email in Kustomer.Email template limitsYou can create up to 50 custom email templates to personalize the design of your outbound emails for brands and teams. For more information, see Customize email templates.Facebook limitsYou can connect your Facebook accounts to Kustomer to respond to direct messages and public comments from directly within Kustomer. The plan limits are:PlanLimit (handles)Professional (legacy plan)1Business (legacy plan)5Enterprise25Ultimate50Instagram limitsYou can connect your Instagram accounts to Kustomer to respond to direct messages and public comments from directly within Kustomer. The plan limits are:PlanLimit (handles)Professional (legacy plan)1Business (legacy plan)5Enterprise25Ultimate50Language limitsYou can set up global language support in your organization to provide a better experience for your customers. The plan limits are:PlanAdditional Language LimitProfessional (legacy plan)2Business (legacy plan)3Enterprise20UltimateUnlimitedFor more information on how to turn on additional languages, see Customize localization settings.KIQ conversation classification limitsConversation classification is a tool that helps you automate time-consuming tasks so that your agents can focus on support inquiries that need their attention, resulting in better and faster responses.This feature is available to organizations on Enterprise or Ultimate plans with KIQ for Agents add-on. Customers on this plan can create up to 3 conversation models. Only one model can be active at a time. To learn more, see Conversation classification.Knowledge base articles limitA knowledge base provides a way to communicate with customers through articles. It helps them self-serve and find a quick solution to their inquiry without waiting to speak to an agent. You can create up to 1000 articles. For more information, see Create knowledge base articles.FeatureProfessional (legacy)Business (legacy)EnterpriseUltimateInternal knowledge baseNoYesYesYesExternal knowledge baseNoYesYesYesMultilingualNoYesYesYesPortalNoNoYesYesOutbound webhook limitsOutbound webhooks are used to send events from Kustomer to other systems. You can have up to 5 outbound webhooks configured in your Kustomer organization for Business (legacy), Enterprise, and Ultimate. For more information, see Outbound webhooks.Permission set limitsPermission sets define what users or teams can see and do within the platform. The plan limits are:PlanLimitProfessional (legacy plan)-Business (legacy plan)-Enterprise10Ultimate20For more information, see Understand permission sets.Platform Klass limitsKlasses define the attributes associated with each object type in your platform. You can have a total of 100 Klass definitions. For more information, see Define custom attributes in Kustomer.Platform storage limitsThe Kustomer platform has storage limits which take into account various levels of resource utilization within the Kustomer platform. This includes all primary data storage, replication, multi-region backup data transfer and storage, and search indexing storage and replication.For more information, see Platform storage limits & pricing.Queue limitsQueues organize inbound conversations and route them to available agents. Queue routing is only available to Enterprise and Ultimate plans. The plan limits are:PlanQueue LimitEnterprise3Ultimate10Tip: We recommend you assign multiple queues per team for maximal routing flexibility. For more information about queue limits, see the Agent Productivity section of the billing plan comparison page.Queue rule limitsQueue rules are how inbound conversations are assigned to a queue. You can have a total of 100 queue rules. For more information, see Create queue rules.Reporting limitsYou can generate reports within Kustomer to gain insights on conversations, team performance, and more. The length of time that you can access your reporting historical data depends on your plan:PlanData Retention (months)Professional (legacy plan)12Business (legacy plan)12Enterprise24Ultimate24For more information about reporting limits, see the Reporting & Analytics section of the the billing plan comparison page.Search limitsYou can build customized search filters to help you organize everything from customers and companies, organize your filters into individual folders, and export current results. The limits by search area are:AreaLimitsExports50k rows of informationFilters1000Folders100Notes: Only one export can run at a time.Searches do not return results for conversation, message, and custom object data updated over two years ago. To search for this data, please use global search.Exporting searches is only available to organizations on Enterprise or Ultimate plans.For more information, see Use search to organize your work.Shortcut limitsShortcuts are pre-defined blocks of text used as canned responses. You can create up to 3000 shortcuts, see Use workspace shortcuts.You can create up to 200 shortcut categories. For more information, see Add shortcut categories.Skill limitsSkills are used to identify and route conversations to agents best qualified to help each customer. For more information, see Get started with skill routing. Agents can be assigned up to 10 skills, and a maximum of 3000 agents can be assigned to any one skill.A conversation can have a maximum of 10 skills added. The table below shows the number of total skills that can be created for an organization. PlanOrganization-wide skill limitProfessional (legacy plan)-Business (legacy plan)-Enterprise100Ultimate300Snippet category limitsYou can use snippets to insert translated content into shortcuts, conversation replies, chat, and email templates. You can create up to 200 snippet categories. For more information, see Use snippets to send translated messages.Team limitsYou can create teams to group users together that match your organization's structure and unique responsibilities. You can have a maximum of 500 teams. For more information, see Create, manage, and use teams.User limitsYou can add different types of users to Kustomer, based on your business needs. Full-time users have full access to Kustomer. Your specific plan determines how many full-time annual seats you have for your organization. You can increase these seats from the Manage Subscription page.Collaborators are internal users who don't need full access to Kustomer and mostly need access to consult on conversations and support agents. The plan limits for Collaborator seats are: PlanLimitProfessional (legacy plan)-Business (legacy plan)5 collaboratorsEnterprise1 collaborator for every full-time userUltimateUnlimitedFor more information, see Add Collaborators.Workflow limitsWorkflows help you automate processes that eliminate tedious manual tasks and add custom business logic to take full advantage of the Kustomer platform. The plan limits for custom workflows are:PlanLimit (active workflows)Professional (legacy plan)-Business (legacy plan)25Enterprise100Ultimate150For more information about workflow limits, see the Workflow & Automation section of the billing plan comparison page.Callable workflowsEnterprise and Ultimate plans have unlimited callable workflows. These workflows are limited to 1000 runs per 15 minutes across all callable workflows within an organization. Additional executions beyond the 1000 limit will continue to queue, but will not run until the 15-minute window has elapsed. We recommend tuning your conditions in the callable workflows to ensure it is scheduled only when needed.For more information, see Scheduled Workflows (Time-based).Data masking — admin overview (Beta Access)
Data masking allows your organization to better protect customer privacy by minimizing access to sensitive data. Kustomer offers a powerful suite of features that allow admins to control which data fields agents should have access to while supporting customers. These features help minimize accidental sharing of private data on even the most well-intentioned support team.This article will offer an overview of the data masking feature from an admin perspective. We'll cover everything you'll need to know in the setup, maintenance, and usage aspects of this feature.Who can access this feature?User typesAdmins can access the Attributes page.In this articleWhat is data masking and sensitive data?Why use data masking?How does it work?Where is and isn't data masked in the UI?Full vs. partial maskingBeta Access limitationsData masking settingsSet up masked attributesTemporary access to unmask dataLearn about sensitive data edge casesDynamic textImplicit visibility through automations and exportsInteractions with other featuresConditional attributesWorking with undefined valuesAppendix: data masking and the Kustomer Apps PlatformWhat is data masking and sensitive data?Data masking (a.k.a. data obfuscation) is the process of obscuring or hiding information from unauthorized users. Data masking is a practice essential to many regulated industries where personally identifiable information (PII) must be protected from overexposure. It's also required for data privacy compliance in some regions — one notable example is General Data Protection Regulation (GDPR), which requires the use of data masking for sensitive data collected about EU citizens.Note: Data masking should not be confused with message redaction:Data masking hides sensitive data from groups of users.Message redaction is the practice of permanently and irrevocably deleting information from the platform.Sensitive data is defined as any data or attributes that contain personally identifiable information (PII) which could be potentially used to distinguish one person from another, either directly or indirectly.Sensitive data can be obviously identifiable like a First/Last Name or Social Security #. Depending on the industry you're in, this may also extend to other data markers like phone number, date of birth, address, email, and so on. Data that can be used alone or in combination with other factors to positively identify an individual could be considered as sensitive data. Why use data masking?With data masking, your organization can expose sensitive data as needed to relevant teams, without compromising the data or straying out of compliance. This helps reduce security risk by limiting agent access to viewing or searching for PII only when it is necessary to perform their job, or if they're authorized to do so.For example, your organization may want to safeguard sensitive data and limit the amount of information agents have access to. Or, you may work in an industry with data privacy regulations that require access to a minimum amount of data on a need-to-know basis.Since every organization's data security needs are different, our data masking feature lets you pick which fields to hide in the interface. This helps your team custom-fit a solution that protects customer privacy, while still allowing agents access to the data they need to provide great customer service.How does it work?In the Klass Management > Attribute Settings, admins can edit an attribute to denote when any standard or custom attribute on a Klass should have its data masked. You can mask data on up to 20 attributes per Klass. A preview will appear to demonstrate how the partially masked or fully masked attribute will appear to unauthorized users.Admins can then use permission sets to control which users or teams have access to view masked data using the Read Unmasked checkbox, much in the same way you'd control a team's Read or Edit access. Learn more about using attribute permissions in Attribute level permissions.Authorized users will have normal access to viewing and searching Klass attributes. However, users without the correct field-level permissions access will see that the customer's sensitive information is obscured with asterisks, along with a Masked badge to indicate that data is being masked.Where is and isn't data masked in the UI?Data is masked to unauthorized users:When viewing any Standard or Custom Object in the timeline — including customers, conversations, companies, or KObjectsIn the left pane when viewing a customer in Currently ViewingIn the Browser title, like the name of a tab or windowIn Insights details, Insights cards, and Insights panelWhile editing attributes in all edit modals — including conversation, customer, and company attributesIn search results when searching for customers, conversations, companies, or KObjectsWhen using the Kustomer API to fetch standard and custom objectsIn Audit Logs Settings, object names are masked in the Section links columnData masking does not extend to:Automations, including business rules, queues and routing, and workflowsConversational assistantsReportingData exportsSome app integrations may be incompatible with data masking during Beta Access, which can result in loading issues or broken links in app-created KViewsUsing dynamic text that includes sensitive data (learn more)Note: Users with access to create automations and exports will have indirect access to sensitive data through their ability to potentially post data to external services, or to export data which would otherwise be masked in Kustomer.Please be aware of this condition as you assign permission sets to users. Learn more about sensitive data edge cases.Full vs. partial maskingIf an attribute contains sensitive data, it can be fully masked, which would obscure every character in the sensitive string. Full masking is always an available option, and is used in all cases where partial masking isn't available.Certain attributes offer a partial masking option, which shows the last 4 digits or domain suffix of a string. This can be a useful way to give agents enough information to verify a customer's identity when offering support, without allowing so much access that they gain insight into their full PII.These attributes support partial masking, and will appear to agents as follows:Emails: *******.comPhones: *******5309The masked representation of an email field always uses a fixed number of asterisks independent of the length of the original field value. This is done to prevent audiences from using the length to make educated guesses about the contents of the masked field.Beta Access limitationsData masking is a feature that's still in development. During the Beta Access period, there are a few limitations to be aware of while planning your use of this integration. If any of these items block your use of data masking, please check back as we'll be continuing to improve this Kustomer offering in the near future.Using draftsDuring Beta Access, agents can compose a draft to a customer, but if they can't see the details of the recipient for that channel (like the customer's email address when sending an email), they won't be able to send the message without requesting access first. This applies to all channels — not being able to view the customer's phone number would block a WhatsApp message, not being able to view the Instagram ID would block Instagram, and not being able to view email address would block email or any other channel that sends via that identifier.Until this functionality is added, there are 2 methods for working around this limitation:If agents have access to requesting unmasked data, they can unmask to unblock sending a drafted message.While this limitation is in place, admins may want to avoid masking data that identifies a recipient, like their email address or phone number.Automatic masking in message metadataIf a recipient is masked (for example: Instagram ID, email, phone number, etc.) this data will not be automatically masked in message metadata, like voice calls on the timeline.If you wish to mask PII on message metadata as well as the attribute, you can choose to mask message headers in the Message klass, in addition to the attributes in the Customer klass.ExportsIn exports, we currently block users from creating an export with attributes with which they don’t have read access, which will result in a 403 Forbidden error. This does not currently take into account sensitive attributes and read unmasked permissions. A user without read unmasked permissions for an attribute can create an export with that attribute and potentially read its value in the exported data.In the future, users will be required to have read unmasked permissions to attributes they want to export instead of just read permissions.Data masking settingsGo to Settings and select Security > Data Masking to find an in-app overview of data masking. From here, you can follow tours to set up masked attributes and permission sets and customize the temporary access period.Set up masked attributesData masking is a property of standard and custom attributes in your Kustomer organization. You can control data masking settings when editing the properties for any Klass attribute.To mask data in an attribute:Go to Settings > Platform > Klasses.Select the Pencil icon next to the Klass you wish to edit.Locate the attribute you want to mask, then select the Pencil icon to open the Edit Property popover.Check the Mask the data in this attribute box.You'll see a preview of the field that will be masked. On certain attributes, you can choose between Partial and Full masking. When you're satisfied, select Save Changes.Repeat the above steps as desired for all other attributes you wish to mask.You can review the masking status for any attribute by referring to the Data Privacy column in the attributes list. This will display a status pill that indicates whether an attribute is partially or fully masked.Temporary access to unmask dataAdmins can allow agents to request temporary access to masked data through an additional action in the Customer permissions. This may be useful for organizations where agents should never see PII, and only need to access customer data in response to a customer's request for assistance.Before data is unmasked, the agent will see a confirmation dialog to ensure this event is not taken unintentionally. For admin oversight, all unmask events are recorded in the audit logs.If the agent proceeds, the customer's data will be unmasked temporarily. The Masked badge will change color and be labeled Unmasked, and users can hover on the badge to see how much time remains in the temporary access period.To review all unmasking events, go to Settings and select Security > Audit Log.When an agent unmasks data in this fashion, the customer's data will be unmasked for everybody in your organization for a predetermined length of time. You can customize this length of time in the Data Masking settings by entering the preferred value in the Temporary Access Period field, with a minimum of 1 hour and a maximum of 72 hours.An agent's access to the Unmask Data option this is managed through Object Permissions > Customer > Temporarily Unmask Customer Data.If Temporarily Unmask Customer Data is unchecked, then agents won't be presented the option to unmask data themselves. Instead, they'll see a note to contact an admin if they need to request access to view data.Learn about sensitive data edge casesKustomer offers a multitude of powerful automation features which reference and convert data for use elsewhere within or outside of the Kustomer platform. In this section, we'll discuss some possible use cases to be aware of when using advanced Kustomer features to avoid accidental disclosure of sensitive data.Dynamic textAdmins using dynamic text may reveal sensitive attributes to unauthorized agents through the draft editor.Dynamic text can potentially reference sensitive data like customer names. If someone with access to sensitive data (like an admin) composes a reply or note in the timeline, it's possible for them to include dynamic text that references sensitive data. Sending this reply would convert the dynamic text with the customer name to plain text, making that data visible to an agent who might otherwise not have access to that data.As a user with access to unmasked data, be cognizant about referencing sensitive data in dynamic text to avoid unintended disclosure.Implicit visibility through automations and exportsUsers with the ability to create automations will have indirect access to sensitive data that they can use to external services for subsequent reading. For example, a user could create a workflow with a Rest API action, or set up a business rule with email forwarding & templates. Both of these cases would result in a user having the ability to access sensitive data after transmitting it outside the Kustomer platform.Be sure that your admin team is aware of these cases when granting this access to users that would otherwise not have permission to view masked data.AutomationsAll automations work off events published by sobjects, e.g., kustomer.customer.update. For this reason, events will be published as unmasked so automation services can continue to read data as unmasked. Automation services also make internal requests to sobjects and customer-search to fetch and update standard and custom objects.Any user with access to Business Rules, Queues and Routing, or Workflows will be able to access masked data through the use and administration of these automations.Conversational AssistantsAdmin users can create a conversational assistant that displays messages using Customer, Conversation, and KObject attributes.These messages are shown to end users, and subsequently can be viewed by agent users in the customer timeline when an agent takes over the conversation from an assistant. If the conversational assistant is built to include attributes containing sensitive masked data, it would expose that data to users otherwise lacking access to masked data.ExportsData can be exported from Search and Reporting.For exports from Search, a request is made to POST /v1/exports. Any users with permissions to export searches will be able to see unmasked data after that data is reported. The permissions to export searches are:roles: [ 'org.admin.exports', 'org.admin.analytics', 'org.admin.analytics.exports', 'org.admin.search', 'org.admin.search.export', 'org.permission.analytics', 'org.permission.analytics_export', ]For exports from Reporting, a request is made to POST /v1/analytics/exports. Any users with permissions to export data from the Reporting UI will be able to see unmasked data. The permissions to export reporting data are: roles: [ 'org.admin.analytics', 'org.admin.analytics.export', 'org.permission.analytics', 'org.permission.analytics_export', ]Exports from Scheduled Reports are created by web making a request to POST /v1/report-subscription.Interactions with other featuresData masking is a far-reaching feature that has impacts throughout the Kustomer platform. In this section, will discuss special cases and best practices to be aware of when planning how to integrate data masking in your organization.Conditional attributesConditional attributes allow you to mark when a field is required in order to mark a conversation as done. When setting up conditional attributes, be sure to consider if any of the required attributes will have data masking turned on, and whether your agents will have access to those fields.If you set an attribute as required, but agent users don't have access to that field, then these agents would potentially be unable to mark conversations as Done.Working with undefined valuesIf a field has partial masking turned on but contains an undefined or empty value, a user who would normally see the data as masked will see fully masked values instead, due to the lack of a meaningful way to partially mask an undefined value. Fields that are in an empty state are considered undefined.For example, let's say you have a user with edit access to a phone number field with partial masking, but they don't have Read Unmasked permissions to the phone number. In cases where there's no number on file, the user would see the entire field as masked.Appendix: data masking and the Kustomer Apps PlatformData masking can also impact apps and custom integrations. Apps and integrations created before the introduction of data masking in Q2 2022 will need to be updated to properly support data masking.If you've performed any in-house customization of your Kustomer organization, please refer to the Apps Platform documentation on our Developer Portal to learn how to address any compatibility issues with Klass Views and the Cards SDK.If you've developed and published an app through the Kustomer Apps Platform, there may be temporary issues with app functionality during the Beta Access period. We appreciate your patience as our team works to investigate and fix these apps during Beta Access.Create API bookmarklets
You may find yourself needing to use our API documentation to access data within your Kustomer organization. This can be useful when trying to find specific data related to different KObjects, as well as when trying to customize, modify, and integrate with your Kustomer organization or an external service.These API calls can be made to Kustomer endpoints by using a platform like Postman, or via cURL commands in your terminal. However, this can be a time-consuming process by having multiple applications open with a lot of copying and pasting, especially when making a GET HTTP request. Instead, you can set up bookmarklets to make GET requests directly from your browser and quickly gather the data you want.This tutorial will help you set up basic bookmarklets to make GET requests to some of Kustomer's most common endpoints, such as conversations, customers, messages, and more.In this articleWhat is a bookmarklet?Set up a bookmarkletCode snippet examplesUsing bookmarkletsWhat is a bookmarklet?Bookmarklets are similar to browser extensions as they perform actions on the webpage you are currently on with a single mouse click. Bookmarklets are stored in your browser like a traditional bookmark, but instead of having a web address attached to them, they have a snippet of JavaScript code which runs when you access the bookmark.Bookmarklets can be added to any browser, and can make use of the session key your browser receives when logging in to your Kustomer organization to access our endpoints. We'll walk through some steps to add the JavaScript code to a bookmarklet, and you can repeat the process for each one you'd like to set up.Set up a bookmarkletThe process of creating a bookmark and the keyboard shortcuts involved can vary from one browser to another, and whether you're on Windows or Mac. Learn more about your browser's specific bookmark process on the help centers for Google Chrome, Firefox, Microsoft Edge, and Safari.To create a bookmarklet:Show the bookmark bar in your browser.If you plan to create multiple bookmarklets, we suggest you first create a bookmark folder to organize them.Create a new bookmark.Replace the URL of the bookmark with the JavaScript code snippet for the desired bookmark.Replace the Name of the bookmark with the name of the endpoint, like Conversation, Customer, Message, and so on.Save the bookmark.Repeat this process for any additional bookmarklets you'd like to create.Code snippet examplesThese code snippets are what you'll insert as the URL for the various bookmarklets you created in the prior step.Conversationjavascript: (function() {var match = window.location.href.match(/(?:https\:\/\/)(.*)(?:\.kustomerapp\.com.*event\/)(.*)/); window.location = 'https://' + match[1] + '.api.kustomerapp.com/v1/conversations/' + match[2];}());Customerjavascript: (function() {var match = window.location.href.match(/(?:https\:\/\/)(.*)(?:\.kustomerapp\.com\/app\/customers\/)(.*)(?:\/event)/); window.location = 'https://' + match[1] + '.api.kustomerapp.com/v1/customers/' + match[2];}());Messagesjavascript: (function() {var match = window.location.href.match(/(?:https\:\/\/)(.*)(?:\.kustomerapp\.com.*event\/)(.*)/); window.location = 'https://' + match[1] + '.api.kustomerapp.com/v1/conversations/' + match[2] + '/messages';}());Eventsjavascript: (function() {var match = window.location.href.match(/(?:https\:\/\/)(.*)(?:\.kustomerapp\.com.*event\/)(.*)/); window.location = 'https://' + match[1] + '.api.kustomerapp.com/v1/conversations/' + match[2] + '/events';}());Usersjavascript: (function() {var match = window.location.href.match(/(?:https\:\/\/)(.*)(?:\.kustomerapp\.com)/);window.location = 'https://' + match[1] + '.api.kustomerapp.com/v1/users';}());Knowledge Base Articlejavascript: (function() {var match = window.location.href.match(/:\/\/([a-zA-Z-]*).*\/(\d.*\W)/);window.location = 'https://' + match[1] + '.api.kustomerapp.com/v1/kb/articles/' + match[2] + 'versions/en_us' ;}());Generic v1 URLUse this to make a GET request with any of the endpoints listed in the Kustomer REST API documentation.javascript: (function() {var match = window.location.href.match(/:\/\/([a-zA-Z-]*)/);window.location = 'https://' + match[1] + '.api.kustomerapp.com/v1/'}());Using bookmarkletsOnce the bookmarklets are set up, navigate to the part of the app where you would like to make a GET request and click the bookmarklet link. This will navigate to a code view displaying the JSON that corresponds with the GET request that was just made. Note: Bookmarklets only work while viewing the appropriate page within Kustomer. You must be viewing a conversation within the Kustomer app to use the conversation, customer, messages, events, and users bookmarklets. Similarly, you must be viewing a knowledge base article within Kustomer to use the knowledge base bookmarklet.The resulting JSON output might be a little difficult to read in the browser. To make this easier to review, you can copy the JSON to your favorite code editor or use a JSON viewer browser extension or add-ons. Some examples of popular extensions for this include JSON Viewer for Chrome and JSONView for Firefox. Here is a comparison of viewing the JSON with and without a JSON viewer extension or add-on.
Still need help? Contact Us