Kustomer integrations

Connect Kustomer to a variety of services that let you better support customers.
Categories
  • Integrate an order system with Kustomer

    You can integrate your order system with Kustomer in any one of these 3 ways:Install an ecommerce integration from the Kustomer App Directory.Use the Kustomer APIUse a Kustomer webhook and workflowIn this article, we'll cover these options to help you understand which approach might work best for your system.Who can access this feature?User typesAdmins can access these settings.In this articleInstall from the Kustomer App DirectoryUse the Kustomer APIUse a Kustomer webhook and workflowInstall from the Kustomer App DirectoryInstalling an integration from the Kustomer App Directory is the easiest method for integrating with external products and services.Select Apps > Explore Directory to find ready-to-use integrations with a wide variety of third-party services. We'd recommend this integration method if you use a popular order system like Shopify, Magento, or BigCommerce.Use the Kustomer APIIf you have access to developer resources and can make updates to your order system's program, the Kustomer API is another great way to integrate with Kustomer. By making direct calls to the Kustomer API, you can create and update orders in Kustomer as soon as orders are created and updated in your system.When you're ready to create an order in Kustomer, you'll first want to find or create a customer. To find a customer, you can look them up by email, phone number, or an external ID. If the customer is not found by any of those lookups, you should create a new customer. With the customer's Kustomer ID, you can now create an order on their timeline using the Create Customer KObject endpoint. We recommend setting an external ID for every order that links the order back to your order system. This way, if you'd like to an update an order after it's been created, you can find the order by its external ID using the Get KObjects endpoint followed by the query externalId={{externalId_here}}. Then, you can update the order using the Update KObject endpoint.Note: Before creating an order on a customer's timeline, you'll need to create a new klass to represent orders in Kustomer. Learn more about creating klasses in Define custom attributes in Kustomer.Use a Kustomer webhook and workflowIf your access to developer resources is limited, using a Kustomer webhook and workflow is another alternative to integrating your system with Kustomer. By setting up webhook notifications whenever an order is created or updated in your system, you can notify Kustomer that an order is ready to be created or updated using a workflow.To learn how to import data into Kustomer using workflows, see Using Workflows to import data.For information on how to render nested objects or "sub-objects" in a Klass View (such as shipments or line items that would belong to an Order), refer to Manual Option A in Use Klass relationships to create nested Order objects.
  • Things to know when integrating with Kustomer

    Kustomer's flexible platform allows you to integrate with a lot of different services out there. This article covers different types of integrations that are supported by Kustomer.Push IntegrationA push integration is set up so that once a specific event happens in the origin system, the origin system pushes data related to that event to a processing application that will then insert it into the destination system. This kind of integration is the most common in Kustomer, where the service is the origin system and Kustomer is the destination system. Kustomer can integrate with any service that can push data out of their system to a Kustomer webhook or email hook to notify Kustomer of an event (i.e. a new order, a customer update, etc). Data received via webhooks and email hooks can be processed by a Kustomer workflow to create/update customers, custom objects, and conversations, and can even be used to automate actions. One example of this kind of automation is sending an outbound message to a customer every time Kustomer is notified that a new order has been placed.Note: Currently, Kustomer expects all data received via webhooks to be in JSON format.Pull IntegrationA pull integration is set up so that a processing application polls the origin system for new events at a predetermined frequency in order to pull that data into the destination system. This kind of integration is not supported in Kustomer. However, if the service you'd like to integrate with does not support webhooks and depends on a pull model, it is possible to build your own middleware application that regularly polls the service for new events and sends the event data to a Kustomer webhook to be processed by a workflow. Another variation on the pull model can be accomplished in Kustomer if you only need to pull data from another system when one of the following conditions occurs within Kustomer: conversation create/update, customer create/update, and message create/update. An example of this implementation is to create a workflow that runs when a conversation is created and uses the customer email in the conversation to pull data about that customer from another system via an API request. If the request is successful, the workflow can use the data returned from the request to update the customer's profile.Note: Requests should return a single object for a workflow to access. If a request returns an array, a workflow will not be able to iterate over the array. DeeplinksDeeplinks are URLs that allow you to link to another system from within Kustomer when looking at a customer, conversation, or custom object. Deeplinks can be added to Klass Views and can use the context of the customer's information to generate a unique URL. For example, a deeplink in a klass view that references a customer's context can access the customer's email to create a URL that points directly to that customer's profile in an external system, i.e. https://myadmin.com?email=john.smith@gmail.com. This kind of integration is helpful if you want to create an easy way for agents to access customer information in other systems without having to navigate there on their own.Kustomer CardsUsing the Kustomer Cards SDK, you can create an integration within the Kustomer interface by embedding an external application directly within the Kustomer timeline within an iFrame using Klass Views. The external application will be displayed as a card on the righthand side panel whenever you are viewing a customer timeline. The card is dependent on the context of the item currently in view in the timeline, like a conversation or custom object. Check out our API documentation to read more about implementing the Kustomer Cards SDK. To learn more about displaying an iFrame in a Klass View, check out this article.If your integration does not require hosting an external app, you can still use Klass Views to access the context of the item currently in view in the timeline to build integrations like deeplinks or buttons that kick off a workflow via a form hook.
  • Outbound webhooks

    Webhooks let you connect two applications and automatically sync data between them. Outbound webhooks send events from Kustomer to other systems. They accept unique URLs and send data in JSON format as events occur in Kustomer.Webhooks are best suited for server-to-server communication where verifying the sender's authenticity is important. In Kustomer, posting to a webhook requires a Kustomer API key with the org.permission.outbound_webhook permission. Learn more about creating and using API keys in the Kustomer Developer Portal: Kustomer REST APIs Who can access this feature?User typesAdmins can access the Outbound webhooks settings page.In this articleCreate an outbound webhookWebhook secretsManage your existing outbound webhooksCreate an outbound webhookYou can set up to 5 outbound user-created webhooks up at any time in your Kustomer organization.Note: Webhooks allow organizations to send events and their related data payloads from the Kustomer app to third-party applications. Since this method grants your data to external parties, exercise caution and due diligence when researching providers to ensure that the recipient will handle your data responsibility.To create an outbound webhook:Go to Settings > Platform > Outbound webhooks.Select Add Outbound Webhook.Enter a name for the webhook, which is how you'll identify this hook throughout the Kustomer platform.Then, fill in the Destination URL. This is the inbound webhook URL for the application that will receive data from Kustomer.Next, choose which Kustomer events trigger the webhook to send data. Use the Webhook Trigger Events to set any number of the following Kustomer events:Conversation CreateConversation UpdateCustomer CreateCustomer UpdateMessage CreateMessage UpdateTeam CreateTeam UpdateUser CreateUser UpdateSelect Save Changes in the bottom toolbar.Learn more about outbound webhook content in our Developer Portal in: Kustomer Apps Platform: Sample trigger event payloads.Webhook secretsKustomer uses a webhook secret to ensure that the webhook is signed and verified. The secret is created once you add a new outbound webhook. Kustomer's outbound webhooks have a SHA256 HMAC signature in their X-Kustomer-Webhook-Signature request headers. When creating a token via the API using POST /v1/outbound-webhooks, the return body contains a token field that contains the secret we use for the HMAC signature. You can use this secret to validate the HMAC signature on the receiving end.To validate a signature:Here's an example of validating the webhook signature using JavaScript.const crypto = require('crypto'); // kustomerSecret can be found in Outbound Webhook UI const computedSignature = crypto .createHmac('sha256', kustomerSecret) .update(httpBody) .digest('hex'); // receivedSignature is in X-Kustomer-Webhook-Signature header if (computedSignature === receivedSignature) { // request was signed by Kustomer };In the above JS example, the key is the outbound webhook's token field. You'll locate the kustomerSecret in the Outbound Webhooks Settings.To view a webhook's secret:Go to Settings > Platform > Outbound webhooks.Locate the desired webhook and select Edit.Scroll down to the Header Information section.Note: The secret is only generated after you initially save a webhook. If you're currently creating a new webhook, you'll need to save it first, then reopen the editor to access the secret.Manage your existing outbound webhooksYou can manage all of your outbound webhooks from one page. Select Settings> Platform > Outbound Webhooks to access a list of your configured outbound webhooks.Turn off a webhookYou can deactivate a webhook by turning off the toggle on this page. A webhook will also be automatically turned off if it is revoked or not working.Edit a webhookYou can edit an existing webhook by selecting it. Once you have made any necessary edits, select Save Changes.Delete a webhookYou can edit your existing webhooks by selecting Delete or Edit and then Delete from its page.Retry policyWe attempt to send an event 10 times over an approximately 80-minute timeframe. If an outbound webhook request is unsuccessful 10 times in a row, the webhook will be turned off and must be turned on again manually. After this occurs, please return to the Outbound webhook page to verify everything is set up correctly, then turn it back on when it's ready to be used.
  • Install and manage apps from the Kustomer App Directory

    The Kustomer App Directory lets you discover and install apps and popular integrations with external services and platforms to customize, automate, and extend Kustomer for your organization.In this article, you will learn how to install and manage apps from the Kustomer App Directory. To learn how to remove apps and turn off app functionality, visit Deactivate apps from the Kustomer App Directory.Who can access this feature?User typesAdmins can access the Apps Directory.In this articleBrowse and install appsExplore DirectoryInstalled AppsView and manage apps and channelsUpdate installed appsBrowse and install appsYou can browse and install apps from within Kustomer in the Kustomer App Directory. Go to Apps and select Explore Directory in the sidebar. While exploring the directory, you can scroll through the list to browse for apps, or use the search field to find apps by name.Explore DirectoryView and manage all public and private apps available to install on your Kustomer organization from the Explore Directory section.Public appsPublic apps are available to all Kustomer organizations from the App Directory. Note: Are you a developer that wants to make your app available to Kustomer users? Learn more about becoming a Kustomer Partner to submit public apps for inclusion in the App Directory.Private appsYour organization can create and register private apps to build on your existing Kustomer platform with custom integrations and configurations. Once you register a private app to your Kustomer organization, the app appears in your app directory and is available only to your organization.Select any app in the directory to view the app details page. The About tab displays basic information about the app and provides details about its functionality, the app creator, support resources, release notes for app updates, and more.Select the Features tab to page to find information about any app-created features an app adds to your organization during installation. You can review these features before or after you install an app.For example, if an app adds workflows to your organization, after installation you can select the app-created workflow from the Features tab to open the workflow in the workflows editor.Apps can add any number of the following features: Insights CardsKlassesInbound WebhooksOutbound WebhooksWidgetsWorkflowsTimeline LayoutsTemplatesInstalled AppsView and manage the apps installed on your Kustomer organization from the Installed Apps section.When working in this tab, apps are automatically organized into several collapsible sections, depending on their status and type.Attention Required: Installed apps that require administrative action, such as installing an app update.Installed Apps: Installed apps that are currently active on your org.Deactivated Apps: Previously-installed apps that are currently deactivated.Kustomer System Apps: Preinstalled apps provided by Kustomer that are active on all orgs. These apps are integral to the Kustomer platform, which update automatically and cannot be removed.View and manage apps and channelsAfter an app is installed, you can manage its settings by going to Apps and referring to the App Management section of the sidebar.Note: Not all apps create their own Management pages. Simpler app integrations like GIPHY configure themselves and require no additional settings to manage. Visit the Installed Apps section to review all of your apps.Update installed appsKustomer prompts you to take action for any installed apps when a new app version is available, or if there is an error with app setup that requires your attention. When an app update is available, you'll see a red badge on the Apps icon in the navigation bar, and a numbered badge on the Installed Apps section in the Apps sidebar.To update to the latest version of an installed app, select Upgrade from the app details page.
  • Deactivate apps from the Kustomer App Directory

    Any app installed from the Kustomer App Directory can be deactivated to temporarily remove it from view, and to turn off any features created by the app.When you deactivate an app, Kustomer will continue to display relevant app-created data for your reference and retain existing app settings. This allows you to reactivate an app with the same settings at any time in the future.Who can access this feature?User typesAdmins can access the App Directory.In this articleWhy would I deactivate apps?Deactivate an appReactivate an appWhy would I deactivate apps?There are a variety of common situations where your organization might decide to temporarily (or indefinitely) deactivate an app:You've decided you no longer need the app. You want to remove it from view, and prevent the app from making any further changes to Kustomer.You've switched providers for an external service so you won't be using an old app integration anymore. However, you still want to draw on historical data to compare and track performance in your reports.You're updating an app configuration, and want to temporarily pause functionality until the new configuration is complete.You're troubleshooting an issue and want to clear an app's cache and restart it, without losing related data.You're trying out a new app to test its functionality, but you're not ready to release the app for wider team use.Deactivate an appDeactivate an app to remove the app from view and to turn off its functionality.To deactivate an installed app:In Kustomer, go to Apps in the navigation bar and select Installed Apps.Select an app to view its details page.Use the App Active toggle to switch the status to off.In the popup that appears, confirm the app deactivation.Once you deactivate an app, Kustomer removes the app from view and turns off its functionality, along with any features related to that app. Kustomer will also remove the following app-created features from view:WidgetsWorkflowsOutbound WebhooksKViews (Klass Views).The Deactivated Apps category under Installed Apps in the Kustomer App Directory will list all inactive apps that were previously installed. Use this section to view details or reactivate any app.Notes:Custom workflows can still reference app-created features after you deactivate an app.Kustomer continues to display data from app-created Klass Views (KViews) for deactivated apps if the KView is set to appear in the following locations: Timeline Layout or Insights Panel Details.You may need to force reload Kustomer in your browser to apply some app deactivation changes. To force reload the page in Google Chrome, you can use either Shift + Reload this page (⟳) or ⇧⌘R on macOS, and you can use either Ctrl + Reload this page (⟳) or Ctrl + F5 on Windows.Reactivate an appYou can reactivate an app at any time to restore its functionality. Any app that has its own Settings page will be reactivated with the last settings that were used previously.To reactivate a previously-installed app:In Kustomer, go to Apps in the navigation bar.Select Installed Apps > Deactivated Apps.Select the desired app.Use the App Active toggle to switch the status to on.Once you reactivate an app, Kustomer immediately restores functionality for the app, along with its settings page in the Apps sidebar for apps that have a dedicated management page.
  • Export data with Export Buddy

    Exporting Kustomer data to CSV is easy with the Export Buddy app. Download it from the Kustomer App Directory to export user and team data along with snippets, shortcuts, conversation tags, and knowledge base articles. Who can access this feature?User typesAdmins can ainstall this app.In this articleInstall the Export Buddy appExport dataIncluded attributesInstall the Export Buddy appGet started by installing Export Buddy from the Kustomer App Directory. Go to Apps  and select Explore Directory.Search for Export Buddy in the App Directory, and then select Install.Export dataAfter the 1-click install, you can now use Export Buddy to output Kustomer data to a CSV file.To export data with Export Buddy:Go to Apps and select Export Buddy.Select the data you would like to export.Select Export.The export may take a few minutes to process. When it's complete, select Download file to save the CSV.If you selected user, team, snippets, shortcuts, or conversation tags, the CSV will include associated attributes listed as columns.If you selected knowledge base articles, your file will be downloaded as a compressed ZIP document. Unzip the file to access your article data. Note: Knowledge base article exports can take a longer time to generate. Please do not close the active tab while the export is processing.Included attributesThis section lists the attributes included for each type of export.UsersidnamedisplayNameuserTypeemailisEmailValidroleGroupscreatedAtmodifiedAtmodifiedBydeletedAtaccountStatuslastLoginDateteamsTeamsidnamedisplayNamecreatedAtmodifiedAtmodifiedByqueuesSnippetsidnamedescriptionsourceappcategorykeycreatedAtupdatedAtTranslations for available languagesShortcutsidnamedraftTextcreatedAtmodifiedAtupdatedAtisPrivatedeletedrevcategoryconversationTagsconversationTagsOperationconversationFieldsConversation TagsidnamecolorcreatedAtmodifiedAtupdatedAtdeletedKnowledge Base ArticlesidtitlehashversionIdlangknowledgeBasecategoriestagsversionTitleslugstatusscopeversionhtmlBodycreatedAtupdatedAtpublishedAt
  • Amazon Kinesis data streams

    Kustomer gives you access to all your data inside and outside the platform. As an administrator, this is useful if you want to want to have full access to your organization's data in other business intelligence tools.Kustomer uses Amazon Kinesis to provide a data stream of all your events by forwarding these events to your own Kinesis stream, giving you access to all your data in real time. Once you can access your events, you can manipulate and load your data into your desired tools. To learn more about the benefits, uses, and key ideas behind Kinesis Data Streams, see What is Amazon Kinesis Data Streams.Who can access this feature?User typesSee our pricing page for details on plan availability.In this articleAvailable dataSet up AWSRecommended monitoringContact Kustomer to complete the setupTroubleshootingAvailable dataThe following is a list of events that are published to the stream. Platform eventsBusiness rulesSearchShortcutsSnippets (Create/Update/Delete)UserUser authenticationTeamTagsCustomer eventsCompanyCustomerConversation (Create/Update/Delete/Update role group)Conversation (SLA breached)Conversation timeConversation moveConversation mergeCustomer mergeEvents (billing and app events)Forward emailKObjectsMessageMetadata (information regarding standard object and custom object fields)NoteTracking identifiedUser time (information on agent logged in)Routing eventsWork itemsWork sessionsSet up AWSThe first step is to install the required AWS services via a CloudFormation service template script.Note: This service does not impact your API rate limits.Go here to download the service template script and save it as a .json file.Visit CloudFormation console, go to Create stack, and select With new resources (standard).Upload the service template script to CloudFormation. Enter a name for the new stack. The KustomerAccountId  you can use in the template is based on your prod environment:Prod 1: 241254095402 (this ID is added to the template by default)Prod 2: 359686614991Note: We recommend you confirm which environment you are in to ensure that you're using the correct ID. You can do so by making an API request and reviewing the response header.Select Next to proceed to Step 4(Review).Review all of your information. Then, select the Acknowledge checkbox and Create stack.After 3-5 minutes, reload the CloudFormation Stacks page. When the “kustomer-stack” status shows CREATE_COMPLETE, select the Outputs tab. Here,, you will see some of the resources created via the CloudFormation template.Required services and roles will be created, along with an example Lambda function that outputs the events:Kinesis Role: KustomerDataStreamRoleKinesis Stream: kustomer-data-streamLambda Role: KustomerLambdaRoleLambda: kustomer-data-stream-fnRecommended monitoringWe recommend customers set alerts on their Kinesis stream that will give them visibility into write throughput rates and write failures to their Kinesis stream. The following metrics can be monitored to ensure Kinesis is appropriately sized for the events sent into your stream.Incoming dataPutRecordsPutRecords throttled recordsWrite throughput exceededContact Kustomer to complete the setupGo to the AWS Support Center to find your account ID, which is located on the upper right of the AWS Management Console. To complete the setup, email your ID and the region the account is to support@kustomer.com.Once the setup is complete, events will be written to the Lambda Cloudwatch log. This gives you an example of how to process the events and what they look like. To view events:Select the Lambda service in the AWS console and navigate to the kustomer-data-stream-fn function. Select the Monitoring tab and then select the View logs in Cloudwatch button.You should now be able to select the latest log and view the data. You can process event data however you please, including updating and inserting the data into your business intelligence tools, such as Redshift.Note: Events from your data stream may not be in strict order. Many objects have a rev attribute to help you. You can compare different revisions and only update the latest one.TroubleshootingWhy can't I see my events?Events are only streamed going forward after activation, and historical data cannot be accessed before this point. If you plan to use this feature, ensure that the Kinesis data stream is turned on when your organization goes live to avoid any gaps in data access.Then, confirm that the cloud template has the required services correctly set up in AWS. If you're still having trouble, contact Kustomer Support for further assistance with troubleshooting.Why am I seeing duplicate events?Streaming event-based systems often function differently than developers might expect, so you should plan on spending extra time analyzing to diagnose any issues. For example, here's a typical event stream for a pizza order:Event 1Quantity: 1Type: Large cheese pizzaStatus: OrderedPrice: $29.99Event 2Status: CookedEvent 3Status: DeliveredIn the above example, if you scan through these events and only see Event 3 where the item is delivered, you might miss the other statuses in Event 1 and Event 2. Amazon offers best practices and troubleshooting recommendations in the AWS Developer Guide. Learn more in Amazon Kinesis Streams: Handling Duplicate Records.
  • Snowflake data sharing (legacy feature)

    If you are using or considering Snowflake as your Business Intelligence (BI) solution, then you can utilize Kustomer's Snowflake data warehouse to access your data.Kustomer currently supports sharing with AWS users in the following regions: us-east-1us-west-2eu-west-1eu-central-1June 2023 update: This feature is no longer available to new customers.In this articleOverviewDataSnowflake Kustomer tablesTable definitionsExample queriesOverviewIf you want access to your Kustomer data to run your own analytics/reports, then Snowflake is a great solution as we can give you your data with minimal setup, using Snowflake's data sharing features.Currently, data is pulled from Kustomer every 10-15 minutes and copied to our Snowflake data warehouse. As soon as the data is in Snowflake, it should be available to you and ready to query. This service does not impact your API rate limits.DataAll of Kustomer's standard object data is available as well as additional lookup tables. The tables all have the same structure, although the data field holds specific semi-structured JSON data for the respective object.Snowflake Kustomer tablesEach table has the same structure - event data is stored as JSON in the DATA column. Here, you will find all the standard attributes of your data as well as any custom fields you may have set.Companies - standard object company dataREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Customers - standard object customer dataREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Conversations - standard object conversation dataREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Messages - standard object message dataREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Custom Objects (KObjects) - Data of any custom klasses you may have set up in KustomerREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Teams - lookup data for teamsREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Users - lookup data for usersREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Shortcuts - lookup data for any shortcuts you may have set up in KustomerREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true} Metadata - lookup data for any multi level lists or custom fields you have set up in KustomerREV {"type":"FIXED","precision":38,"scale":0,"nullable":true}DATA {"type":"VARIANT","nullable":true}UPDATED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}ID {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}ORG {"type":"TEXT","length":25,"byteLength":100,"nullable":false,"fixed":false}IMPORTED_AT {"type":"TIMESTAMP_NTZ","precision":0,"scale":9,"nullable":true}Table definitionsThe REV field holds the revision of the record. It is here to ensure that we do not overwrite a record with older data as we sometimes cannot ensure that data comes in through in order.The DATA field holds the bulk of the data in a semi structured JSON format. A nice advantage of holding semi structured data this way is that if you add an additional custom field to an object it will automatically become available without having to update any schemas. The same is true for any custom objects you may have.The UPDATED_AT is the date the record was last updated.The ID field is the internal ID of the record.The ORG field is the internal organization ID within Kustomer. You will only see your org ID.The IMPORTED_AT field is when the record was copied to Snowflake and is for Kustomer reference.Example queriesTop 10 total messages sent by user:SELECT count(*) AS sent, u.data:name::string As name FROM messages m    INNER JOIN users u ON m.data:createdBy = u.idWHERE m.data:createdBy IS NOT NULL GROUP BY u.data:nameORDER BY sent DESCLIMIT 10;
Powered by Kustomer