From a1e384f095722cf93de7877df37e6c3bb7d5600f Mon Sep 17 00:00:00 2001 From: Leonel Sanches <113376080+seg-leonelsanches@users.noreply.github.com> Date: Mon, 7 Oct 2024 16:39:19 -0700 Subject: [PATCH 1/7] Google Campaign Manager 360 destination docs. --- Gemfile.lock | 9 ++- .../index.md | 60 +++++++++++++++++++ 2 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md diff --git a/Gemfile.lock b/Gemfile.lock index 8f5e6c086c..f2fd75f73c 100755 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,7 +45,7 @@ GEM ffi (1.15.5) filesize (0.2.0) forwardable-extended (2.6.0) - google-protobuf (3.23.2-x86_64-darwin) + google-protobuf (3.23.2) http_parser.rb (0.8.0) httpclient (2.8.3) i18n (1.13.0) @@ -87,7 +87,9 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) - nokogiri (1.15.2-x86_64-darwin) + mini_portile2 (2.8.7) + nokogiri (1.15.2) + mini_portile2 (~> 2.8.2) racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) @@ -104,8 +106,9 @@ GEM rouge (4.1.2) ruby2_keywords (0.0.5) safe_yaml (1.0.5) - sass-embedded (1.62.1-x86_64-darwin) + sass-embedded (1.62.1) google-protobuf (~> 3.21) + rake (>= 10.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thread_safe (0.3.6) diff --git a/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md new file mode 100644 index 0000000000..73d7f5ae96 --- /dev/null +++ b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md @@ -0,0 +1,60 @@ +--- +title: Google Campaign Manager 360 +strat: google +hide-boilerplate: true +hide-dossier: false +id: 123456 +hidden: true +private: true +versions: + - name: "Google Campaign Manager 360" + link: '/docs/connections/destinations/catalog/actions-google-campaign-manager-360/' +--- + +The Google Campaign Manager 360 destination allows users to upload [conversions](https://developers.google.com/doubleclick-advertisers/guides/conversions_upload){:target="_blank"} and [conversion enhancements](https://developers.google.com/doubleclick-advertisers/guides/conversions_ec){:target="_blank"} to Google Campaign Manager 360. Marketers can use this integration to attribute conversions to specific campaigns, ad groups, and ads. + +## Getting Started + +> info "" +> You can connect the Google Campaign Manager 360 Destination to an event source, Reverse ETL source, or Engage space. + +### Prerequisites + +Before you begin, you need to have a Google Campaign Manager 360 account, with a Profile ID and a Floodlight Configuration ID. It'll be also necessary to configure the Floodlight activities you want to track. + +### Connect to Google Campaign Manager 360 + +1. From the Segment web app, navigate to **Catalog > Destinations**. +2. Search for “Google Campaign Manager 360” in the Destinations Catalog, and select it. +3. Click **Add destination**. +4. Select the source that will send data to Google Campaign Manager 360. + * If you select an Engage space, you'll be redirected to Engage to complete the following steps. + * If you select a Reverse ETL source, you must enter a name for your destination and click **Create destination**. +5. On the **Settings** tab for your Google Campaign Manager destination: + * Enter your **Profile ID**. Optionally, you can also provide your default **Floodlight Configuration ID** and/or your default **Floodlight Activity ID**. These fields are optional, but if you provide them, they will be used as defaults for all events sent to Google Campaign Manager 360. Otherwise, you can override these values in your mappings. +6. Click **Save**. +7. Follow the steps in the Destinations Actions documentation to [customize your mappings](/docs/connections/destinations/actions/#customize-mappings). + +## Hashing + +Google requires you to hash all PII before sending it to the Google API. + +The Google Campaign Manager 360 destination supports hashing for the following fields: + +* Email +* Phone +* First Name +* Last Name +* Street Address + +The hashing algorithm used is SHA-256. If incoming data arrives already hashed, the destination will not hash it again. The values will be sent as-is to Google. + +{% include components/actions-fields.html settings="true"%} + +## FAQ and troubleshooting + +### Refreshing access tokens + +When you use OAuth to authenticate into the Google Campaign Manager 360 destination, Segment stores an access token and refresh token. Access tokens for Google Campaign Manager 360 expire after one hour. Once expired, Segment receives an error and then uses the refresh token to fetch a new access token. This results in two API requests to Google Campaign Manager 360, one failure and one success. + +Because of the duplicate API requests, you may see a warning in Google for unprocessed conversions due to incorrect or missing OAuth credentials. This warning is expected and does not indicate data loss. Google has confirmed that conversions are being processed, and OAuth retry behavior will not cause any issues for your web conversions. Whenever possible, Segment caches access tokens to reduce the total number of requests made to Google Campaign Manager 360. \ No newline at end of file From c0798604d58868920204077aa2622f7e9975fe3e Mon Sep 17 00:00:00 2001 From: Leonel Sanches <113376080+seg-leonelsanches@users.noreply.github.com> Date: Tue, 8 Oct 2024 09:32:56 -0700 Subject: [PATCH 2/7] Update src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- .../catalog/actions-google-campaign-manager-360/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md index 73d7f5ae96..c01b6d8650 100644 --- a/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md +++ b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md @@ -20,7 +20,7 @@ The Google Campaign Manager 360 destination allows users to upload [conversions] ### Prerequisites -Before you begin, you need to have a Google Campaign Manager 360 account, with a Profile ID and a Floodlight Configuration ID. It'll be also necessary to configure the Floodlight activities you want to track. +Before you begin, you need to have a Google Campaign Manager 360 account, with a Profile ID and a Floodlight Configuration ID. These are necessary to configure the Floodlight activities you want to track. ### Connect to Google Campaign Manager 360 From e45e248abe327094551ec6e92af6d2d6bbf2c6f5 Mon Sep 17 00:00:00 2001 From: Leonel Sanches <113376080+seg-leonelsanches@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:44:14 -0800 Subject: [PATCH 3/7] CM360 Actions in detail. --- .../index.md | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md index c01b6d8650..42548ece63 100644 --- a/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md +++ b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md @@ -3,7 +3,7 @@ title: Google Campaign Manager 360 strat: google hide-boilerplate: true hide-dossier: false -id: 123456 +id: 66e97a37a8f396642c0bd33c hidden: true private: true versions: @@ -35,6 +35,52 @@ Before you begin, you need to have a Google Campaign Manager 360 account, with a 6. Click **Save**. 7. Follow the steps in the Destinations Actions documentation to [customize your mappings](/docs/connections/destinations/actions/#customize-mappings). +## Available actions + +The Google Campaign Manager 360 Action Destination supports the following actions: + +* [Conversion Upload](#conversion-upload) +* [Conversion Adjustment Upload](#conversion-adjustment-upload) + +### Conversion Upload + +The Conversion Upload action allows you to send conversion data to Google Campaign Manager 360. This action is useful for tracking conversions that occur on your website or app. + +#### Fields + +The Google Campaign Manager 360 destination requires the following fields for the Conversion Upload action: + +* **Required ID**: The identifier that identifies a user for the conversion. Only one value at a time can be provided, from the following fields: + * Google Click ID (gclid); + * Display Click ID (dclid); + * Encrypted User ID; + * Mobile Device ID; + * Match ID; + * Impression ID; + * Encrypted User ID Candidates; +* **Timestamp**: The time the conversion occurred; +* **Value**: The value of the conversion; +* **Ordinal**: The ordinal of the conversion. This field is used to control how conversions of the same user and day are de-duplicated. + +### Conversion Adjustment Upload + +The Conversion Adjustment Upload action allows you to send conversion adjustment data to Google Campaign Manager 360. This action is useful for adjustments to conversions that have already been uploaded, as well as enhancing conversions. + +#### Fields + +The Google Campaign Manager 360 destination requires the following fields for the Conversion Adjustment Upload action: + +* **Required ID**: The identifier that identifies a user for the conversion. Only one value at a time can be provided, from the following fields: + * Google Click ID (gclid); + * Display Click ID (dclid); + * Encrypted User ID; + * Mobile Device ID; + * Match ID; + * Impression ID; +* **Timestamp**: The time the conversion occurred; +* **Value**: The value of the conversion; +* **Ordinal**: The ordinal of the conversion. This field is used to control how conversions of the same user and day are de-duplicated. + ## Hashing Google requires you to hash all PII before sending it to the Google API. From bf871c2c1819439a9dba22815ff1374e0ff1537a Mon Sep 17 00:00:00 2001 From: Thomas Gilbert <64277654+tcgilbert@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:13:55 -0500 Subject: [PATCH 4/7] remove gemlock.file changes --- Gemfile.lock | 147 --------------------------------------------------- 1 file changed, 147 deletions(-) delete mode 100755 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100755 index f2fd75f73c..0000000000 --- a/Gemfile.lock +++ /dev/null @@ -1,147 +0,0 @@ -GIT - remote: https://github.com/jekyll/jekyll.git - revision: 58a1f62b2349bb477fc9999c40331cecdca577d8 - specs: - jekyll (4.3.2) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (>= 0.3.6, < 0.5) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.4) - public_suffix (>= 2.0.2, < 6.0) - algolia_html_extractor (2.6.4) - json (~> 2.0) - nokogiri (~> 1.10) - algoliasearch (1.27.5) - httpclient (~> 2.8, >= 2.8.3) - json (>= 1.5.1) - colorator (1.1.0) - commonmarker (0.23.9) - concurrent-ruby (1.2.2) - dotenv (2.8.1) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - faraday (2.7.5) - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) - ffi (1.15.5) - filesize (0.2.0) - forwardable-extended (2.6.0) - google-protobuf (3.23.2) - http_parser.rb (0.8.0) - httpclient (2.8.3) - i18n (1.13.0) - concurrent-ruby (~> 1.0) - jekyll-algolia (1.7.1) - algolia_html_extractor (~> 2.6) - algoliasearch (~> 1.26) - filesize (~> 0.1) - jekyll (>= 3.6, < 5.0) - json (~> 2.0) - nokogiri (~> 1.6) - progressbar (~> 1.9) - verbal_expressions (~> 0.1.5) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-dotenv (0.2.0) - dotenv (~> 2.7) - jekyll (~> 4) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-last-modified-at (1.3.0) - jekyll (>= 3.7, < 5.0) - posix-spawn (~> 0.3.9) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-sass-converter (3.0.0) - sass-embedded (~> 1.54) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - json (2.6.3) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.4.0) - mini_portile2 (2.8.7) - nokogiri (1.15.2) - mini_portile2 (~> 2.8.2) - racc (~> 1.4) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - posix-spawn (0.3.15) - premonition (2.0.1) - progressbar (1.13.0) - public_suffix (5.0.1) - racc (1.6.2) - rake (13.0.6) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.5) - rouge (4.1.2) - ruby2_keywords (0.0.5) - safe_yaml (1.0.5) - sass-embedded (1.62.1) - google-protobuf (~> 3.21) - rake (>= 10.0.0) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - thread_safe (0.3.6) - tzinfo (1.2.11) - thread_safe (~> 0.1) - tzinfo-data (1.2023.3) - tzinfo (>= 1.0.0) - unicode-display_width (2.4.2) - verbal_expressions (0.1.5) - wdm (0.1.1) - webrick (1.8.1) - -PLATFORMS - ruby - x86_64-darwin-19 - x86_64-darwin-20 - -DEPENDENCIES - dotenv - faraday - jekyll! - jekyll-algolia - jekyll-commonmark - jekyll-dotenv - jekyll-include-cache - jekyll-last-modified-at - jekyll-redirect-from - jekyll-sitemap - premonition (~> 2.0.0) - rake - tzinfo (~> 1.2) - tzinfo-data - wdm (~> 0.1.0) - -BUNDLED WITH - 2.2.18 From 40871845235a8de67a6476a20e6a5df013ffb781 Mon Sep 17 00:00:00 2001 From: Thomas Gilbert Date: Mon, 16 Dec 2024 17:18:04 -0500 Subject: [PATCH 5/7] readd gemfile lock --- Gemfile.lock | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000000..8f5e6c086c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,144 @@ +GIT + remote: https://github.com/jekyll/jekyll.git + revision: 58a1f62b2349bb477fc9999c40331cecdca577d8 + specs: + jekyll (4.3.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.4) + public_suffix (>= 2.0.2, < 6.0) + algolia_html_extractor (2.6.4) + json (~> 2.0) + nokogiri (~> 1.10) + algoliasearch (1.27.5) + httpclient (~> 2.8, >= 2.8.3) + json (>= 1.5.1) + colorator (1.1.0) + commonmarker (0.23.9) + concurrent-ruby (1.2.2) + dotenv (2.8.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + faraday (2.7.5) + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.15.5) + filesize (0.2.0) + forwardable-extended (2.6.0) + google-protobuf (3.23.2-x86_64-darwin) + http_parser.rb (0.8.0) + httpclient (2.8.3) + i18n (1.13.0) + concurrent-ruby (~> 1.0) + jekyll-algolia (1.7.1) + algolia_html_extractor (~> 2.6) + algoliasearch (~> 1.26) + filesize (~> 0.1) + jekyll (>= 3.6, < 5.0) + json (~> 2.0) + nokogiri (~> 1.6) + progressbar (~> 1.9) + verbal_expressions (~> 0.1.5) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-dotenv (0.2.0) + dotenv (~> 2.7) + jekyll (~> 4) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-last-modified-at (1.3.0) + jekyll (>= 3.7, < 5.0) + posix-spawn (~> 0.3.9) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.6.3) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.8.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + nokogiri (1.15.2-x86_64-darwin) + racc (~> 1.4) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + posix-spawn (0.3.15) + premonition (2.0.1) + progressbar (1.13.0) + public_suffix (5.0.1) + racc (1.6.2) + rake (13.0.6) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.5) + rouge (4.1.2) + ruby2_keywords (0.0.5) + safe_yaml (1.0.5) + sass-embedded (1.62.1-x86_64-darwin) + google-protobuf (~> 3.21) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + thread_safe (0.3.6) + tzinfo (1.2.11) + thread_safe (~> 0.1) + tzinfo-data (1.2023.3) + tzinfo (>= 1.0.0) + unicode-display_width (2.4.2) + verbal_expressions (0.1.5) + wdm (0.1.1) + webrick (1.8.1) + +PLATFORMS + ruby + x86_64-darwin-19 + x86_64-darwin-20 + +DEPENDENCIES + dotenv + faraday + jekyll! + jekyll-algolia + jekyll-commonmark + jekyll-dotenv + jekyll-include-cache + jekyll-last-modified-at + jekyll-redirect-from + jekyll-sitemap + premonition (~> 2.0.0) + rake + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.0) + +BUNDLED WITH + 2.2.18 From 1f50ee1bc26e17d3ea4ca4471028fe89d6c1f847 Mon Sep 17 00:00:00 2001 From: Thomas Gilbert Date: Mon, 16 Dec 2024 17:24:29 -0500 Subject: [PATCH 6/7] Restore executable permissions for Gemfile.lock --- Gemfile.lock | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock old mode 100644 new mode 100755 From b254cdf1f914ea7a144fadb7a9c5865502189e94 Mon Sep 17 00:00:00 2001 From: stayseesong <83784848+stayseesong@users.noreply.github.com> Date: Tue, 17 Dec 2024 16:48:33 -0800 Subject: [PATCH 7/7] Apply suggestions from code review --- .../actions-google-campaign-manager-360/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md index 42548ece63..cc18d8d151 100644 --- a/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md +++ b/src/connections/destinations/catalog/actions-google-campaign-manager-360/index.md @@ -50,7 +50,7 @@ The Conversion Upload action allows you to send conversion data to Google Campai The Google Campaign Manager 360 destination requires the following fields for the Conversion Upload action: -* **Required ID**: The identifier that identifies a user for the conversion. Only one value at a time can be provided, from the following fields: +* **Required ID**: The identifier that identifies a user for the conversion. Only one value at a time can be provided from the following fields: * Google Click ID (gclid); * Display Click ID (dclid); * Encrypted User ID; @@ -58,8 +58,8 @@ The Google Campaign Manager 360 destination requires the following fields for th * Match ID; * Impression ID; * Encrypted User ID Candidates; -* **Timestamp**: The time the conversion occurred; -* **Value**: The value of the conversion; +* **Timestamp**: The time the conversion occurred. +* **Value**: The value of the conversion. * **Ordinal**: The ordinal of the conversion. This field is used to control how conversions of the same user and day are de-duplicated. ### Conversion Adjustment Upload @@ -77,8 +77,8 @@ The Google Campaign Manager 360 destination requires the following fields for th * Mobile Device ID; * Match ID; * Impression ID; -* **Timestamp**: The time the conversion occurred; -* **Value**: The value of the conversion; +* **Timestamp**: The time the conversion occurred. +* **Value**: The value of the conversion. * **Ordinal**: The ordinal of the conversion. This field is used to control how conversions of the same user and day are de-duplicated. ## Hashing