diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index ce2bcbe5b9..0272c725f7 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -324,6 +324,8 @@ sections: title: Complying With GDPR - path: /privacy/user-deletion-and-suppression title: User Deletion and Suppression + - path: /privacy/account-deletion + title: Account & Data Deletion - path: /privacy/faq title: Privacy FAQs - section_title: Protocols diff --git a/src/connections/destinations/catalog/ambassador/index.md b/src/connections/destinations/catalog/ambassador/index.md index 6e70f61358..28cddd8cdc 100644 --- a/src/connections/destinations/catalog/ambassador/index.md +++ b/src/connections/destinations/catalog/ambassador/index.md @@ -16,7 +16,7 @@ id: 573a3dfb80412f644ff13679 Your changes appear in the Segment CDN in about 45 minutes, and then Analytics.js starts asynchronously loading the Ambassador snippet on your page and sending data. -Since Ambassador only records specific events and user data, events and users may not appear in Ambassador until you start using the API explained below. +Since Ambassador only records specific events and user data, events and users may not appear in Ambassador until you start using the API explained below. And you must approve your website domain through the Editor -> Manage websites section in the navigation pane along the left-hand side of the page. ## Identify diff --git a/src/connections/destinations/catalog/moengage/index.md b/src/connections/destinations/catalog/moengage/index.md index b470a2afde..67bb7d53fe 100644 --- a/src/connections/destinations/catalog/moengage/index.md +++ b/src/connections/destinations/catalog/moengage/index.md @@ -11,7 +11,7 @@ The Segment-MoEngage Integration is a bundled integration, meaning it requires t ## Setup MoEngage in your Segment Workspace: To setup MoEngage do the following : - 1. First get your key([AppID](http://app.moengage.com/v3/#/settings/0/0)) from the MoEngage dashboard. + 1. First get your key(AppID) from the MoEngage dashboard. Navigate to `Dashboard --> Settings --> App --> General`. 2. Go to your **Segment workspace**, go to **Destinations** and select **MoEngage**. 3. Enable the MoEngage Destination. 4. Go to the MoEngage Settings and enter the MoEngage AppID, obtained in **Step1**. @@ -27,30 +27,41 @@ users it’ll be instantaneous! Segment-MoEngage Integration is a bundled integr ## iOS -To get started with MoEngage on iOS, first integrate your app with the [MoEngage-Segment-iOS](https://github.com/moengage/MoEngage-Segment-iOS) library. You can integrate MoEngage and Segment with [CocoaPods](http://cocoapods.org). +To get started with MoEngage on iOS, first integrate your app with the [MoEngage-Segment-iOS](https://github.com/moengage/MoEngage-Segment-iOS){:target="_blank"} library. You can integrate MoEngage and Segment with [CocoaPods](http://cocoapods.org){:target="_blank"} or with Swift Package Manager. * Initialize pod with pod init command, this will create a podfile for your project. * Update your podfile by adding pod '**Segment-MoEngage**' as shown below: ```ruby use_frameworks! - pod 'Segment-MoEngage’ + pod 'Segment-MoEngage' ``` * Update the pod. pod update + + To install with SPM use the [MoEngage-Segment-iOS](https://github.com/moengage/MoEngage-Segment-iOS.git){:target="_blank"} library and set the branch as master or version as 7.0.0 and above. + ### Configure the Segment SDK: -Now head to the App Delegate file, and setup the Segment SDK by adding `SEGMoEngageIntegrationFactory` instance to the `SEGAnalyticsConfiguration` as shown below: +Navigate to the App Delegate file, and setup the Segment SDK: +1. Import `SEGMoEngageIntegrationFactory.h` and `SEGMoEngageInitializer.h`. +2. Initialize `MOSDKConfig` object and call `initializeDefaultInstance:` method of `SEGMoEngageInitializer`. +3. Initialize `SEGMoEngageIntegrationFactory` instance to the `SEGAnalyticsConfiguration` as shown below: ```objc - #import // This line is key for MoEngage integration + #import + #import #import - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + //Initialize SDKConfig object and call initializeDefaultInstance: method of SEGMoEngageInitializer + MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID:@"YOUR APP ID"]; + [SEGMoEngageInitializer initializeDefaultInstance:sdkConfig]; + // Add your configuration key from Segment SEGAnalyticsConfiguration *config = [SEGAnalyticsConfiguration configurationWithWriteKey:@"configuration key"]; @@ -100,17 +111,17 @@ To differentiate between those, use one of the method below: ```objc //For new Install call following - [[MoEngage sharedInstance] appStatus:INSTALL]; + [[MoEngage sharedInstance] appStatus:AppStatusInstall]; //For an app update call following - [[MoEngage sharedInstance] appStatus:UPDATE]; + [[MoEngage sharedInstance] appStatus:AppStatusUpdate]; ``` -Read more on [install/update differentiation](https://docs.moengage.com/docs/installupdate-differentiation). +Read more on [install/update differentiation](https://developers.moengage.com/hc/en-us/articles/4403910297620){:target="_blank"}. ### Set the data center -By default, the data center setting in the SDK is set to `DATA_CENTER_01`. Follow the steps in the [MoEngage - Data Redirection](https://docs.moengage.com/docs/data-redirection) to update the data center value. If not set correctly, several features of the MoEngage SDK will not function. +By default, the data center setting in the SDK is set to `data_center_01`. Follow the steps in the [MoEngage - Data Redirection](https://developers.moengage.com/hc/en-us/articles/4403910162452-Data-Center){:target="_blank"} to update the data center value. If not set correctly, several features of the MoEngage SDK will not function. ### Using features provided in the MoEngage SDK @@ -139,19 +150,19 @@ Push Notifications are a great way to keep your users engaged and informed about ``` **MoEngage Push Implementation:** -For information about the MoEngage push implementation, see [**Push Notifications**](https://docs.moengage.com/docs/push-notifications) in the MoEngage documentation. +For information about the MoEngage push implementation, see [**Push Notifications**](https://developers.moengage.com/hc/en-us/articles/4403943988756){:target="_blank"} in the MoEngage documentation. #### In-app messaging -In-App Messages are custom views which you can send to a set of users to show custom messages, give new offers, or direct to a specific page. For more information about In-app messaging, see [MoEngage - In-App NATIV](https://docs.moengage.com/docs/in-app-nativ) +In-App Messages are custom views which you can send to a set of users to show custom messages, give new offers, or direct to a specific page. For more information about In-app messaging, see [MoEngage - In-App NATIV](https://developers.moengage.com/hc/en-us/articles/4404155127828-In-App-Nativ){:target="_blank"}. #### Cards -Create targeted or automated App Inbox/NewsFeed messages that can be grouped into various categories, and target your users with different updates or offers that can stay in the Inbox/Feed over a designated period of time. For more information about cards, see [MoEngage - Cards](https://docs.moengage.com/docs/ios-cards). +Create targeted or automated App Inbox/NewsFeed messages that can be grouped into various categories, and target your users with different updates or offers that can stay in the Inbox/Feed over a designated period of time. For more information about cards, see [MoEngage - Cards](https://developers.moengage.com/hc/en-us/articles/4404058438676-Cards-in-iOS){:target="_blank"}. #### Compliance -To make the App compliant with policies i.e,GDPR while using our SDK, follow the doc in this [link](https://docs.moengage.com/docs/gdpr-compliance-1). +To make the App compliant with policies (such as GDPR) while using MoEngage's SDK, follow the instructions in this [doc](https://developers.moengage.com/hc/en-us/articles/4403905438228-SDK-initialisation){:target="_blank"}. ### Segment Docs For more info on using **Segment for iOS** refer to [**Developer Docs**](/docs/connections/sources/catalog/libraries/mobile/ios/) provided by Segment. @@ -180,11 +191,11 @@ The MoEngage SDK depends on the below Jetpack libraries provided by Google for i done already. ```groovy - implementation("androidx.core:core:1.3.1") - implementation("androidx.appcompat:appcompat:1.2.0") - implementation("androidx.lifecycle:lifecycle-process:2.2.0") + implementation("androidx.core:core:1.6.0") + implementation("androidx.appcompat:appcompat:1.3.1") + implementation("androidx.lifecycle:lifecycle-process:2.4.0") ``` -Refer to the [SDK Configuration](https://developers.moengage.com/hc/en-us/articles/4401984733972-Android-SDK-Configuration) documentation to know more about the build config and other libraries used by the SDK. +Refer to the [SDK Configuration](https://developers.moengage.com/hc/en-us/articles/4401984733972-Android-SDK-Configuration){:target="_blank"} documentation to know more about the build config and other libraries used by the SDK. ### Register MoEngage with Segment SDK @@ -216,8 +227,19 @@ Copy the APP ID from the Settings Page `Dashboard --> Settings --> App --> Gener MoEngage moEngage = new MoEngage.Builder(this, "XXXXXXXXXXX") .enableSegmentIntegration() .build(); -MoEngage.initialize(moEngage); +MoEngage.initialiseDefaultInstance(moEngage); ``` +### Exclude MoEngage Storage File from Auto-Backup +Auto backup service of Andriod periodically backs up the Shared Preference file, Database files, and so on. + +For more information, refer to [Auto Backup](https://developer.android.com/guide/topics/data/autobackup){:target="_blank"}. + +As a result of the backup, MoEngage SDK identifiers are backed up and restored after re-install. +The restoration of the identifier results in your data being corrupted and the user not being reachable using push notifications. + +To ensure data isn't corrupted after a backup is restored, opt-out of MoEngage SDK storage files. + +Refer to the [documentation](https://developers.moengage.com/hc/en-us/articles/4401999257236-Exclude-MoEngage-Storage-File-from-Auto-Backup){:target="_blank"} for further details. ### Install or update differentiation This is required for migrations to the MoEngage Platform so the SDK can determine whether the user is a new user on your app, or an existing user who updated to the latest version. @@ -225,13 +247,13 @@ This is required for migrations to the MoEngage Platform so the SDK can determin If the user was already using your application and has just updated to a new version which has the MoEngage SDK, below is an example call: ```java -MoEHelper.getInstance(getApplicationContext()).setAppStatus(AppStatus.UPDATE); + MoEAnalyticsHelper.INSTANCE.setAppStatus(context, AppStatus.UPDATE); ``` If this is a fresh install: ```java -MoEHelper.getInstance(getApplicationContext()).setAppStatus(AppStatus.INSTALL); +MoEAnalyticsHelper.INSTANCE.setAppStatus(context, AppStatus.INSTALL); ``` ### Configure Push Notifications @@ -243,18 +265,20 @@ Copy the Server Key from the FCM console and add it to the MoEngage Dashboard. T To display push notifications, some metadata regarding the notification is required. For example, the small icon and large icon drawables are mandatory. + Refer to the [MoEngage - NotificationConfig](https://moengage.github.io/android-api-reference-v11/core/com.moengage.core.config/-notification-config/index.html){:target="_blank"} API reference for all the possible options. + Use the `configureNotificationMetaData()` to pass on the configuration to the SDK. ```java MoEngage moEngage = new MoEngage.Builder(this, "XXXXXXXXXX") - .configureNotificationMetaData(new NotificationConfig(R.drawable.small_icon, R.drawable.large_icon, R.color.notiColor, "sound", true, true, true)) + .configureNotificationMetaData(new NotificationConfig(R.drawable.small_icon, R.drawable.large_icon)) .enablePartnerIntegration(IntegrationPartner.SEGMENT) .build(); -MoEngage.initialize(moEngage); +MoEngage.initialiseDefaultInstance(moEngage); ``` #### Configuring Firebase Cloud Messaging @@ -272,11 +296,11 @@ To opt-out of MoEngage token registration mechanism disable token registration w ```java MoEngage moEngage = new MoEngage.Builder(this, "XXXXXXXXXX") - .configureNotificationMetaData(new NotificationConfig(R.drawable.small_icon, R.drawable.large_icon, R.color.notiColor, "sound", true, true, true)) + .configureNotificationMetaData(new NotificationConfig(R.drawable.small_icon, R.drawable.large_icon)) .configureFcm(FcmConfig(false)) .enablePartnerIntegration(IntegrationPartner.SEGMENT) .build(); -MoEngage.initialize(moEngage); +MoEngage.initialiseDefaultInstance(moEngage); ``` ###### Pass the push token to the MoEngage SDK @@ -297,8 +321,8 @@ Before passing the payload to the MoEngage SDK you should check if the payload i ```java if (MoEPushHelper.getInstance().isFromMoEngagePlatform(remoteMessage.getData())) { - MoEFireBaseHelper.Companion.getInstance().passPushPayload(getApplicationContext(), remoteMessage.getData()); -}else{ + MoEFireBaseHelper.getInstance().passPushPayload(getApplicationContext(), remoteMessage.getData()); +} else { // your app's business logic to show notification } ``` @@ -319,12 +343,30 @@ When the MoEngage SDK handles push registration, it optionally provides a callba An application can get this callback by implementing `FirebaseEventListener` and registering for a callback in the Application class `onCreate()` using `MoEFireBaseHelper.getInstance().addEventListener()` + Refer to the [MoEngage - API reference](https://moengage.github.io/android-api-reference-v11/moe-push-firebase/com.moengage.firebase.listener/-firebase-event-listener/index.html?query=open%20class%20FirebaseEventListener){:target="_blank"} for more details on the listener. +##### Callbacks + +We recommend you to add the callbacks in the onCreate() of the Application class since these callbacks can be triggered even when the application is in the background. + +###### Token Callback + +When MoEngage SDK handles push registration, it optionally provides a callback to the application whenever a new token is registered or the token is refreshed. To get the token callback implement the [TokenAvailableListener](https://moengage.github.io/android-api-reference/pushbase/com.moengage.pushbase.listener/-token-available-listener/index.html){:target="_blank"} and register for the callback using [MoEFireBaseHelper.getInstance().addTokenListener()](https://moengage.github.io/android-api-reference/moe-push-firebase/com.moengage.firebase/-mo-e-fire-base-helper/add-token-listener.html){:target="_blank"}. + +###### Non-MoEngage Payload + +If you're using the receiver provided by the SDK in your application's manifest file, SDK provides a callback in case a push payload is received for any other server apart from MoEngage Platform. To get a callback implement the [NonMoEngagePushListener](https://moengage.github.io/android-api-reference/moe-push-firebase/com.moengage.firebase.listener/-non-mo-engage-push-listener/index.html){:target="_blank"} and register for the callback using [MoEFireBaseHelper.getInstance().addNonMoEngagePushListener()](https://moengage.github.io/android-api-reference/moe-push-firebase/com.moengage.firebase/-mo-e-fire-base-helper/add-non-mo-engage-push-listener.html){:target="_blank"}. + #### Declare and configure Rich Landing Activity: +A rich landing page can be used to open a web URL inside the app via a push campaign. + +The configuration below is only required if you want to add a parent activity to the Rich landing page. If not, you can move to the next section. +To use a rich landing page you need to add the below code in the AndroidManifest.xml + Add the following snippet and replace `[PARENT_ACTIVITY_NAME]` with the name of the parent activity; `[ACTIVITY_NAME]` with the activity name which should be the parent of the Rich Landing Page @@ -338,23 +380,23 @@ Add the following snippet and replace `[PARENT_ACTIVITY_NAME]` with the name of You are now all set up to receive push notifications from MoEngage. For more information on features provided in MoEngage Android SDK refer to the following links: -* [Push Notifications](https://developers.moengage.com/hc/en-us/sections/360013606771-Push) +* [Push Notifications](https://developers.moengage.com/hc/en-us/sections/360013606771-Push){:target="_blank"} -* [Location Triggered](https://developers.moengage.com/hc/en-us/articles/4403443036564-Location-Triggered) +* [Location Triggered](https://developers.moengage.com/hc/en-us/articles/4403443036564-Location-Triggered){:target="_blank"} -* [In-App messaging](https://developers.moengage.com/hc/en-us/sections/360013831431-In-App-Messages) +* [In-App messaging](https://developers.moengage.com/hc/en-us/sections/360013831431-In-App-Messages){:target="_blank"} -* [Notification Center](https://developers.moengage.com/hc/en-us/articles/4403878923284-Notification-Center) +* [Notification Center](https://developers.moengage.com/hc/en-us/articles/4403878923284-Notification-Center){:target="_blank"} -* [API Reference](https://moengage.github.io/android-api-reference/index.html) +* [API Reference](https://moengage.github.io/android-api-reference/index.html){:target="_blank"} -* [Compliance](https://developers.moengage.com/hc/en-us/sections/4403894212116-Compliance) +* [Compliance](https://developers.moengage.com/hc/en-us/sections/4403894212116-Compliance){:target="_blank"} -* [Release Notes](https://developers.moengage.com/hc/en-us/articles/4403896795540-Changelog) +* [Release Notes](https://developers.moengage.com/hc/en-us/articles/4403896795540-Changelog){:target="_blank"} ### Identify -Use [Identify](/docs/connections/sources/catalog/libraries/mobile/android/#identify) to track user-specific attributes. This is the same as tracking [user attributes](http://docs.moengage.com/docs/identifying-user) on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. If you set traits.id, MoEngage sets that as the Unique ID for that user. +Use [Identify](/docs/connections/sources/catalog/libraries/mobile/android/#identify) to track user-specific attributes. This is the same as tracking [user attributes](http://docs.moengage.com/docs/identifying-user){:target="_blank"} on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. If you set traits.id, MoEngage sets that as the Unique ID for that user. ### Track Use [track](/docs/connections/sources/catalog/libraries/mobile/android/#track) to track events and user behavior in your app. @@ -365,7 +407,7 @@ If your app supports the ability for a user to logout and login with a new ident ### Sample Implementation -Refer to [this](https://github.com/moengage/moengage-segment-integration) Github repository for sample implementation +Refer to [this](https://github.com/moengage/moengage-segment-integration){:target="_blank"} Github repository for sample implementation ## Web @@ -375,14 +417,14 @@ The MoEngage WebSDK offers the ability to send push notifications to Google Chro ### Integration #### 1. Setup your MoEngage Web SDK settings at MoEngage Dashboard -Configure the [web settings](https://app.moengage.com/v3/#/settings/push/web) on the MoEngage dashboard to start using MoEngage <> Segment integration. +Configure the [web settings](https://app.moengage.com/v3/#/settings/push/web){:target="_blank"} on the MoEngage dashboard to start using MoEngage <> Segment integration. If you have selected `HTTPS` mode of integration in the settings, complete the following steps: #### 2 Set up for HTTPS websites #### 2.a Download the required files (HTTPS) -For HTTPS Web Push to work, you need to host two files in the `root` directory of your web server. These two files will be available for you to download at the [web settings page](https://app.moengage.com/v3/#/settings/push/web). +For HTTPS Web Push to work, you need to host two files in the `root` directory of your web server. These two files will be available for you to download at the [web settings page](https://app.moengage.com/v3/#/settings/push/web){:target="_blank"}. * manifest.json * serviceworker.js @@ -419,7 +461,7 @@ If you already have these files, ``` ### Identify -Use [Identify](/docs/sources/website/analytics.js/#identify) to track user specific attributes. This is equal to [tracking user attributes](https://docs.moengage.com/docs/tracking-web-user-attributes) on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. +Use [Identify](/docs/sources/website/analytics.js/#identify) to track user specific attributes. This is equal to [tracking user attributes](https://docs.moengage.com/docs/tracking-web-user-attributes){:target="_blank"} on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. ### Track Use [track](/docs/sources/website/analytics.js/#track) to track events and user behavior in your app. This will send the event to MoEngage with the associated properties. Tracking events is essential and will help you create segments for engaging users. @@ -429,9 +471,9 @@ If your website supports the ability for a user to logout and login with a new i ### Optional For information about optional feature, see the documentation below: -* [Configure opt in type](https://docs.moengage.com/docs/configuring-notification-opt-in) -* [Self-handled opt-ins](https://docs.moengage.com/docs/self-handled-opt-ins) -* [SDK callbacks](https://docs.moengage.com/docs/tracking-opt-ins-on-your-own) +* [Configure opt in type](https://docs.moengage.com/docs/configuring-notification-opt-in){:target="_blank"} +* [Self-handled opt-ins](https://docs.moengage.com/docs/self-handled-opt-ins){:target="_blank"} +* [SDK callbacks](https://docs.moengage.com/docs/tracking-opt-ins-on-your-own){:target="_blank"} ### Test Mode and Debugging While updating the MoEngage settings on the Segment Dashboard, you can enable the logging functionality of the MoEngage SDK to see the SDK logs on the browser console. Just set `Enable Debug Logging` to `On` and the SDK loads in debug mode. diff --git a/src/connections/destinations/catalog/salesforce-marketing-cloud/index.md b/src/connections/destinations/catalog/salesforce-marketing-cloud/index.md index 948656cc02..ba51697929 100644 --- a/src/connections/destinations/catalog/salesforce-marketing-cloud/index.md +++ b/src/connections/destinations/catalog/salesforce-marketing-cloud/index.md @@ -196,6 +196,8 @@ The example below shows a Data Extension for `User Registered` Track calls that ![](images/dext-user-regd-example.png) +> warning "" +> Segment doesn't automatically send timestamps. You must add timestamps as a property in the Track Call to send timestamps to the destination. ### Configure the SFMC Destination in Segment @@ -281,7 +283,7 @@ In order to do this, you must have access to **Personas**. To learn more, [conta > **Tip**: We recommend that you use [SFMC batching](#optional-set-up-sfmc-batching) with Personas to help reduce the number of API calls that you send to SFMC, but this is optional. If you choose to set up batching, do this _before_ you set up the SFMC destination in your Segment workspace. Personas sends audience membership and computed trait values to SFMC using Identify calls. To integrate Personas with SFMC: -1. [Create a Data Extension to store Identify calls](#create-a-data-extension-in-sfmc-to-store-identify-calls) if you haven't already. +1. [Create a Data Extension to store Identify calls](#create-a-data-extension-in-sfmc-to-store-identify-calls) if you haven't already. 2. [Configure SFMC as a Personas Destination](#configure-the-salesforce-marketing-cloud-destination-in-segment) When you sync to an existing Data Extension, note these additional requirements: diff --git a/src/connections/destinations/methods-compare.md b/src/connections/destinations/methods-compare.md index fcbfba6682..c3fd9143ad 100644 --- a/src/connections/destinations/methods-compare.md +++ b/src/connections/destinations/methods-compare.md @@ -18,11 +18,11 @@ This page lists which [Segment methods](/docs/connections/spec/) each destinatio Alias 🏷 {% for destination in site.data.catalog.destinations.items %} -{% unless destination.methods.track == false and destination.methods.page_view == false and destination.methods.identify == false and destination.methods.group == false and destination.methods.alias == false %} +{% unless destination.methods.track == false and destination.methods.page == false and destination.methods.identify == false and destination.methods.group == false and destination.methods.alias == false %} {% if destination.status == "PUBLIC_BETA" %}ℹ️ {% endif %}**[{{ destination.display_name }}](/docs/{{ destination.url }})** {% if destination.methods.track %}✅{% else %}⬜️{% endif %} - {% if destination.methods.page_view %}✅{% else %}⬜️{% endif %} + {% if destination.methods.page %}✅{% else %}⬜️{% endif %} {% if destination.methods.identify %}✅{% else %}⬜️{% endif %} {% if destination.methods.group %}✅{% else %}⬜️{% endif %} {% if destination.methods.alias %}✅{% else %}⬜️{% endif %} @@ -34,7 +34,7 @@ This page lists which [Segment methods](/docs/connections/spec/) each destinatio #### The following destinations have no method information available: {% for destination in site.data.catalog.destinations.items %} -{% if destination.methods.track == false and destination.methods.page_view == false and destination.methods.identify == false and destination.methods.group == false and destination.methods.alias == false %} +{% if destination.methods.track == false and destination.methods.page == false and destination.methods.identify == false and destination.methods.group == false and destination.methods.alias == false %} - [{{ destination.display_name }}](/docs/{{ destination.url }}){% if destination.status == "PUBLIC_BETA" %} (beta){% endif %} {% endif %} {% endfor %} diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 6b5564c709..ee3c84946b 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -6,788 +6,351 @@ id: 3hbak7a9 [Zendesk](https://www.zendesk.com/) is a customer service platform for enterprises, which provides a customer support platform that allows quicker and easier interaction between businesses and customers. -If you notice any gaps, outdated information or simply want to leave some feedback to help us improve our documentation, [let us know](https://segment.com/help/contact)! ## Getting Started -1. From your workspace's `sources` page, click `add source`. +1. Go to **Connections > Sources** and click **Add Source** in the Segment app. -2. Choose Zendesk. +2. Search for **Zendesk** in the Sources Catalog and click **Add Source**. -3. Give the Source a name and add any labels to help you organize and filter your sources. You can give the source any name, but Segment recommends a name that reflects the source itself, as this name autopopulates the schema name. For example, the source name `Zendesk` creates the schema `zendesk`. +3. Give the Source a name and add any labels to help you organize and filter your sources. You can give the source any name, but Segment recommends a name that reflects the source itself, as this name auto-populates the schema name. For example, the source name `Zendesk` creates the schema `zendesk`. - **Note**: You can add multiple instances if you have multiple Zendesk accounts. That's why we allow you to customize the source's nickname and schema name! + * **Note**: You can add multiple instances if you have multiple Zendesk accounts. That's why Segment allows you to customize the source's nickname and schema name. -4. Enter your Zendesk subdomain. The subdomain you use to access your Zendesk portal (e.g. 'segment' for segment.zendesk.com) +4. Enter your Zendesk subdomain. The subdomain you use to access your Zendesk portal (for example 'segment' for segment.zendesk.com) - **Note** If you enter `segment.zendesk.com` as a subdomain instead of just `segment`, Segment tries to access the host `segment.zendesk.com.zendesk.com` and you will get a credentials error. + * **Note:** If you enter `segment.zendesk.com` as a subdomain instead of just `segment`, Segment tries to access the host `segment.zendesk.com.zendesk.com` and you will get a credentials error. -5. Click **Authorize** to start Zendesk's OAuth process. Sign in and grant permissions, you'll be good to go! +5. Click **Authorize** to start Zendesk's OAuth process. Sign in and grant permissions, you'll be good to go. > success "" -> **Tip**: Segment uses the incremental export API from Zendesk, which requires Admin access. Make sure the user has Admin authorizations! +> **Tip**: Segment uses the incremental export API from Zendesk, which requires Admin access. Make sure the user has Admin authorizations. ### Rate Limits -The Zendesk source uses both Zendesk's [Core API](https://developer.zendesk.com/api-reference/) and [Incremental Exports API](https://developer.zendesk.com/rest_api/docs/core/incremental_export). The source's requests to the Incremental API do not count towards your Zendesk account's rate limits, but requests to the Core API do. By default, we cap our requests to Zendesk's Core API to a rate of 200 requests per minute to avoid triggering [Zendesk's Rate Limits](https://developer.zendesk.com/api-reference/ticketing/account-configuration/usage_limits/). If you'd like us to increase or decrease the request rate for your source, [let us know](https://segment.com/help/contact/), and we'll get it set up. We'll add support for this in the UI soon! +The Zendesk source uses both Zendesk's [Core API](https://developer.zendesk.com/api-reference/){:target="_blank"} and [Incremental Exports API](https://developer.zendesk.com/rest_api/docs/core/incremental_export){:target="_blank"}. The source's requests to the Incremental API don't count towards your Zendesk account's rate limits, but requests to the Core API do. By default, Segment caps requests to Zendesk's Core API to a rate of 200 requests per minute to avoid triggering [Zendesk's Rate Limits](https://developer.zendesk.com/api-reference/ticketing/account-configuration/usage_limits/){:target="_blank"}. If you'd like to increase or decrease the request rate for your source, [please reach out](https://segment.com/help/contact/). Support for this in the UI is in the works. ## Components ### Sync -The Zendesk source is built with a sync component, which means we'll make requests to their API on your behalf on a 3 hour interval to pull the latest data into Segment. In the initial sync, we'll grab all the Zendesk objects (and their corresponding properties) according to the Collections Table below. The objects will be written into a separate schema, corresponding to the source instance's schema name you designated upon creation (ie. `zendesk_prod.users`). +The Zendesk source is built with a sync component, which means Segment makes requests to their API on your behalf on a three hour interval to pull the latest data into Segment. In the initial sync, Segment grabs all the Zendesk objects (and their corresponding properties) according to the Collections Table below. The objects are written into a separate schema, corresponding to the source instance's schema name you designated upon creation (like `zendesk_prod.users`). -Our sync component uses an upsert API, so the data in your warehouse loaded using sync will reflect the latest state of the corresponding resource in Zendesk. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status will be `closed`. +The sync component uses an upsert API, so the data in your warehouse loaded using sync reflects the latest state of the corresponding resource in Zendesk. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status is `closed`. -The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources will sync with Segment every 3 hours. Depending on your Warehouses plan, we will push the Source data to your warehouse on the interval associated with your billing plan. +The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every three hours. Depending on your Warehouses plan, Segment pushes the Source data to your warehouse on the interval associated with your billing plan. -At the moment, we don't support filtering which objects or properties get synced. If you're interested in this feature, [let us know](https://segment.com/help/contact/)! +At the moment, Segment doesn't support filtering which objects or properties get synced. If you're interested in this feature, [please reach out](https://segment.com/help/contact/). ## Collections -Collections are the groupings of resources we pull from your source. +Collections are the groupings of resources Segment pulls from your source. | Collection | Type | Description | | ------ | ------ | ------ | -| users | object | Zendesk Support has three types of users: end-users (your customers), agents, and administrators. End-users request support through tickets. Agents work in Zendesk Support to solve tickets. Agents can be divided into multiple groups and can also belong to multiple groups. Agents don't have access to administrative configuration in Zendesk Support such as business rules or automations, but can configure their own macros and views. Administrators have all the abilities of agents, plus administrative abilities. | -| groups | object | When support requests arrive in Zendesk, they can be assigned to a Group. Groups serve as the core element of ticket workflow; support agents are organized into Groups and tickets can be assigned to a Group only, or to an assigned agent within a Group. A ticket can never be assigned to an agent without also being assigned to a Group. | -| tickets | object | Tickets are the means through which your End-users (customers) communicate with Agents in Zendesk. **Note**: We pull all tickets updated (or created) in the last year to start by default. If you need more, just let us know and we'll do a run to pull further back in history. | -| ticket_fields | object | Customize fields on the ticket form. | -| activities | object | The activity stream is a per agent event stream. It will give access to the most recent events that relate to the agent polling the API. | -| attachments | object | This API is for attachments in tickets and forum posts in the Web portal. | -| organizations | object | Just as agents can be segmented into groups in Zendesk, your customers (end-users) can be segmented into organizations. | -| ticket_events | events | Returns a stream of changes that occurred on tickets. Each event is tied to an update on a ticket and contains all the fields that were updated in that change. **Note**: We pull 1 year of ticket events to start by default. If you need more, just let us know and we'll do a run to pull further back in history.| -| ticket_metrics | object | All kinds of aggregate metrics about a ticket | -| satisfaction_ratings | object | If you have enabled satisfaction ratings for your account, this end point allows you to quickly retrieve all ratings. | -| ticket_comments | object | Ticket comments represent the conversation between requesters, collaborators, and agents. It includes the full body of each comment, public and private. **Note**: This collection is not included by default. To request it, [contact us]https://segment.com/help/contact/. | - -In your warehouse, each collection gets its own table. Find below a list of the properties we automatically fetch for each collection. -**Note** The list in this document includes the standard properties only, but doesn't include _your_ custom fields. (Don't worry, they'll be there in your warehouse!) +| [users](#users) | object | Zendesk Support has three types of users: end-users (your customers), agents, and administrators. End-users request support through tickets. Agents work in Zendesk Support to solve tickets. Agents can be divided into multiple groups and can also belong to multiple groups. Agents don't have access to administrative configuration in Zendesk Support such as business rules or automation, but can configure their own macros and views. Administrators have all the abilities of agents, plus administrative abilities. | +| [groups](#groups) | object | When support requests arrive in Zendesk, they can be assigned to a Group. Groups serve as the core element of ticket workflow; support agents are organized into Groups and tickets can be assigned to a Group only, or to an assigned agent within a Group. A ticket can never be assigned to an agent without also being assigned to a Group. | +| [tickets](#tickets) | object | Tickets are the means through which your End-users (customers) communicate with Agents in Zendesk. **Note**: Segment pulls all tickets updated (or created) in the last year to start by default. If you need more, reach out to Segment support. Support can do a run to pull further back in history. | +| [ticket_fields](#ticket_fields) | object | Customize fields on the ticket form. | +| [activities](#activities) | object | The activity stream is a per agent event stream. It will give access to the most recent events that relate to the agent polling the API. | +| [attachments](#activities) | object | This API is for attachments in tickets and forum posts in the Web portal. | +| [organizations](#organizations) | object | Just as agents can be segmented into groups in Zendesk, your customers (end-users) can be segmented into organizations. | +| [ticket_events](#ticket_events) | events | Returns a stream of changes that occurred on tickets. Each event is tied to an update on a ticket and contains all the fields that were updated in that change. **Note**: Segment pulls one year of ticket events to start by default. If you need more, reach out to [Segment support](https://segment.com/help/contact/). Support can do a run to pull further back in history. | +| [ticket_metrics](#ticket_metrics) | object | All kinds of aggregate metrics about a ticket | +| [satisfaction_ratings](#satisfaction_ratings) | object | If you have enabled satisfaction ratings for your account, this end point allows you to quickly retrieve all ratings. | +| [ticket_comments](#ticket_comments) | object | Ticket comments represent the conversation between requesters, collaborators, and agents. It includes the full body of each comment, public and private. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/). | +| [ticket_forms](#ticket_forms) | object | Ticket forms allow an admin to define a subset of ticket fields for display to both agents and end users. | +| [ticket_skips](#ticket_skips) | object | A skip is a record of when an agent skips over a ticket without responding to the end user. | +| [organization_memberships](#organization_memberships) | object | An organization_membership links a user to an organization. Organizations can have many users. Users can be in many organizations if the account supports multiple organizations. | +| [group_memberships](#group_memberships) | object | A group_membership links an agent to a group. Groups can have many agents, as agents can be in many groups. | +| [audit_logs](#audit_logs) | object | The audit log shows various changes in your instance of Zendesk since the account was created. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/). | + + +In your warehouse, each collection gets its own table. Find below a list of the properties Segment automatically fetches for each collection. + +> note "Standard properties" +> The list in this document includes the standard properties only, but doesn't include _your_ custom fields. (Don't worry, they'll be there in your warehouse.) ### groups - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned when creating groups.
url The API url of this group.
deleted Deleted groups get marked as such.
name The name of the group.
created_at The time the group was created.
updated_at The time of the last update of the group.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| ----------- | -------------------------------------------- | +| id | This is automatically assigned when creating groups. | +| url | The API URL of this group. | +| deleted | Deleted groups get marked as such. | +| name | The name of the group. | +| created_at | The date and time the group was created. | +| updated_at | The date and time of the last update of the group. | +| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | ### users - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned when the user is created.
url We set the "url" field users see in their Warehouse to equal the "id" from Zendesk, rather than the "url" field.
name The name of the user.
email The primary email address of this user..
time_zone The time-zone of this user.
phone The primary phone number of this user.
locale_id The language identifier for this user.
locale The locale for this user.
organization_id The id of the organization this user is associated with.
role The role of the user. Possible values: "end-user", "agent", "admin".
verified The user's primary identity is verified or not.
external_id A unique identifier from another system. The API treats the id as case insensitive. Example: ian1 and Ian1 are the same user.
alias An alias displayed to end users.
active false if the user has been deleted.
shared If the user is shared from a different Zendesk Support instance. Ticket sharing accounts only.
shared_agent If the user is a shared agent from a different Zendesk Support instance. Ticket sharing accounts only.
last_login_at The last time the user signed in to Zendesk Support.
two_factor_auth_enabled If two factor authentication is enabled.
signature The user's signature. Only agents and admins can have signatures.
details Any details you want to store about the user, such as an address.
notes Any notes you want to store about the user.
custom_role_id A custom role if the user is an agent on the Enterprise plan.
moderator Designates whether the user has forum moderation capabilities.
ticket_restriction Specifies which tickets the user has access to. Possible values are: "organization", "groups", "assigned", "requested", null.
only_private_comments true if the user can only create private comments.
restricted_agent If the agent has any restrictions; false for admins and unrestricted agents, true for other agents.
suspended If the agent is suspended. Tickets from suspended users are also suspended, and these users cannot sign in to the end user portal.
chat_only Whether or not the user is a chat-only agent.
created_at The time the user was created.
suspended The time of the last update of the user.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned when the user is created. | +| url | Segment sets the “url” field users see in their Warehouse to equal the “id” from Zendesk, rather than the “url” field. | +| name | The name of the user. | +| email | The primary email address of the user. | +| time_zone | The time-zone of this user. | +| phone | The primary phone number of this user. | +| locale_id | The language identifier of this user. | +| locale | The locale for this user. | +| organization_id | The ID of the organization that this user is associated with. | +| role | The role of the user. Possible values: "end-user", "agent", "admin". | +| verified | The user's primary identity is verified or not. | +| external_id | A unique identifier from another system. The API treats the ID as case insensitive. Example: ian1 and Ian1 are the same user. | +| alias | An alias displayed to end users. | +| active | This is set to false if the user has been deleted. | +| shared | If the user is a shared agent from different Zendesk Support instance. Ticket sharing accounts only. | +| last_login_at | The last time the user signed in to Zendesk Support. | +| two_factor_auth_enabled | If two factor authentication is enabled. | +| signature | The user's signature. Only agents and admins can have signatures. | +| details | Any details you want to store about the user, such as an address. | +| notes | Any notes you want to store about the user. | +| custom_role_id | A custom role if the user is an agent on the Enterprise plan. | +| moderator | Designates whether the user has forum moderation capabilities. | +| ticket_restriction | Specifies which tickets the user has access to. Possible values are: “organization”, “groups”, “assigned”, “requested”, null. | +| only_private_comments | This is set to true if the user can only create private comments. | +| restricted_agent | If the agent has any restrictions: This is set to false for admins and unrestricted agents, true for other agents. | +| suspended | If the agent is suspended. Tickets from suspended users are also suspended, and these users cannot sign in to the end user portal. | +| chat_only | Whether or not the user is a chat-only agent. | +| updated_at | The date and time of the user's last update. | +| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | ### tickets - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned when the ticket is created.
url The API url of this ticket.
external_id An id you can use to link Zendesk Support tickets to local records.
type The type of this ticket. Possible values: "problem", "incident", "question" or "task".
subject The value of the subject field for this ticket.
raw_subject The dynamic content placeholder, if present, or the "subject" value, if not.
description The first comment on the ticket.
priority The urgency with which the ticket should be addressed. Possible values: "urgent", "high", "normal", "low".
status The state of the ticket. Possible values: "new", "open", "pending", "hold", "solved", "closed".
recipient The original recipient e-mail address of the ticket.
requester_id The user who requested this ticket.
submitter_id The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket.
assignee_id The agent currently assigned to the ticket.
organization_id The organization of the requester. You can only specify the ID of an organization associated with the requestert.
group_id The group this ticket is assigned to.
collaborator_ids The ids of users currently cc'ed on the ticket.
forum_topic_id The topic this ticket originated from, if any.
problem_id For tickets of type "incident", the ID of the problem the incident is linked to.
has_incidents Is true of this ticket has been marked as a problem, false otherwise.
due_at If this is a ticket of type "task" it has a due date. Due date format uses ISO 8601 format.
tags The array of tags applied to this ticket.
sharing_agreement_ids The ids of the sharing agreements used for this ticket.
created_at When this record was created.
updated_at When this record last got updated.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned when the ticket is created. | +| url | The API URL of this ticket. | +| external_id | An ID you can use to link Zendesk Support tickets to local records. | +| type | The type of this ticket. Possible values: “problem”, “incident”, “question” or “task”. | +| subject | The value of the subject field for this ticket. | +| raw_subject | The dynamic content placeholder, if present, or the "subject" value, if not. | +| description | The first comment on the ticket. | +| priority | The urgency with which the ticket should be addressed. Possible values: “urgent”, “high”, “normal”, “low”. | +| status | The state of the ticket. Possible values: “new”, “open”, “pending”, “hold”, “solved”, “closed”. | +| recipient | The original recipient e-mail address of the ticket. | +| requester_id | The user who requested this ticket. | +| submitter_id | The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket. | +| assignee_id | The agent currently assigned to the ticket. | +| organization_id | The organization of the requester. You can only specify the ID of an organization associated with the requester. | +| group_id | The group this ticket is assigned to. | +| collaborator_ids | The IDs of users currently cc’ed on the ticket. | +| forum_topic_id | The topic this ticket originated from, if any. | +| problem_id | For tickets of type "incident," The ID of the problem the incident is linked to. | +| has_incidents | Is true of this ticket has been marked as a problem, false otherwise. | +| due_at | If this is a ticket of type "task" it has a due date. Due date format uses ISO 8601 format. | +| tags | The array of tags applied to this ticket. | +| sharing_agreement_ids | The IDs of sharing agreements used for this ticket. | +| created_at | The date and time this record was created. | +| updated_at | The date and time this record was last updated. | +| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | +| ticket_form_id | The ID of the ticket form to render the ticket. | ### ticket_fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned upon creation.
url The URL for this resource.
type The type of the ticket field: "checkbox", "date", "decimal", "integer", "regexp", "tagger", "text", or "textarea". *Type is not editable once created.
slug The title of the ticket field separated by _.
title The title of the ticket field.
raw_title The dynamic content placeholder, if present, or the "title" value, if not.
description The description of the purpose of this ticket field, shown to users.
raw_description The dynamic content placeholder, if present, or the "description" value, if not.
position A relative position for the ticket fields that determines the order of ticket fields on a ticket. Note that positions 0 to 7 are reserved for system fields.
active Whether this field is available.
required If it's required for this field to have a value when updated by agents.
collapsed_for_agents If this field should be shown to agents by default or be hidden alongside infrequently used fields. Classic interface only.
regexp_for_validation Regular expression field only. The validation pattern for a field value to be deemed valid..
title_in_portal The title of the ticket field when shown to end users.
raw_title_in_portal The dynamic content placeholder, if present, or the "title_in_portal" value, if not.
visible_in_portal Whether this field is available to end users.
editable_in_portal Whether this field is editable by end users.
required_in_portal If it's required for this field to have a value when updated by end users.
tag A tag value to set for checkbox fields when checked.
removable If this field is not a system basic field that must be present for all tickets on the account.
created_at The time the ticket field was created.
updated_at The time of the last update of the ticket field.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned upon creation. | +| url | The URL for this resource. | +| type | The type of the ticket field: “checkbox”, “date”, “decimal”, “integer”, “regexp”, “tagger”, “text”, or “textarea”. _*Type is not editable once created._ | +| slug | The title of the ticket field separated by _. | +| title | The title of the ticket field. | +| raw_title | The dynamic content placeholder, if present, or the "title" value, if not. | +| description | The description of the purpose of this ticket field shown to users. | +| raw_description | The dynamic content placeholder, if present, or the “description” value, if not. | +| position | A relative position for the ticket fields that determines the order of ticket fields on a ticket. Note that positions 0 to 7 are reserved for system fields. | +| active | Whether this field is available. | +| required | If it’s required for this field to have a value when updated by agents.| +| collapsed_for_agents | If this field should be shown to agents by default or be hidden alongside infrequently used fields. Classic interface only. | +| regexp_for_validation | Regular expression field only. The validation pattern for a field value to be deemed valid. | +| title_in_portal | The title of the ticket field when shown to end users. | +| raw_title_in_portal | The dynamic content placeholder, if present, or the “title_in_portal” value, if not. | +| visible_in_portal | Whether this field is available to end users. | +| editable_in_portal | Whether this field is editable by end users. | +| required_in_portal | If it’s required for this field to have a value when updated by end users. | +| tag | A tag value to set for checkbox fields when checked. | +| removable | If this field is not a system basic field that must be present for all tickets on the account. | +| created_at | The date and time the ticket field was created. | +| updated_at | The date and time of the last update of the ticket field. | +| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | ### ticket_metrics - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned.
ticket_id Id of the associated ticket.
group_stations Number of groups this ticket passed through.
assignee_stations Number of assignees this ticket had.
reopens Total number of times the ticket was reopened.
replies Total number of times ticket was replied to.
reply_time_in_minutes_calendar Number of minutes to the first reply outside of business hours.
reply_time_in_minutes_business Number of minutes to the first reply during business hours.
first_resolution_time_in_minutes_calendar Number of minutes to the first resolution time outside of business hours.
first_resolution_time_in_minutes_business Number of minutes to the first resolution time during business hours.
full_resolution_time_in_minutes_calendar Number of minutes to the full resolution outside of business hours.
full_resolution_time_in_minutes_business Number of minutes to the full resolution during business hours.
agent_wait_time_in_minutes_calendar Number of minutes the agent spent waiting outside of business hours.
agent_wait_time_in_minutes_business Number of minutes the agent spent waiting during business hours.
requester_wait_time_in_minutes_calendar Number of minutes the requester spent waiting outside of business hours.
requester_wait_time_in_minutes_business Number of minutes the requester spent waiting during business hours.
on_hold_time_in_minutes_calendar Number of minutes the ticket was on hold outside of business hours.
on_hold_time_in_minutes_business Number of minutes the ticket was on hold during business hours.
created_at When this record was created.
updated_at When this record last got updated.
assignee_updated_at When the assignee last updated the ticket.
requester_updated_at When the requester last updated the ticket.
status_updated_at When the status was last updated.
initially_assigned_at When the ticket was initially assigned.
assigned_at When the ticket was last assigned.
solved_at When the ticket was solved.
latest_comment_added_at When the latest comment was added.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned. | +| ticket_id | ID of the associated ticket. | +| group_stations | Number of groups this ticket passed through. | +| assignee_stations | Number of assignees this ticket had. | +| reopens | Total number of times the ticket was reopened. | +| replies | Total number of times ticket was replied to. | +| reply_time_in_minutes_calendar | Number of minutes to the first reply outside of business hours. | +| reply_time_in_minutes_business | Number of minutes to the first reply during business hours. | +| first_resolution_time_in_minutes_calendar | Number of minutes to the first resolution time outside of business hours. | +| first_resolution_time_in_minutes_business | Number of minutes to the first resolution time during business hours. | +| full_resolution_time_in_minutes_calendar | Number of minutes to the full resolution outside of business hours. | +| full_resolution_time_in_minutes_business | Number of minutes to the full resolution during business hours. | +| agent_wait_time_in_minutes_calendar | Number of minutes the agent spent waiting outside of business hours. | +| agent_wait_time_in_minutes_business | Number of minutes the agent spent waiting during business hours. | +| requester_wait_time_in_minutes_calendar | Number of minutes the requester spent waiting outside of business hours. | +| requester_wait_time_in_minutes_business | Number of minutes the requester spent waiting during business hours. | +| on_hold_time_in_minutes_calendar | Number of minutes the ticket was on hold outside of business hours. | +| on_hold_time_in_minutes_business | Number of minutes the ticket was on hold during business hours. | +| created_at | The date and time this record was created. | +| updated_at | The date and time this record was last updated. | +| assignee_updated_at | The date and time the assignee last updated the ticket. | +| requester_updated_at | The date and time the requester last updated the ticket. | +| status_updated_at | The date and time the status was last updated. | +| initially_assigned_at | The date and time the ticket was initially assigned. | +| assigned_at | The date and time the ticket was last assigned. | +| latest_comment_added_at | The date and time the latest comment was added. | +| received_ at | This timestamp is added to incoming messages as soon as they hit Segment API. | ### ticket_events - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned.
ticket_event_id Automatically assigned when the ticket is updated.
ticket_id Id of the associated ticket.
timestamp Time when the ticket was updated.
updater_id Id of the user who updated the ticket.
ticket_event_via How the event was created.
context_client Refers to the "client" used to submit this ticket change (i.e. browser name and type).
context_location Plain text name of where the request was made, if available (i.e. country, city).
context_latitude Latitude of the location where the ticket was changed.
context_longitude Longitude of the location where the ticket was changed.
via How the event was created.
via_reference_id
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned. | +| ticket_event_id | This is automatically assigned when the ticket is updated. | +| ticket_id | The ID of the associated ticket. | +| timestamp | The time when the ticket was updated. | +| updater_id | The ID of the user who updated the ticket. | +| ticket_event_via | How the event was created. | +| context_client | This refers to the “client” used to submit this ticket change (for example, browser name and type). | +| context_location | The plain text name of where the request was made, if available (for example, country, city). | +| context_latitude | Latitude of the location where the ticket was changed. | +| context_longitude | Longitude of the location where the ticket was changed. | +| via | How the event was created. | + ### activities - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned upon creation.
url The API url of this activity.
verb The type of activity. Can be tickets.assignment, tickets.comment, or tickets.priority_increase.
title Description of this activity.
created_at When this record was created.
updated_at When this record last got updated.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned upon creation. | +| url | The API URL of this activity. | +| verb | The type of activity. Can be "tickets.assignment," "tickets.comment," or "tickets.priority_increase." | +| title | Description of this activity. | +| created_at | The date and time this record was created. | +| updated_at | The date and time this record was last updated. | ### attachments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned upon creation.
file_name The name of the image file.
content_url A full URL where the attachment image file can be downloaded.
content_type The content type of the image. Example value: image/png.
inline If true, the attachment is excluded from the attachment list and the attachment's URL can be referenced within the comment of a ticket. Default is false.
size The size of the image file in bytes.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned upon creation. | +| file_name | The name of the image file. | +| content_url | A full URL where the attachment image file can be downloaded. | +| content_type | The content type of the image. Example value: image/png. | +| inline | If true, the attachment is excluded from the attachment list and the attachment’s URL can be referenced within the comment of a ticket. Default is false. | +| size | The size of the image file in bytes. | +| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | ### organizations - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned when the organization is created.
external_id A unique external id to associate organizations to an external record.
url The API url of this organization.
name A unique name for the organization.
details Any details obout the organization, such as the address.
notes Any notes you have about the organization.
group_id New tickets from users in this organization are automatically put in this group.
shared_tickets End users in this organization are able to see each other's tickets.
shared_comments End users in this organization are able to see each other's comments on tickets.
created_at The time the organization was created.
updated_at The time of the last update of the organization.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
- -### satisfaction_ratings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned when the organization is created.
url The API url of this rating.
assignee_id The id of agent assigned to at the time of rating.
group_id The id of group assigned to at the time of rating.
requester_id The id of ticket requester submitting the rating.
ticket_id The id of ticket being rated.
score The rating: "offered", "unoffered", "good" or "bad".
created_at The time the satisfaction rating got created.
updated_at The time the satisfaction rating got updated.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned when the organization is created. | +| external_id | A unique external ID to associate organizations to an external record. | +| url | The API URL of this organization. | +| name | A unique name for the organization. | +| details | This includes any details about the organization, such as the address. | +| notes | Any notes you have about the organization. | +| group_id | New tickets from users in this organization are automatically put in this group. | +| shared_tickets | End users in this organization are able to see each other’s tickets. | +| shared_comments | End users in this organization are able to see each other’s comments on tickets. | +| created_at | The date and time that the organization was created. | +| updated_at | The date and time that the organization was last updated. | +| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | ### ticket_comments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id Automatically assigned when the comment is created.
ticket_event_id Automatically assigned when the comment is created.
ticket_id The id of ticket being commented.
type Comment or VoiceComment. The JSON object for voice comments is different.
body The comment string.
public true if a public comment; false if an internal note. The initial value set on ticket creation persists for any additional comment unless you change it.
author_id The id of the comment author.
via How the comment was created.
created_at The time the comment was created.
received_at This timestamp is added to incoming messages as soon as they hit Segment API.
+ +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | This is automatically assigned when the comment is created. | +| ticket_event_id | This is automatically assigned when the comment is created. | +| ticket_id | The ID of the ticket being commented. | +| type | Comment or VoiceComment. The JSON object for voice comments is different. | +| body | The comment string. | +| public | true if a public comment; false if an internal note. The initial value set on ticket creation persists for any additional comment unless you change it. | +| author_id | The ID of the comment author. | +| via | How the comment was created. | +| created_at | The time the comment was created. | +| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | + +### ticket_forms + +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | The ID of the ticket form. | +| active | If set to true, this shows that the form is active. | +| end_user_visible | If set to true, this shows that the form is visible to end users.| +| name | The name of the form. | +| restricted_brand_ids | The IDs of all brands that this ticket form is restricted to. | +| ticket_field_ids | The IDs of all ticket fields which are in this ticket form. | +| updated_at | The date and time the ticket form was last updated. | +| url | The URL of the ticket form. | +| created_at | The date and time the ticket form was created. | +| display_name | The name of the form that displays to the end user. | +| in_all_brands | This shows if the form is available for use in all brands on this account. | +| position | The position of this form among other forms in the account (for example, dropdown) | +| raw_display_name | The dynamic content placeholder (if available,) or the “display_name” value, if the dynamic content placeholder is unavailable. | +| raw_name | The dynamic content placeholder (if available,) or the “name” value, if the dynamic content placeholder is unavailable. | +| default | If set to true, this shows that the form is the default form for this account. | + +### ticket_skips + +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | The ID of the ticket skip record. | +| ticket_id | The ID of the skipped ticket. | +| user_id | The ID of the skipping agent. | +| reason | The reason for skipping the ticket. | +| created_at | The date and time the skip was created. | +| updated_at | The date and time the skip was last updated. | + +### organization_memberships + +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | The ID of the organization membership. | +| url | The API URL of the membership. | +| user_id | The ID of the user for whom this membership belongs. | +| organization_id | The ID of the organization associated with the selected user, in this membership. | +| created_at | The date and time this record was created. | +| updated_at | The date and time this record was last updated. | +| organization_name | The name of the organization associated with the selected user, in this membership. | + +### group_memberships + +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | The ID of the group membership. | +| url | The API URL of this group. | +| created_at | The date and time the group was created. | +| group_id | The ID of the group. | +| updated_at | The date and time the group was last updated. | +| user_id | The ID of an agent. | + +### audit_logs + +| Property | Description | +| --------------- | ----------------------------------------------------------------- | +| id | The ID of the audit log. | +| url | The URL to access the audit log. | +| created_at | The date and time that the audit was created. | +| actor_id | The ID of the user creating the ticket. | +| source_id | The ID of the item being audited. | +| source_type | The item type being audited. | +| source_label | The name of the item being audited. | +| action | The action a user performed. Either “login”, “create”, “update”, or “destroy”. | +| change_description | The description of the change that occurred. | +| ip_address | The IP address of the user performing the audit. | +| action_label | A localized string of action field. | ## Adding Destinations -Currently only Warehouses are supported for object-cloud sources +Currently only Warehouses are supported for object-cloud sources. diff --git a/src/personas/product-limits.md b/src/personas/product-limits.md index 9707707cfd..abad74b0b0 100644 --- a/src/personas/product-limits.md +++ b/src/personas/product-limits.md @@ -56,13 +56,8 @@ To learn more about custom limits and upgrades, contact your dedicated Customer ## Journeys - -In addition to [Personas Default Limits](#default-limits), Journeys enforces default limits to ensure feature performance and reliability. - -| Item | Limit description | Details | -| ------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Journeys | 10 Journeys per workspace | Applies to active, concurrent Journeys.

