From f644682f355a4ecfcdb505ab551915838f2fb5b0 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 10 May 2022 17:15:53 -0400 Subject: [PATCH 01/20] First pass of Heroku rewrite [DOC-233] --- .../storage/catalog/postgres/index.md | 50 ++++++------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index d80befb77a..4d97ef423d 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -8,6 +8,9 @@ PostgreSQL, or Postgres, is an object-relational database management system (ORD PostgreSQL is ACID-compliant and transactional. PostgreSQL has updatable views and materialized views, triggers, foreign keys; supports functions and stored procedures, and other expandability. Developed by the PostgreSQL Global Development Group, free and open-source. +> note "Segment sources required" +> In order to add a Postgres destination to Segment, you must first add a source. To learn more about sources in Segment, check out our [Sources Overview](/docs/connections/sources) documentation. + ## Getting started Segment supports the following Postgres database providers: - [Heroku](#heroku-postgres) @@ -21,51 +24,30 @@ Segment supports the following Postgres database providers: This guide explains how to set up a Postgres database with Heroku. Heroku is a cloud-based platform-as-a-service which simplifies the process of setting up and administering a Postgres database. -1. Sign up for a Heroku account. - - The first step to setting up Postgres on Heroku is to get a Heroku account. You can sign up for a free account [here](https://signup.heroku.com/identity){:target="_blank"}. - -2. Log in to your Heroku account. - - You can log in to Heroku [here](https://id.heroku.com/login){:target="_blank"}. - -3. Create a new app and go to the Data page. - - To get to the Data page, in the Dashboard menu dropdown, select Data. - - ![](images/heroku1.png) - -4. Create a Database. - - From the **Data** page, find the Heroku Postgres heading and click **Create one**. - - - -5. Choose your plan. - - When you click **Create Database**, a modal appears with your plan choices. Depending on your needs, some plans may be more suitable than others - for example, more expensive plans generally have better performance and more storage. Segment recommends that new customers start with the "Standard 4" plan. +1. Sign up for a Heroku account. You can create a free account [on Heroku's website](https://signup.heroku.com/identity){:target="_blank"}. - For the fastest sync times, choose the US East region. +2. [Log in](https://id.heroku.com/login){:target="_blank"} to your Heroku account. - After you configure these settings, click "Login to Install" and/or "Visit Heroku Dashboard to create your first app". +3. On the landing page, select **Create new app**. - ![](images/heroku3.png) +4. Add a name for your app and select the region where you want your host your app. If you have an existing pipeline that you want to add your app to, add it at this step. When you've finished updating your app's settings, click **Create app**. -6. From your new app, go to the **Resources** tab and add the "Heroku Postgres" Add-on. +5. On the Deploy page, select the **Resources** tab. - ![](images/heroku4.png) +6. On the **Resources** page, add a new add-on to your app by searching for "Heroku Postgres" in the search bar. Select the plan that you wish to bill the database to, and click **Submit Order Form**. _Learn more about pricing information on [Heroku's website](https://www.heroku.com/pricing#data-services)._ -7. Click **Provision** and wait for the database provisioning to complete +7. From the Deploy page, select the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password fields. - Click the "Heroku Postgres :: Database". The database should shift into the Available state. +8. Open the Segment app. On the Overview page, click **Add Destination**. - ![](images/heroku5.png) +9. Search for and select the Postgres destination. -8. View the database overview and settings. +10. Choose the sources you'd like to connect to Postgres, and click **Next**. - Click the tabs to see the database overview and settings. Click **Settings > View credentials** and save these settings for the next steps of the connection process. +11. Enter the host, database, user, and password fields you copied in step seven, and click **Connect**. If Segment successfully connected to your destination, you'll see the Next Steps screen. If not, check your host, database, user, and password fields. - ![](images/heroku6.png) +> warning "First sync duration" +> The initial sync between Segment and Heroku Postgres can take up to 24 hours to complete. ## RDS Postgres From 1aa23fedb596aa10d3ccacc7a864eee6aace1b14 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 10 May 2022 17:18:00 -0400 Subject: [PATCH 02/20] Vale warning [DOC-233] --- src/connections/storage/catalog/postgres/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index 4d97ef423d..de25e95202 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -9,7 +9,7 @@ PostgreSQL, or Postgres, is an object-relational database management system (ORD PostgreSQL is ACID-compliant and transactional. PostgreSQL has updatable views and materialized views, triggers, foreign keys; supports functions and stored procedures, and other expandability. Developed by the PostgreSQL Global Development Group, free and open-source. > note "Segment sources required" -> In order to add a Postgres destination to Segment, you must first add a source. To learn more about sources in Segment, check out our [Sources Overview](/docs/connections/sources) documentation. +> In order to add a Postgres destination to Segment, you must first add a source. To learn more about sources in Segment, check out the [Sources Overview](/docs/connections/sources) documentation. ## Getting started Segment supports the following Postgres database providers: From b768795423172eddbda399d5dff98e804442bbc3 Mon Sep 17 00:00:00 2001 From: Kevin Whinnery Date: Tue, 10 May 2022 19:15:02 -0500 Subject: [PATCH 03/20] Replace possessive with plural (ID's to IDs) (#2881) Really this is just an excuse to make a Segment docs contribution! --- src/_includes/content/spec-identities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_includes/content/spec-identities.md b/src/_includes/content/spec-identities.md index 2eb340a734..9af45d7391 100644 --- a/src/_includes/content/spec-identities.md +++ b/src/_includes/content/spec-identities.md @@ -2,4 +2,4 @@ The User ID is a unique identifier for the user performing the actions. Check ou The Anonymous ID can be any pseudo-unique identifier, for cases where you don't know who the user is, but you still want to tie them to an event. Check out the [Anonymous ID docs](/docs/connections/spec/identify#anonymous-id) for more detail. -**Note: In our browser and mobile libraries a User ID is automatically added** from the state stored by a previous [`identify`](/docs/connections/spec/identify/) call, so you do not need to add it yourself. They will also automatically handle Anonymous ID's under the covers. \ No newline at end of file +**Note: In our browser and mobile libraries a User ID is automatically added** from the state stored by a previous [`identify`](/docs/connections/spec/identify/) call, so you do not need to add it yourself. They will also automatically handle Anonymous IDs under the covers. From 2613a8b1e691eb250045660f3a92e0ba42d400a4 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 07:19:38 -0400 Subject: [PATCH 04/20] Editing pass [DOC-233] --- .../storage/catalog/postgres/index.md | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index de25e95202..7c9dbe6300 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -24,30 +24,26 @@ Segment supports the following Postgres database providers: This guide explains how to set up a Postgres database with Heroku. Heroku is a cloud-based platform-as-a-service which simplifies the process of setting up and administering a Postgres database. -1. Sign up for a Heroku account. You can create a free account [on Heroku's website](https://signup.heroku.com/identity){:target="_blank"}. - -2. [Log in](https://id.heroku.com/login){:target="_blank"} to your Heroku account. - -3. On the landing page, select **Create new app**. +> info "First sync duration" +> The initial sync between Segment and Heroku Postgres can take up to 24 hours to complete. -4. Add a name for your app and select the region where you want your host your app. If you have an existing pipeline that you want to add your app to, add it at this step. When you've finished updating your app's settings, click **Create app**. +1. [Sign up](https://signup.heroku.com/identity){:target="_blank"} for a Heroku account, or [log in](https://id.heroku.com/login){:target="_blank"} to an existing account. -5. On the Deploy page, select the **Resources** tab. +2. On the Heroku landing page, select **Create new app**. -6. On the **Resources** page, add a new add-on to your app by searching for "Heroku Postgres" in the search bar. Select the plan that you wish to bill the database to, and click **Submit Order Form**. _Learn more about pricing information on [Heroku's website](https://www.heroku.com/pricing#data-services)._ +3. Give your app a name and select the region where it should be hosted. If you want to add your app to a Heroku pipeline, do so here. When you've finished updating your app's settings, click **Create app**. -7. From the Deploy page, select the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password fields. +4. On the Resources page, add a new add-on to your app by searching for "Heroku Postgres" in the search bar. Select the billing plan that you want to use for this app and click **Submit Order Form**. Segment recommends that customers start with a Standard 4 plan. _Learn more about plan pricing on the [Heroku Postgres pricing page](https://www.heroku.com/pricing#data-services)._ -8. Open the Segment app. On the Overview page, click **Add Destination**. +5. On the Deploy page, select the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password fields. You need this information to connect your database to Segment in a later step. -9. Search for and select the Postgres destination. +6. Open the Segment app. On the Overview page, click **Add Destination**. -10. Choose the sources you'd like to connect to Postgres, and click **Next**. +7. Search for and select the Postgres destination. -11. Enter the host, database, user, and password fields you copied in step seven, and click **Connect**. If Segment successfully connected to your destination, you'll see the Next Steps screen. If not, check your host, database, user, and password fields. +8. Choose the source(s) you'd like to connect to Postgres, and click **Next**. -> warning "First sync duration" -> The initial sync between Segment and Heroku Postgres can take up to 24 hours to complete. +9. Enter the host, database, user, and password fields you copied from Heroku in an earlier step, and click **Connect**. If Segment successfully connected to your destination, you'll see the Next Steps screen. If not, check your host, database, user, and password fields match your Heroku settings. ## RDS Postgres From 61da1b9f9a0371b05bf00c55cddab370236ef25e Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 11:00:37 -0400 Subject: [PATCH 05/20] Clarifying final step [DOC-233] --- src/connections/storage/catalog/postgres/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index 7c9dbe6300..bbc62a2a8b 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -43,7 +43,7 @@ This guide explains how to set up a Postgres database with Heroku. Heroku is a c 8. Choose the source(s) you'd like to connect to Postgres, and click **Next**. -9. Enter the host, database, user, and password fields you copied from Heroku in an earlier step, and click **Connect**. If Segment successfully connected to your destination, you'll see the Next Steps screen. If not, check your host, database, user, and password fields match your Heroku settings. +9. Enter the host, database, user, and password fields you copied from Heroku in an earlier step, and click **Connect**. If Segment successfully connected to your destination, you'll see the Next Steps screen. If you receive an "Invalid database" error, check that your host, database, user, and password fields match the credentials for your Heroku instance. ## RDS Postgres From c2fe77203dbabde7218a0d1fd85c50be0556fcd5 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 12:02:05 -0400 Subject: [PATCH 06/20] Adding more context to the "contact Segment" bit [DOC-233] --- src/connections/storage/catalog/postgres/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index bbc62a2a8b..dc934e75c9 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -18,7 +18,7 @@ Segment supports the following Postgres database providers: - [Compose](#compose-postgres) > warning "" -> Segment supports only these Postgres databases. Postgres databases from other providers are not guaranteed to work. For questions or concerns, contact [Segment Support](https://segment.com/help/contact){:target="_blank"} +> Segment supports only these Postgres databases. Postgres databases from other providers are not guaranteed to work. For questions or concerns about Postgres providers, contact [Segment Support](https://segment.com/help/contact){:target="_blank"}. ## Heroku Postgres From 0b0cfc4d34ef27b5416dc841407b37bc3b1a8274 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 13:01:01 -0400 Subject: [PATCH 07/20] Fixing missing step + style guide pass [DOC-233] --- .../storage/catalog/postgres/index.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index dc934e75c9..6179010bac 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -29,21 +29,23 @@ This guide explains how to set up a Postgres database with Heroku. Heroku is a c 1. [Sign up](https://signup.heroku.com/identity){:target="_blank"} for a Heroku account, or [log in](https://id.heroku.com/login){:target="_blank"} to an existing account. -2. On the Heroku landing page, select **Create new app**. +2. On the Heroku landing page, select **New** and click **Create new app**. 3. Give your app a name and select the region where it should be hosted. If you want to add your app to a Heroku pipeline, do so here. When you've finished updating your app's settings, click **Create app**. -4. On the Resources page, add a new add-on to your app by searching for "Heroku Postgres" in the search bar. Select the billing plan that you want to use for this app and click **Submit Order Form**. Segment recommends that customers start with a Standard 4 plan. _Learn more about plan pricing on the [Heroku Postgres pricing page](https://www.heroku.com/pricing#data-services)._ +4. On the Deploy page, select the Resources tab. -5. On the Deploy page, select the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password fields. You need this information to connect your database to Segment in a later step. +5. On the Resources page, search for "Heroku Postgres" in the search bar. Select the billing plan that you want to use for this app and click **Submit Order Form**. Segment recommends that customers start with a Standard 4 plan. _Learn more about plan pricing on the [Heroku Postgres pricing page](https://www.heroku.com/pricing#data-services)._ -6. Open the Segment app. On the Overview page, click **Add Destination**. +6. Select the Heroku Postgres add-on you created in the previous step and open the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password fields. You will need this information to connect your database to Segment in a later step. -7. Search for and select the Postgres destination. +7. Open the Segment app. On the Overview page, click **Add Destination**. -8. Choose the source(s) you'd like to connect to Postgres, and click **Next**. +8. Search for and select the Postgres destination. -9. Enter the host, database, user, and password fields you copied from Heroku in an earlier step, and click **Connect**. If Segment successfully connected to your destination, you'll see the Next Steps screen. If you receive an "Invalid database" error, check that your host, database, user, and password fields match the credentials for your Heroku instance. +9. Choose the source(s) you'd like to connect to Postgres, and click **Next**. + +10. Enter the host, database, user, and password fields you copied from Heroku in an earlier step, and click **Connect**. If Segment connected to your destination, you'll see the Next Steps screen. If you receive an "Invalid database" error, check that your host, database, user, and password fields match the credentials for your Heroku instance. ## RDS Postgres From f8715338730f8c5c7f82a5379d106d780b8c0907 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 14:41:41 -0400 Subject: [PATCH 08/20] Adding {:target="_blank"} to external link [DOC-233] --- src/connections/storage/catalog/postgres/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index 6179010bac..02b623ac8a 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -35,7 +35,7 @@ This guide explains how to set up a Postgres database with Heroku. Heroku is a c 4. On the Deploy page, select the Resources tab. -5. On the Resources page, search for "Heroku Postgres" in the search bar. Select the billing plan that you want to use for this app and click **Submit Order Form**. Segment recommends that customers start with a Standard 4 plan. _Learn more about plan pricing on the [Heroku Postgres pricing page](https://www.heroku.com/pricing#data-services)._ +5. On the Resources page, search for "Heroku Postgres" in the search bar. Select the billing plan that you want to use for this app and click **Submit Order Form**. Segment recommends that customers start with a Standard 4 plan. _Learn more about plan pricing on the [Heroku Postgres pricing page](https://www.heroku.com/pricing#data-services){:target="_blank"}._ 6. Select the Heroku Postgres add-on you created in the previous step and open the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password fields. You will need this information to connect your database to Segment in a later step. From dfc396d8cab255d9993fbfecdb115c2fb7f1784b Mon Sep 17 00:00:00 2001 From: Henry Barrow Date: Wed, 11 May 2022 19:58:53 +0100 Subject: [PATCH 09/20] Update LaunchDarkly docs link (#2882) * Update LaunchDarkly docs link * revert autoformat --- .../destinations/catalog/actions-launchdarkly/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-launchdarkly/index.md b/src/connections/destinations/catalog/actions-launchdarkly/index.md index 2b38c43c45..29ce2bf83c 100644 --- a/src/connections/destinations/catalog/actions-launchdarkly/index.md +++ b/src/connections/destinations/catalog/actions-launchdarkly/index.md @@ -44,7 +44,7 @@ To get started with LaunchDarkly (Actions): ## Creating LaunchDarkly metrics -In order to take full-advantage of the LaunchDarkly (Actions) Destination, you need to create metrics in LaunchDarkly that correspond to Segment track events. Read [Creating metrics](https://docs.launchdarkly.com/home/experimentation/metrics/index){:target="_blank"} to learn how to create metrics in LaunchDarkly. +In order to take full-advantage of the LaunchDarkly (Actions) Destination, you need to create metrics in LaunchDarkly that correspond to Segment track events. Read [Creating metrics](https://docs.launchdarkly.com/home/experimentation/metrics){:target="_blank"} to learn how to create metrics in LaunchDarkly. From ff33b1d6aaa4a1a18d3d5d40bd0b7233b8a82a63 Mon Sep 17 00:00:00 2001 From: kdaswani <49517136+kdaswani@users.noreply.github.com> Date: Wed, 11 May 2022 12:00:56 -0700 Subject: [PATCH 10/20] GA4 updates (#2880) * GA4 updates * remove 'we' Co-authored-by: markzegarelli --- .../catalog/actions-google-analytics-4/index.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/connections/destinations/catalog/actions-google-analytics-4/index.md b/src/connections/destinations/catalog/actions-google-analytics-4/index.md index 0883d223ca..c84f759fac 100644 --- a/src/connections/destinations/catalog/actions-google-analytics-4/index.md +++ b/src/connections/destinations/catalog/actions-google-analytics-4/index.md @@ -57,18 +57,15 @@ Google Analytics 4 has different out-of-the-box reports. Google Analytics 4’s Segment’s Google Analytics 4 integration is a server-side integration with the GA4 Measurement Protocol API. This is similar to Segment’s Google Universal Analytics cloud-mode integration in that all data is sent directly to Google’s servers. Please note that this means client-side functionality, such as [Enhanced Measurement](https://support.google.com/analytics/answer/9216061){:target='_blank'}, may not be available through Segment. In addition, as Google continues to develop the GA4 Measurement Protocol API ahead of general availability of the API, there may be limitations that impact what can be seen in the Google Analytics 4 reports. #### Recommended Events -Google Analytics 4 requires the use of [recommended events and properties](https://support.google.com/analytics/answer/9267735){:target='_blank'} to power certain built-in reports. Segment’s Google Analytics 4 destination will automatically map your [Segment spec](/docs/connections/spec/ecommerce/v2) events to the corresponding Google Analytics 4 events and properties. If your Segment events don't follow the Segment spec exactly, you can modify the mappings. For example, Segment maps "Order Completed" events to the Google Analytics 4 “Purchase” event by default. However, if your company uses “Products Purchase” to indicate a purchase, this can be mapped in the Purchase action’s Event Trigger instead. +Google Analytics 4 requires the use of [recommended events and properties](https://support.google.com/analytics/answer/9267735){:target='_blank'} to power certain built-in reports. Segment’s Google Analytics 4 destination provides prebuilt mappings to automatically map your [Segment spec](/docs/connections/spec/ecommerce/v2) events to the corresponding Google Analytics 4 events and properties. If your Segment events don't follow the Segment spec exactly, you can modify the mappings. For example, Segment maps "Order Completed" events to the Google Analytics 4 “Purchase” event by default. If your company uses “Products Purchase” to indicate a purchase, this can be mapped in the Purchase action’s Event Trigger instead. -Segment’s spec doesn't have an equivalent event for every Google Analytics 4 recommended event. If there are other recommended events you would like to send, please use the [Custom Event action](/docs/connections/destinations/catalog/actions-google-analytics-4/#custom-event). For example, to send a `spend_virtual_currency` event, create a mapping for Custom Event, set up your Event Trigger criteria, and input a literal string of "spend_virtual_currency" as the Event Name. You can use the Event Parameters object to add fields that are in the `spend_virtual_currency` event such as `value` and `virtual_currency_name`. +Segment recommends using the prebuilt mappings when possible, however the Segment spec doesn't have an equivalent event for every Google Analytics 4 recommended event. If there are other recommended events you would like to send, please use the [Custom Event action](/docs/connections/destinations/catalog/actions-google-analytics-4/#custom-event). For example, to send a `spend_virtual_currency` event, create a mapping for Custom Event, set up your Event Trigger criteria, and input a literal string of "spend_virtual_currency" as the Event Name. You can use the Event Parameters object to add fields that are in the `spend_virtual_currency` event such as `value` and `virtual_currency_name`. #### Custom Events In addition to recommended events, you can also send custom events using the [Custom Event action](/docs/connections/destinations/catalog/actions-google-analytics-4/#custom-event). Custom events are events that you name. Custom events don't appear in most standard reports; you need to set up custom reports for meaningful analysis. To create custom events in the Google Analytics 4 web interface, see Google’s [Modify and create events through the user interface](https://support.google.com/analytics/answer/10085872){:target='_blank'}. -> warning "" -> Don’t create custom events that already correspond to the pre-built mappings that Segment has. Use the standard events defined in [GA4’s doc](https://developers.google.com/analytics/devguides/collection/ga4/reference/events){:target="_blank"} with their corresponding actions. - -info "Event naming limitations" -Google Analytics 4 requires that all event names contain only alpha-numeric characters and underscores, and must start with an alphabetic character. Segment replaces spaces in Event Names with an underscore, so that these events are accepted by GA4. For example, Segment renames an event named `Home Profile` to `Home_Profile`. In some cases, GA4 may reject an event outright, due to unsupported characters. For example, an event named `Home | Profile` will be silently rejected due to the pipe character. +> info "Event naming limitations" +> Google Analytics 4 requires that all event names contain only alpha-numeric characters and underscores, and must start with an alphabetic character. Segment replaces spaces in Event Names with an underscore, so that these events are accepted by GA4. For example, Segment renames an event named `Home Profile` to `Home_Profile`. In some cases, GA4 may reject an event outright, due to unsupported characters. For example, an event named `Home | Profile` will be silently rejected due to the pipe character. In all cases, event names in GA4 are case sensitive. The Custom Event action includes a **Lowercase Event Name** option, to ensure consistency of all events sent to Google. For more information, see Google's articles [Google Analytics 4 event name rules](https://support.google.com/analytics/answer/10085872?hl=en&ref_topic=9756175#event-name-rules){:target='_blank'} and [Event name limitations](https://developers.google.com/analytics/devguides/collection/protocol/ga4/sending-events?client_type=firebase){:target="_blank"}. From 483f9613787bbea76bb3ef7fc05c4759329fc83e Mon Sep 17 00:00:00 2001 From: Tyson Mote Date: Wed, 11 May 2022 12:01:41 -0700 Subject: [PATCH 11/20] Functions: Clean up AWS APIs example(s) (#2878) * Functions / AWS APIs: Fix JSON formatting * Functions / AWS APIs: Clean up code example --- src/connections/functions/aws-apis.md | 45 ++++++++++++--------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/src/connections/functions/aws-apis.md b/src/connections/functions/aws-apis.md index 67a2e74ce4..cde3145631 100644 --- a/src/connections/functions/aws-apis.md +++ b/src/connections/functions/aws-apis.md @@ -13,23 +13,23 @@ To set up your functions to call AWS APIs: 2. Create an IAM role in your AWS account with the [minimum set of necessary permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege){:target="_blank"}. 3. Add a trust relationship to your role with the following policy, filling in the principal account ID and external ID from step 1.1: ```json - { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Principal": { - "AWS": "" - }, - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "sts:ExternalId": "" + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "AWS": "" + }, + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "sts:ExternalId": "" + } } } - } - ] - } + ] + } ``` 2. Create your function. @@ -37,17 +37,17 @@ To set up your functions to call AWS APIs: * **IAM Role ARN**: A string setting that is the ARN for the IAM role above. For example, `arn:aws:iam::1234567890:role/my-secure-role`. * **IAM Role External ID**: A sensitive string setting that is the external ID for your IAM role. - Below is an example destination function that uploads each event received to an S3 bucket (configured using an additional "S3 Bucket" setting). It uses the built-in local cache to retain S3 clients between requests to minimize processing time and to allow different instances of the function to use different IAM roles. + Below is an example destination function that uploads each event received to an S3 bucket (configured using additional "S3 Bucket" and "S3 Bucket Region" settings). It uses the built-in local cache to retain S3 clients between requests to minimize processing time and to allow different instances of the function to use different IAM roles. ```javascript async function getS3(settings) { const ttl = 30 * 60 * 1000; // 30 minutes - const key = settings.iamRoleArn + settings.iamRoleExternalId; + const key = [settings.iamRoleArn, settings.s3Bucket].join(); return cache.load(key, ttl, async () => { const sts = new AWS.STS(); - const creds = await sts + const opts = await sts .assumeRole({ RoleArn: settings.iamRoleArn, ExternalId: settings.iamRoleExternalId, @@ -56,16 +56,14 @@ To set up your functions to call AWS APIs: .promise() .then(data => { return { + region: settings.s3BucketRegion, accessKeyId: data.Credentials.AccessKeyId, secretAccessKey: data.Credentials.SecretAccessKey, sessionToken: data.Credentials.SessionToken }; - }) - .catch(err => { - throw err; }); - return new AWS.S3(creds); + return new AWS.S3(); }); } @@ -81,9 +79,6 @@ To set up your functions to call AWS APIs: .promise() .then(data => { console.log(data); - }) - .catch(err => { - throw err; }); } ``` From bc3ce5d99cbe6757ee420118ea02e5bdfbe3596e Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 16:34:38 -0400 Subject: [PATCH 12/20] clarified section about reaching out to support [DOC-233] --- src/connections/storage/catalog/postgres/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index 02b623ac8a..a64d93e32a 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -18,7 +18,7 @@ Segment supports the following Postgres database providers: - [Compose](#compose-postgres) > warning "" -> Segment supports only these Postgres databases. Postgres databases from other providers are not guaranteed to work. For questions or concerns about Postgres providers, contact [Segment Support](https://segment.com/help/contact){:target="_blank"}. +> Segment supports only these Postgres databases. Postgres databases from other providers are not guaranteed to work. For questions or concerns about Segment-supported Postgres providers, contact [Segment Support](https://segment.com/help/contact){:target="_blank"}. ## Heroku Postgres From 8988c72ad7c1ff19c08a6b851300f9c480c7ab3c Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 16:41:29 -0400 Subject: [PATCH 13/20] fields > values, updating step 3 [DOC-233] --- src/connections/storage/catalog/postgres/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index a64d93e32a..9158d8eea9 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -31,13 +31,13 @@ This guide explains how to set up a Postgres database with Heroku. Heroku is a c 2. On the Heroku landing page, select **New** and click **Create new app**. -3. Give your app a name and select the region where it should be hosted. If you want to add your app to a Heroku pipeline, do so here. When you've finished updating your app's settings, click **Create app**. +3. Enter a name for your app and select the region where you want to host it. If you want to add your app to a Heroku pipeline, do so here. When you've finished updating your app's settings, click **Create app**. 4. On the Deploy page, select the Resources tab. -5. On the Resources page, search for "Heroku Postgres" in the search bar. Select the billing plan that you want to use for this app and click **Submit Order Form**. Segment recommends that customers start with a Standard 4 plan. _Learn more about plan pricing on the [Heroku Postgres pricing page](https://www.heroku.com/pricing#data-services){:target="_blank"}._ +5. On the Resources page, enter "Heroku Postgres" in the search bar. Select the billing plan that you want to use for this app and click **Submit Order Form**. Segment recommends that customers start with a Standard 4 plan. _Learn more about plan pricing on the [Heroku Postgres pricing page](https://www.heroku.com/pricing#data-services){:target="_blank"}._ -6. Select the Heroku Postgres add-on you created in the previous step and open the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password fields. You will need this information to connect your database to Segment in a later step. +6. Select the Heroku Postgres add-on you created in the previous step and open the Settings tab. Click the **View Credentials...** button and copy the host, database, user, and password values. You will need this information to connect your database to Segment in a later step. 7. Open the Segment app. On the Overview page, click **Add Destination**. @@ -45,7 +45,7 @@ This guide explains how to set up a Postgres database with Heroku. Heroku is a c 9. Choose the source(s) you'd like to connect to Postgres, and click **Next**. -10. Enter the host, database, user, and password fields you copied from Heroku in an earlier step, and click **Connect**. If Segment connected to your destination, you'll see the Next Steps screen. If you receive an "Invalid database" error, check that your host, database, user, and password fields match the credentials for your Heroku instance. +10. Enter the host, database, user, and password values you copied from Heroku in an earlier step, and click **Connect**. If Segment connected to your destination, you'll see the Next Steps screen. If you receive an "Invalid database" error, check that your host, database, user, and password fields match the credentials for your Heroku instance. ## RDS Postgres From ff868c1f4a5d900ea7ba1bc6a506662160ef75e2 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 11 May 2022 16:43:11 -0400 Subject: [PATCH 14/20] More context to invalid database error [DOC-233] --- src/connections/storage/catalog/postgres/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/storage/catalog/postgres/index.md b/src/connections/storage/catalog/postgres/index.md index 9158d8eea9..3cb42ee22b 100644 --- a/src/connections/storage/catalog/postgres/index.md +++ b/src/connections/storage/catalog/postgres/index.md @@ -45,7 +45,7 @@ This guide explains how to set up a Postgres database with Heroku. Heroku is a c 9. Choose the source(s) you'd like to connect to Postgres, and click **Next**. -10. Enter the host, database, user, and password values you copied from Heroku in an earlier step, and click **Connect**. If Segment connected to your destination, you'll see the Next Steps screen. If you receive an "Invalid database" error, check that your host, database, user, and password fields match the credentials for your Heroku instance. +10. Enter the host, database, user, and password values you copied from Heroku in an earlier step, and click **Connect**. If Segment connected to your destination, you'll see the Next Steps screen. If you receive an "Invalid database" error, check that your host, database, user, and password fields match the credentials found in the Settings tab of your Heroku Postgres instance. ## RDS Postgres From 80b674f68e90e2288a64fb12223c1009a0f73000 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 11 May 2022 16:22:30 -0500 Subject: [PATCH 15/20] Update Schema Controls DOC-518 --- src/protocols/schema.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/protocols/schema.md b/src/protocols/schema.md index fd56d27e61..73f34e28bb 100644 --- a/src/protocols/schema.md +++ b/src/protocols/schema.md @@ -12,14 +12,14 @@ Segment Business plan customers can use Schema Controls to manage which events a If you no longer want to track a specific event, you can either remove it from your code or, if you're on the Business plan, you can block track calls right from the Segment UI. To do so, click on the Schema tab in a Source and toggle the event to enable or block an event. -![](images/event-filters.png) +![Event filters](images/event-filters.png "Event filters in Segment") -Once you block an event in Segment, we'll stop forwarding it to all of your Cloud and Device-mode Destinations, including your warehouses. You can remove the events from your code at your leisure. In addition to blocking track calls, Business plan customers can block all Page and Screen calls, as well as Identify traits and Group properties. +Once you block an event, Segment stops forwarding it to all of your Cloud and Device-mode Destinations, including your warehouses. You can remove the events from your code at your leisure. In addition to blocking track calls, Business plan customers can block all Page and Screen calls, as well as Identify traits and Group properties. When an event is blocked, the name of the event or property is added to your Schema page with a counter to show how many events have been blocked. By default, data from blocked events and properties is not recoverable. You can always re-enable the event to continue sending it to downstream Destinations. -In most cases, blocking an event immediately stops that event from sending to Destinations. In rare cases, it can take **up to 6 hours** to fully block an event from delivering to all Destinations. +In most cases, blocking an event immediately stops that event from sending to Destinations. In rare cases, it can take **up to six hours** to fully block an event from delivering to all Destinations. ## Identify and Group Trait Filters @@ -27,11 +27,11 @@ In most cases, blocking an event immediately stops that event from sending to De If you no longer want to capture specific traits within `.identify()` and `.group()` calls, you can either remove those traits from your code, or if you're on the Business plan, you can block specific traits right from the Segment UI. To do so, click on the Schema tab in a Source and navigate to the Identify or Group events where you can block specific traits. -![](images/disable-trait.gif) +![Blocking traits for a Source](images/disable-trait.gif "Animation showing how to block traits with the toggle switch") **IMPORTANT: Blocked traits are not omitted from calls to device-mode Destinations.** -## Destination Filters +## Schema Integration Filters All customers can filter specific events from being sent to specific Destinations (except for warehouses) by updating their tracking code. Here is an example showing how to send a single message only to Intercom and Google Analytics: @@ -48,9 +48,9 @@ analytics.identify('user_123', { }); ``` -Destination flags are case sensitive and match the [Destination's name in the docs](https://segment.com/docs/connections/destinations/) (i.e. "AdLearn Open Platform", "awe.sm", "MailChimp", etc.). +Destination flags are case sensitive and match the [Destination's name in the docs](/docs/connections/destinations/) (i.e. "AdLearn Open Platform", "awe.sm", "MailChimp", etc.). Segment Business tier customers can block track calls from delivering to specific Destinations in the Segment UI. Visit a Source Schema page and click on the **Integrations** column to view specific Destination filters. Toggle the filter to block or enable an event to a Destination. -![](images/asset_d3SRmkWy.gif) +![Schema integration filters](images/asset_d3SRmkWy.gif "Animation showing how to block events with the toggle switch") From 3c83de18b106ce3e26265cfde4cbaffe6dc382ab Mon Sep 17 00:00:00 2001 From: markzegarelli Date: Wed, 11 May 2022 15:53:52 -0700 Subject: [PATCH 16/20] Unpublish this stub --- src/connections/sources/catalog/cloud-apps/snowflake/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/connections/sources/catalog/cloud-apps/snowflake/index.md b/src/connections/sources/catalog/cloud-apps/snowflake/index.md index ac1e3d3e4a..139da23d25 100644 --- a/src/connections/sources/catalog/cloud-apps/snowflake/index.md +++ b/src/connections/sources/catalog/cloud-apps/snowflake/index.md @@ -1,4 +1,5 @@ --- title: 'Snowflake Source' hidden: true +published: false --- \ No newline at end of file From 6e114926fa5c7b6b078a097d21070c1b1f17a073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexx=20Mart=C3=ADnez?= Date: Wed, 11 May 2022 17:18:48 -0600 Subject: [PATCH 17/20] Fixed typo Fixed typo where it said "you can you can" --- .../sources/catalog/libraries/mobile/react-native/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/libraries/mobile/react-native/index.md b/src/connections/sources/catalog/libraries/mobile/react-native/index.md index 5cf9824256..b1e9fb5a4c 100644 --- a/src/connections/sources/catalog/libraries/mobile/react-native/index.md +++ b/src/connections/sources/catalog/libraries/mobile/react-native/index.md @@ -4,7 +4,7 @@ strat: react-native id: B0X0QmvMny --- -React Native 2.0 is a major version upgrade to the [existing React Native library](/docs/connections/sources/catalog/libraries/mobile/react-native/classic) that is production-ready. With Analytics for React Native 2.0, you can you can collect analytics in your React Native application and send data to any analytics or marketing tool without having to learn, test, or implement a new API every time. Analytics React Native 2.0 enables you to process and track the history of a payload, while Segment controls the API and prevents unintended operations. +React Native 2.0 is a major version upgrade to the [existing React Native library](/docs/connections/sources/catalog/libraries/mobile/react-native/classic) that is production-ready. With Analytics for React Native 2.0, you can collect analytics in your React Native application and send data to any analytics or marketing tool without having to learn, test, or implement a new API every time. Analytics React Native 2.0 enables you to process and track the history of a payload, while Segment controls the API and prevents unintended operations. All of Segment's libraries are open-source, and you can view Analytics for React Native 2.0 on GitHub. For more information, see the [Analytics React Native 2.0 GitHub repository](https://github.com/segmentio/analytics-react-native){:target="_blank"}. From 24bade8b743a94152f4396d3a04d50347bbac4e2 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 11 May 2022 19:59:02 -0500 Subject: [PATCH 18/20] Update trackForm #2856 --- .../libraries/website/javascript/index.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/connections/sources/catalog/libraries/website/javascript/index.md b/src/connections/sources/catalog/libraries/website/javascript/index.md index cf1383a88c..136e1d87af 100644 --- a/src/connections/sources/catalog/libraries/website/javascript/index.md +++ b/src/connections/sources/catalog/libraries/website/javascript/index.md @@ -12,7 +12,7 @@ Analytics.js 2.0, the latest version of Segment's JavaScript source, enables you > info "" > Analytics.js 2.0 is available as an [open-source project](https://github.com/segmentio/analytics-next/){:target="_blank"}. ->

All sources created on April 5, 2022 and after default to use Analytics.js 2.0. +>

All sources created on April 5, 2022 and after default to use Analytics.js 2.0. ## Benefits of Analytics.js 2.0 @@ -43,7 +43,7 @@ Use the [Analytics.js QuickStart Guide](/docs/connections/sources/catalog/librar For information about upgrading to Analytics.js 2.0, see [Upgrade to Analytics.js 2.0](/docs/connections/sources/catalog/libraries/website/javascript/upgrade-to-ajs2). -### Upgrade your existing Javascript sources +### Upgrade your existing JavaScript sources For information about upgrading your existing JavaScript sources, see [Upgrade to Analytics.js 2.0](/docs/connections/sources/catalog/libraries/website/javascript/upgrade-to-ajs2). @@ -185,10 +185,10 @@ analytics.trackForm(form, event, [properties]) Field | | Type | Description ----- | | ---- | ----------- `form(s)` | | Element or Array | The form element to track or an array of form elements or jQuery objects. _Note: trackForm takes an element, not a CSS selector._ -`event` | | Element or Array | The form element to track or an array of form elements or jQuery objects. _Note: trackForm takes an element, not a CSS selector._ -`form(s)` | | Element or Array | The form element to track or an array of form elements or jQuery objects. _Note: trackForm takes an element, not a CSS selector._ +`event` | | String or Function | The name of the event, passed to the `track` method. Or a **function** that returns a string to use as the name of the `track` event. `properties` | optional | Object or Function | A dictionary of properties to pass with the track method. Or a **function** that returns an object to use as the `properties` of the event. + Example: ```js @@ -302,7 +302,7 @@ Find more details about `group`, including the `group` payload, in [the Group Sp The Alias method combines two unassociated user identities. Segment usually handles aliasing automatically when you call `identify` on a user, however some tools require an explicit `alias` call. -This is an advanced method, but it is required to manage user identities successfully in *some* of our destinations such as [Kissmetrics](/docs/connections/destinations/catalog/kissmetrics/#alias) and [Mixpanel](/docs/connections/destinations/catalog/mixpanel/#alias). +This is an advanced method, but it is required to manage user identities successfully in *some* Segment destinations like [Kissmetrics](/docs/connections/destinations/catalog/kissmetrics/#alias) and [Mixpanel](/docs/connections/destinations/catalog/mixpanel/#alias). The Alias method follows the format below: @@ -319,7 +319,7 @@ Field | | Type | Description `options` | optional | Object | A dictionary of options. For example, [enable or disable specific destinations](#managing-data-flow-with-the-integrations-object) for the call. `callback` | optional | Function | A function that is executed after a short timeout, giving the browser time to make outbound requests first. -For more details about Alias, including the **`alias` call payload**, check out our [Spec](/docs/connections/spec/alias/). +For more details about Alias, including the **`alias` call payload**, check out the [Segment Spec](/docs/connections/spec/alias/). ## Utility Methods @@ -418,7 +418,7 @@ analytics.timeout(500); ``` > success "Tip" -> If you're triggering ad network conversion pixels, we recommend extending timeout to 500ms to account for slow load times. +> If you're triggering ad network conversion pixels, Segment recommends extending timeout to 500ms to account for slow load times. ### Reset or Logout @@ -478,7 +478,7 @@ You don't need to include `'All': true` in this call because it is implied as th Destination flags are **case sensitive** and match [the destination's name in the docs](/docs/connections/destinations/) (for example, "AdLearn Open Platform", "awe.sm", "Mailchimp", etc). If a Destination has more than one acceptable name, this appears in the documentation for that destination. > success "Tip" -> Business tier customers can filter Track calls from the Source Schema page in the Segment UI. We recommend that you use the UI to simplify filter management and make updates without changing your site's code. +> Business tier customers can filter Track calls from the Source Schema page in the Segment UI. Segment recommends that you use the UI to simplify filter management and make updates without changing your site's code. ### Load Options @@ -553,7 +553,7 @@ analytics.load("", { You can check to see if batching works by checking your source's debugger in **Sources > Debugger**. When you select an event and view the **Raw** code, the `receivedAt` time of all the events in the batch should be the same. #### Batch size -The batch size is the threshold that forces all batched events to be sent once it's reached. For example, `size: 10` means that after triggering 10 events, Analytics.js sends those 10 events together as a batch to Segment. +The batch size is the threshold that forces all batched events to be sent once it's reached. For example, `size: 10` means that after triggering 10 events, Analytics.js sends those 10 events together as a batch to Segment. Your total batched events can't exceed the maximum payload size of 500 KB, with a limit of 32 KB for each event in the batch. If the 500 KB limit is reached, the batch will be split. @@ -677,7 +677,7 @@ const identityStitching = () => { return identity } -// Registers our new plugin into Analytics.js +// Registers Segment's new plugin into Analytics.js await window.analytics.register(identityStitching()) ``` @@ -707,7 +707,7 @@ window.analytics.ready(() => { }) ``` -You can view Segment's [existing plugins](https://github.com/segmentio/analytics-next/tree/master/src/plugins){:target="_blank"} to see more examples. +You can view Segment's [existing plugins](https://github.com/segmentio/analytics-next/tree/master/src/plugins){:target="_blank"} to see more examples. ### Register a plugin Registering plugins enable you to modify your analytics implementation to best fit your needs. You can register a plugin using this: @@ -727,7 +727,7 @@ Segment offers video player 'plugins' so you can quickly collect video events us ## Cross-Subdomain Analytics -Analytics.js tracks across subdomains out of the box; all of our destinations fully support this feature. +Analytics.js tracks across subdomains out of the box; all Segment destinations fully support this feature. ## Analytics.js Performance From 040511df41405ede1ac4b85dfe9d61f68585d742 Mon Sep 17 00:00:00 2001 From: markzegarelli Date: Thu, 12 May 2022 08:58:56 -0700 Subject: [PATCH 19/20] Updated Tracking Plan link (#2887) --- .../spec/ecommerce-tracking-plan.md | 18 +++++++++--------- src/protocols/tracking-plan/best-practices.md | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/connections/spec/ecommerce-tracking-plan.md b/src/connections/spec/ecommerce-tracking-plan.md index c667b9aaa0..66a901e706 100644 --- a/src/connections/spec/ecommerce-tracking-plan.md +++ b/src/connections/spec/ecommerce-tracking-plan.md @@ -12,7 +12,7 @@ That's where a tracking plan comes in. A tracking plan is a living document that [Learn more about the value and function of a tracking plan.](/docs/protocols/tracking-plan/create/) -In this guide, we'll share with you the core events most relevant to e-commerce companies that can get you started immediately in understanding your customers and driving sales. +In this guide, you'll learn the core events most relevant to e-commerce companies that can get you started immediately in understanding your customers and driving sales. [Talk to a product specialist today](https://segment.com/contact/sales) about building a clean, high-quality data spec so you can focus on brand engagement and sales growth. @@ -20,7 +20,7 @@ In this guide, we'll share with you the core events most relevant to e-commerce Before diving into specific event tracking, you'll want to make sure you track who your users are with the the `.identify()` call. You should call `.identify()` whenever a visitor provides you with a piece of information, at which point they become "known users." The `.identify()` call creates or updates a record of your customer with a set of traits in your tools and warehouse. But how do you choose which traits about your user to include? -Traits are pieces of data that you track about a specific user. Read our guide about selecting traits to learn more. +Traits are pieces of data that you track about a specific user. Read the guide about selecting traits to learn more. Here are the most common user traits e-commerce companies include in their tracking: @@ -79,7 +79,7 @@ Given the power you have in your downstream tools to create cohorts based on the Now that you are tracking who your users are, you can work on what they're doing on your website or in your app with a `.track()` call. Tracking customer events lets you learn about your customers, measure the impact of your marketing efforts and product decisions, and proactively engage your customers in a meaningful way that drives sales. -[Read our event tracking guide to learn more about tracking the right events.](/docs/protocols/tracking-plan/best-practices/) +[Read the event tracking guide to learn more about tracking the right events.](/docs/protocols/tracking-plan/best-practices/) E-commerce businesses, unlike SaaS or consumer apps that optimize for product engagement, focus on directing users down their funnels to a conversion goal, like purchasing a product. To best understand why customers convert, it's important to track and measure all key funnel events. @@ -96,7 +96,7 @@ There are also auxiliary actions to track to measure your customer's engagement - Product List Filtered -Lastly, we have a set of semantic campaign events that are automatically collected so you can understand the conversions in these specific channels: +Lastly, Segment has a set of semantic campaign events that are automatically collected so you can understand the conversions in these specific channels: - Email Opened - Email Link Clicked @@ -108,9 +108,9 @@ Lastly, we have a set of semantic campaign events that are automatically collect [Check out the full list of e-commerce events you should track.](/docs/connections/spec/ecommerce/v2) -You may notice a pattern in the event names. We've selected the "Object Action" naming convention to ensure that all of our event data is clean and easily analyzable, while choosing "snake\_case" for the traits and properties. It doesn't matter what you choose, so long as it's consistent. Without a uniform and enforced naming framework to guide developers that add tracking code later, your data could get marred with conflicting naming structures. Learn more about the importance of naming conventions. +You may notice a pattern in the event names. Segment selected the "Object Action" naming convention to ensure that all event data is clean and easily analyzable, while choosing "snake\_case" for the traits and properties. It doesn't matter what you choose, so long as it's consistent. Without a uniform and enforced naming framework to guide developers that add tracking code later, your data could get marred with conflicting naming structures. Learn more about the importance of naming conventions. -_We recommend tracking core checkout activity on the server-side. Learn more about_ [tracking on the client vs. server](/docs/guides/how-to-guides/collect-on-client-or-server/). +_Segment recommends tracking core checkout activity on the server-side. Learn more about_ [tracking on the client vs. server](/docs/guides/how-to-guides/collect-on-client-or-server/). ## Selecting your properties @@ -129,7 +129,7 @@ For e-commerce, since most events are customers choosing, browsing, and checking These traits must be included because many tools rely on them for analysis. If there was one of them missing, the call would be ignored. -_Using a specific tool and want to see how Segment handles sending calls to it?_ [Check out the documentation.](https://segment.com/docs/connections/destinations/) +_Using a specific tool and want to see how Segment handles sending calls to it?_ [Check out the documentation.](/docs/connections/destinations/) Here is an example `.track()` call: @@ -179,7 +179,7 @@ In analytics-android:     Analytics.with(context).track("Order Completed", new Properties().putValue("order_id", "50314b8e9bcf000000000000").putValue("total", 20).putValue("currency", "USD").putValue("products", "Coupon")); ``` -It's important that these events contain particular properties, such as `sku` , otherwise the downstream tools won't be able to create out-of-the-box revenue and sales reports. Learn more about semantic properties in our e-commerce spec. +It's important that these events contain particular properties, such as `sku` , otherwise the downstream tools won't be able to create out-of-the-box revenue and sales reports. Learn more about semantic properties in the e-commerce spec. ## Using data to understand why your customers don't convert @@ -189,6 +189,6 @@ Aside from funnel health, having these key pieces of customer data gives compani Without taking this critical step of mapping out key customer events, businesses often spend too much time revisiting their data model or analyzing impartial data sets. Instead they could spend that time understanding and addressing customers' needs. -_Want to get started immediately?_ [Download our e-commerce tracking plan template](https://docs.google.com/spreadsheets/d/1lzvjMr5WlOR89on7XeFYCIFji6w02zK1yQeei0iu5wQ/edit?usp=sharing). +_Want to get started immediately?_ [Download the e-commerce tracking plan template](https://docs.google.com/spreadsheets/d/1TA6qTcDHoZzsG7-C6p5yHGximDxqoNtizguKs7Z0av4/view). [Talk to a product specialist today](https://segment.com/contact/sales) _about building a clean, high-quality data spec so you can focus on brand engagement and sales growth._ diff --git a/src/protocols/tracking-plan/best-practices.md b/src/protocols/tracking-plan/best-practices.md index b2fd2701c1..03c9de0794 100644 --- a/src/protocols/tracking-plan/best-practices.md +++ b/src/protocols/tracking-plan/best-practices.md @@ -5,7 +5,7 @@ redirect_from: - '/protocols/tracking-plan/' --- -Let's face it, figuring out what events to track in Segment can feel overwhelming. Fortunately, we've helped 1000s of customers through this process and have amassed a ton of resources to help you get started. Whether you're a small team just getting your app off the ground, or a highly complex enterprise with 100s of stakeholders, these resources can help! +Figuring out what events to track in Segment can feel overwhelming. Fortunately, Segment has helped 1000s of customers through this process and have amassed a ton of resources to help you get started. Whether you're a small team just getting your app off the ground, or a highly complex enterprise with 100s of stakeholders, these resources can help! That being said, be prepared to invest time defining how you want to track data. Any investment in improving data quality will reap massive rewards, and compound over time by allowing your analytics teams to produce better insights, your marketing teams to run better campaigns and so much more. From 51e4ac390571c61281d126e07fc34120f4ae9dd6 Mon Sep 17 00:00:00 2001 From: markzegarelli Date: Thu, 12 May 2022 09:35:02 -0700 Subject: [PATCH 20/20] Catalog update (#2893) --- src/_data/catalog/destination_categories.yml | 2 +- src/_data/catalog/destinations.yml | 259 ++++++++++++++---- src/_data/catalog/regional-supported.yml | 18 +- src/_data/catalog/source_categories.yml | 2 +- src/_data/catalog/sources.yml | 2 +- .../destinations/catalog/flagship-io/index.md | 7 + .../destinations/catalog/koala/index.md | 7 + 7 files changed, 247 insertions(+), 50 deletions(-) create mode 100644 src/connections/destinations/catalog/flagship-io/index.md create mode 100644 src/connections/destinations/catalog/koala/index.md diff --git a/src/_data/catalog/destination_categories.yml b/src/_data/catalog/destination_categories.yml index 8c44ee5a7a..7f15cd1041 100644 --- a/src/_data/catalog/destination_categories.yml +++ b/src/_data/catalog/destination_categories.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination categories last updated 2022-05-10 +# destination categories last updated 2022-05-12 items: - display_name: A/B Testing slug: a-b-testing diff --git a/src/_data/catalog/destinations.yml b/src/_data/catalog/destinations.yml index 709d4c1066..c78a27c951 100644 --- a/src/_data/catalog/destinations.yml +++ b/src/_data/catalog/destinations.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination data last updated 2022-05-10 +# destination data last updated 2022-05-12 items: - id: 60b5d0a01f3726b85dc05aab display_name: 2mee @@ -8959,7 +8959,7 @@ items: display_name: Close name: Close slug: close - hidden: true + hidden: false endpoints: - us regions: @@ -8968,7 +8968,7 @@ items: previous_names: - Close website: https://www.close.com/ - status: PUBLIC_BETA + status: PUBLIC categories: - CRM logo: @@ -14788,6 +14788,60 @@ items: label: Deep Link URL Scheme (iOS) actions: [] presets: [] +- id: 626153e34fb8f47a32f8deab + display_name: Flagship.io + name: Flagship.io + slug: flagship-io + hidden: false + endpoints: + - us + regions: + - us + url: connections/destinations/catalog/flagship-io + previous_names: + - Flagship.io + website: https://www.flagship.io/ + status: PUBLIC_BETA + categories: + - Performance Monitoring + - Personalization + - A/B Testing + logo: + url: https://cdn.filepicker.io/api/file/JQO954rYQjuyhGx3F3wY + mark: + url: https://cdn.filepicker.io/api/file/j5SOYSkWSGKDt9vSNnq3 + methods: + track: false + identify: true + group: true + alias: false + page: false + platforms: + browser: true + mobile: true + server: true + components: [] + browserUnbundlingSupported: false + browserUnbundlingPublic: false + replay: false + connection_modes: + device: + web: false + mobile: false + server: false + cloud: + web: false + mobile: false + server: false + settings: + - name: apiKey + type: string + defaultValue: '' + description: You can find the API Key on the integration setting page of Flagship.io + required: true + label: API Key + actions: [] + presets: [] - id: 54521fd625e721e32a72eeb1 display_name: Flurry name: Flurry @@ -18480,7 +18534,11 @@ items: browser: true mobile: true server: true - components: [] + components: + - code: >- + https://github.com/segmentio/integrations/tree/master/integrations/adwords-remarketing-lists + owner: SEGMENT + type: SERVER browserUnbundlingSupported: false browserUnbundlingPublic: true replay: false @@ -18490,9 +18548,9 @@ items: mobile: false server: false cloud: - web: false - mobile: false - server: false + web: true + mobile: true + server: true settings: - name: account type: string @@ -25311,6 +25369,129 @@ items: label: Send Placed Order Events as Order Completed actions: [] presets: [] +- id: 6230c835c0d6535357ee950d + display_name: Koala + name: Koala + slug: koala + hidden: false + endpoints: + - us + regions: + - us + url: connections/destinations/catalog/koala + previous_names: + - Koala + website: http://www.segment.com + status: PUBLIC_BETA + categories: [] + logo: + url: https://cdn.filepicker.io/api/file/skrkLBQcQr6yFzEYxKId + mark: + url: https://cdn.filepicker.io/api/file/ALuFy4ulTkOtKWEGcZpj + methods: + track: true + identify: true + group: true + alias: true + page: true + platforms: + browser: true + mobile: false + server: false + components: [] + browserUnbundlingSupported: false + browserUnbundlingPublic: false + replay: false + connection_modes: + device: + web: false + mobile: false + server: false + cloud: + web: false + mobile: false + server: false + settings: + - name: project_slug + type: string + defaultValue: '' + description: Please enter your project's slug found in your Koala project settings. + required: true + label: Koala Project Slug + actions: + - id: aopPJJHdZzvsLiLFdnqxkz + name: Identify Visitor + slug: identifyVisitor + description: Update visitor traits in Koala. + platform: WEB + hidden: false + defaultTrigger: type = "identify" + fields: + - id: 75n6MDoS2tr4VX7tLaDKvD + sortOrder: 0 + fieldKey: traits + label: Traits + type: OBJECT + description: Traits to associate with the visitor in Koala. + placeholder: '' + defaultValue: + '@path': $.traits + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: qQD2p76EPqWJsqmGCJJpdf + name: Track Event + slug: trackEvent + description: Send visitor events to Koala. + platform: WEB + hidden: false + defaultTrigger: type = "track" + fields: + - id: nzgppm936dJcJYasQi3ND4 + sortOrder: 0 + fieldKey: event + label: Event Name + type: STRING + description: The event name. + placeholder: '' + defaultValue: + '@path': $.event + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: aZviJGq5YivZUDDndNo6K9 + sortOrder: 1 + fieldKey: properties + label: Event Properties + type: OBJECT + description: Properties to send with the event. + placeholder: '' + defaultValue: + '@path': $.properties + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + presets: + - actionId: qQD2p76EPqWJsqmGCJJpdf + name: Track Event + fields: + event: + '@path': $.event + properties: + '@path': $.properties + trigger: type = "track" + - actionId: aopPJJHdZzvsLiLFdnqxkz + name: Identify Visitor + fields: + traits: + '@path': $.traits + trigger: type = "identify" - id: 5695db50e954a874ca44ce63 display_name: Kochava name: Kochava @@ -26676,16 +26857,20 @@ items: mark: url: https://cdn.filepicker.io/api/file/vu6U5mVXQmqafnoyD7Sw methods: - track: false - identify: false + track: true + identify: true group: false alias: false page: false platforms: - browser: true - mobile: true + browser: false + mobile: false server: true - components: [] + components: + - code: >- + https://github.com/segmentio/integrations/tree/master/integrations/marketo-static-lists + owner: SEGMENT + type: SERVER browserUnbundlingSupported: false browserUnbundlingPublic: true replay: false @@ -26696,8 +26881,8 @@ items: server: false cloud: web: false - mobile: false - server: false + mobile: true + server: true settings: - name: clientId type: string @@ -29628,7 +29813,11 @@ items: browser: true mobile: true server: true - components: [] + components: + - code: >- + https://github.com/segmentio/integrations/tree/master/integrations/personas-facebook-ads + owner: SEGMENT + type: SERVER browserUnbundlingSupported: false browserUnbundlingPublic: true replay: false @@ -29638,9 +29827,9 @@ items: mobile: false server: false cloud: - web: false - mobile: false - server: false + web: true + mobile: true + server: true settings: - name: account type: string @@ -40421,6 +40610,12 @@ items: mobile: true server: true settings: + - name: clickTracking + type: boolean + defaultValue: true + description: Automatically track button and link clicks + required: false + label: Click Tracking - name: cookieDomain type: string defaultValue: '' @@ -40447,14 +40642,6 @@ items: href="https://www.woopra.com">Woopra. required: true label: Domain - - name: downloadPause - type: number - defaultValue: 200 - description: >- - Time in millisecond to pause the browser to ensure that the event is - tracked when visitor clicks on a download url. - required: false - label: Download Pause - name: downloadTracking type: boolean defaultValue: true @@ -40485,32 +40672,12 @@ items: description: Do not include links to subdomains as outgoing links required: false label: Outgoing Ignore Subdomains - - name: outgoingPause - type: number - defaultValue: 400 - description: >- - Time in millisecond to pause the browser to ensure that the event is - tracked when visitor clicks on an outgoing url. - required: false - label: Outgoing Pause - name: outgoingTracking type: boolean defaultValue: true description: Track external links clicks on the web page required: false label: Outgoing Tracking - - name: ping - type: boolean - defaultValue: true - description: Ping Woopra servers to ensure that the visitor is still on the webpage - required: false - label: Ping - - name: pingInterval - type: number - defaultValue: 12000 - description: Time interval in milliseconds between each ping - required: false - label: Ping Interval actions: [] presets: [] - id: 54abfde6db31d978f14a77d0 diff --git a/src/_data/catalog/regional-supported.yml b/src/_data/catalog/regional-supported.yml index d0e61d5312..65efb2e60b 100644 --- a/src/_data/catalog/regional-supported.yml +++ b/src/_data/catalog/regional-supported.yml @@ -1,5 +1,5 @@ # AUTOGENERATED LIST OF CONNECTIONS THAT SUPPORT REGIONAL -# Last updated 2022-05-10 +# Last updated 2022-05-12 warehouses: - id: WcjBCzUGff display_name: Azure SQL Data Warehouse @@ -1737,6 +1737,14 @@ destinations: - eu endpoints: - us + - id: 626153e34fb8f47a32f8deab + display_name: Flagship.io + slug: flagship-io + url: connections/destinations/catalog/flagship-io + regions: + - us + endpoints: + - us - id: 54521fd625e721e32a72eeb1 display_name: Flurry slug: flurry @@ -2287,6 +2295,14 @@ destinations: - eu endpoints: - us + - id: 6230c835c0d6535357ee950d + display_name: Koala + slug: koala + url: connections/destinations/catalog/koala + regions: + - us + endpoints: + - us - id: 5695db50e954a874ca44ce63 display_name: Kochava slug: kochava diff --git a/src/_data/catalog/source_categories.yml b/src/_data/catalog/source_categories.yml index 4714a626ad..fdb7ff5b7a 100644 --- a/src/_data/catalog/source_categories.yml +++ b/src/_data/catalog/source_categories.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# source cateogries last updated 2022-05-10 +# source cateogries last updated 2022-05-12 items: - display_name: A/B Testing slug: a-b-testing diff --git a/src/_data/catalog/sources.yml b/src/_data/catalog/sources.yml index d7578bdc7b..412c19776b 100644 --- a/src/_data/catalog/sources.yml +++ b/src/_data/catalog/sources.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# sources last updated 2022-05-10 +# sources last updated 2022-05-12 items: - id: 8HWbgPTt3k display_name: .NET diff --git a/src/connections/destinations/catalog/flagship-io/index.md b/src/connections/destinations/catalog/flagship-io/index.md new file mode 100644 index 0000000000..16801af065 --- /dev/null +++ b/src/connections/destinations/catalog/flagship-io/index.md @@ -0,0 +1,7 @@ +--- +title: 'Flagship.io Destination' +hidden: true +id: 626153e34fb8f47a32f8deab +published: false +beta: true +--- diff --git a/src/connections/destinations/catalog/koala/index.md b/src/connections/destinations/catalog/koala/index.md new file mode 100644 index 0000000000..ac45605b5b --- /dev/null +++ b/src/connections/destinations/catalog/koala/index.md @@ -0,0 +1,7 @@ +--- +title: 'Koala Destination' +hidden: true +id: 6230c835c0d6535357ee950d +published: false +beta: true +---