Once the limit is reached, you cannot publish any additional Journeys. You will still be able to create draft Journeys. | -| Journey steps | 20 steps per Journey | This applies to certain steps:

- Initial cohort: 1
- Wait for condition: 1
- True / False Split: 1
- Multi-Branch Split: Number of branches
- Send to Destinations: 1

Once the limit is reached, you will be unable to add additional steps to the Journey. | -| Journey Name | Maximum length of 73 characters | Once the limit is reached, you cannot add additional characters to the name. | -| Step Name | Maximum length of 170 characters | Once the limit is reached, you cannot add additional characters to the name. | -| Key | Maximum length of 255 characters | Once the limit is reached, you cannot add additional characters to the key. | +| Item | Limit description | Details | +| ------------ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Journey Name | Maximum length of 73 characters | Once the limit is reached, you cannot add additional characters to the name. | +| Step Name | Maximum length of 170 characters | Once the limit is reached, you cannot add additional characters to the name. | +| Key | Maximum length of 255 characters | Once the limit is reached, you cannot add additional characters to the key. | diff --git a/src/privacy/account-deletion.md b/src/privacy/account-deletion.md new file mode 100644 index 0000000000..68cfafda75 --- /dev/null +++ b/src/privacy/account-deletion.md @@ -0,0 +1,50 @@ +--- +title: Account & Data Deletion +--- + +Segment allows you to delete specific data relating to an individual end user, all data from associated with a source, or all data within your entire workspace. + +## Delete individual user data +To delete the data for an individual user from you workspace, follow the instructions on the [User Deletion and Suppression](/docs/privacy/user-deletion-and-suppression) page. + +## Delete data from a source +To delete the data for an entire source, email the Customer Success team [(friends@segment.com)](mailto:friends@segment.com) to create a support ticket. In your email to Customer Success, include the following information: +- Your workplace slug +- The source from which you'd like to delete data +- The time frame for the data you'd like to delete* + +**Due to the way Segment stores data internally, source-level deletions can only be scoped to one day in granularity. Deletion requests for smaller time frames are not supported.* + +> note "Deleting source data" +> When Segment deletes your data for a particular source, the deletion is not forwarded to sources or data storage providers associated with your account: your data is only removed from Segment's S3 archive buckets. To remove your data from external sources, reach out to the individual source about their deletion practices. + +## Delete your workspace data + +Workspace admins can delete all of the data associated with a workspace, including customer data. + +**To delete all data from one workspace:** + +1. Sign in to the Segment app, select the workspace you'd like to delete, and click **Settings.** +2. On the General Settings page, click the **Delete Workspace** button. +3. Follow the prompts on the pop-up to delete your workspace. + +**To delete data from all workspaces in which you have workspace admin permissions:** + +1. Sign in to the Segment app. +2. Navigate to the [User Settings page](https://app.segment.com/settings/user). +3. Click the **Delete Account** button, located at the bottom of the page. +4. On the popup, enter your password and select **Yep, delete my account anyway!** to delete your account. + +After you delete your workspace or account, Segment removes all data associated with each workspace within 30 days in a process called a [complete data purge](#what-is-a-complete-data-purge). For a data purge status update, email the Customer Success team [(friends@segment.com)](mailto:friends@segment.com). + +If you do not delete your workspace after you stop using Segment, **your data remains in Segment's internal servers until you submit a written deletion request**. + +> warning "Purging data from workspaces deleted prior to March 31, 2022" +> If you deleted your workspace prior to March 31, 2022, and would like to have data associated with your workspace purged from Segment's S3 archive buckets, email the Customer Success team [(friends@segment.com)](mailto:friends@segment.com) to create a support ticket. In your email to Customer Success, include either the slug or the ID of the workspace you'd like to have purged from internal Segment servers. + +### What is a complete data purge? + +A complete data purge is the way Segment removes all workspace and customer data from internal servers across all product areas. To trigger a complete data purge, either [delete your workspace](#how-can-i-delete-data-from-my-workspace) or raise a support ticket with the Customer Success team by emailing [(friends@segment.com)](mailto:friends@segment.com). In your email to Customer Success, include either the slug or the ID of the workspace that you'd like to delete. Deletions related to data purges will *not* be forwarded to your connected third-party destinations or raw data destinations. + +> error " " +> Segment waits for five calendar days before beginning a complete data purge to safeguard against malicious deletion requests. If you notice your workspace or account has been maliciously deleted, reach out to [friends@segment.com](mailto:friends@segment.com) to cancel the data purge. After the five-day grace period, the deletion will be irreversible. \ No newline at end of file diff --git a/src/privacy/user-deletion-and-suppression.md b/src/privacy/user-deletion-and-suppression.md index 2a3f8a3b58..a040560f63 100644 --- a/src/privacy/user-deletion-and-suppression.md +++ b/src/privacy/user-deletion-and-suppression.md @@ -6,7 +6,7 @@ In keeping with Segment's commitment to GDPR and CCPA readiness, Segment offers [Contact Support](https://segment.com/help/contact/) if you need to process more than 100,000 users within a 30 day period. -> info "Business Plan Customers)" +> info "Business Plan Customers" > If you use this feature to delete data, you can not Replay the deleted data. For standard Replay requests, you must wait for any pending deletions to complete, and you cannot submit new deletion requests for the period of time that Segment replays data for you. > info ""