{"id":69608,"date":"2025-02-05T12:42:57","date_gmt":"2025-02-05T12:42:57","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/recaptcha-v3-with-google-tag-manager-server-side-tagging\/"},"modified":"2025-02-05T12:42:57","modified_gmt":"2025-02-05T12:42:57","slug":"recaptcha-v3-with-google-tag-manager-server-side-tagging","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=69608","title":{"rendered":"reCAPTCHA v3 With Google Tag Manager Server-side Tagging"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>I\u2019ve written about Google\u2019s <a href=\"https:\/\/www.simoahava.com\/analytics\/improve-google-analytics-bot-detection-with-recaptcha\/\">reCAPTCHA v3<\/a> before. It\u2019s a <em>verification API<\/em>, which analyzes the signals fed into it and returns a <strong>bot score<\/strong>, based on how \u201cbot-like\u201d the hits are.<\/p>\n<p>It\u2019s a great way to validate whether or not to collect data from certain sources that exhibit bot-like behavior. You\u2019ll want to ignore those in your analytics tools, for example, as they tend to add a lot of (unrealistic) noise to the data set.<\/p>\n<p>You can read more about how reCAPTCHA v3 works <a href=\"https:\/\/developers.google.com\/recaptcha\/docs\/v3\">here<\/a>.<\/p>\n<p>In my <a href=\"https:\/\/www.simoahava.com\/analytics\/recaptcha-v3-server-side-tagging\/(\/analytics\/improve-google-analytics-bot-detection-with-recaptcha\/)\">previous article<\/a>, you had to build the server endpoint for processing the reCAPTCHA requests yourself. If you remember, reCAPTCHA requires a custom-built API endpoint to process the verification requests.<\/p>\n<p>Luckily, with the advent of the <a href=\"https:\/\/www.simoahava.com\/analytics\/server-side-tagging-google-tag-manager\/\">Google Tag Manager Server container<\/a>, it\u2019s now trivial to build \u201clocal\u201d APIs yourself using the power of <a href=\"https:\/\/www.simoahava.com\/analytics\/custom-templates-guide-for-google-tag-manager\/\">custom templates<\/a>.<\/p>\n<div style=\"aspect-ratio: 1796 \/ 1534;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-v3-template.jpg\" title=\"reCATPCHA v3 template\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1534\" width=\"1796\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-v3-template.jpg#ZgotmplZ\" alt=\"reCATPCHA v3 template\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>In this guide, I\u2019ll show you how a new <strong>Client template<\/strong> I\u2019ve created does the legwork for you. It\u2019s designed to <strong>proxy<\/strong> the reCAPTCHA client-side library <em>and<\/em> to <strong>process<\/strong> the verification requests.<\/p>\n<p>At the time of writing, Client templates are not yet available in the <a href=\"https:\/\/tagmanager.google.com\/gallery\/\">Community Template Gallery<\/a>, so you\u2019ll need to do some <strong>manual importing<\/strong> instead.<\/p>\n<p>                <span class=\"simmer\"><br \/>\n  <span class=\"close\">X<\/span><\/p>\n<p>\n    <span class=\"fa fa-md fa-bell\"\/><br \/>\n    <strong>The Simmer Newsletter<\/strong>\n  <\/p>\n<p>\n    Subscribe to the <a href=\"https:\/\/www.simoahava.com\/newsletter\/\">Simmer newsletter<\/a> to get the latest news and content from Simo Ahava into your email inbox!\n  <\/p>\n<p>  <\/span><\/p>\n<h2 id=\"prerequisites\">Prerequisites<\/h2>\n<p>At this point I\u2019m assuming you already have a Google Tag Manager Server container. If not, check <a href=\"https:\/\/www.youtube.com\/watch?v=6OGbOh216mU\">this video<\/a> for instructions on how to get started with the deployment.<\/p>\n<p>If you want to write the bot score <strong>in a first-party cookie<\/strong>, I\u2019m also assuming you\u2019ve already <a href=\"https:\/\/developers.google.com\/tag-manager\/serverside\/custom-domain\">mapped a custom domain to your server-side endpoint<\/a>. As it currently stands, the template can <em>only<\/em> write same-site cookies.<\/p>\n<h2 id=\"import-the-client-template\">Import the Client template<\/h2>\n<p>The first thing you\u2019ll need to do is <strong>import the Client template<\/strong> into your Server container.<\/p>\n<p>Open <a href=\"https:\/\/raw.githubusercontent.com\/gtm-templates-simo-ahava\/recaptcha-v3\/main\/template.tpl\">this link<\/a> in a new browser tab, and then <strong>save the page as <code>template.tpl<\/code><\/strong>. Make sure the file extension is <code>.tpl<\/code> and not something else.<\/p>\n<div style=\"aspect-ratio: 936 \/ 820;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/save-page-as.jpg\" title=\"Save Page As\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"820\" width=\"936\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/save-page-as.jpg#ZgotmplZ\" alt=\"Save Page As\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Next, in the <strong>Server container<\/strong>, browse to <strong>Templates<\/strong>, and click <strong>New<\/strong> in the <strong>Client Templates<\/strong> section.<\/p>\n<div style=\"aspect-ratio: 2492 \/ 976;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/templates-new-client.jpg\" title=\"Templates new client\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"976\" width=\"2492\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/templates-new-client.jpg#ZgotmplZ\" alt=\"Templates new client\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>The <strong>Template Editor<\/strong> will now open. In the Template Editor, click open the overflow menu in the top-right corner, and choose <strong>Import<\/strong>.<\/p>\n<div style=\"aspect-ratio: 1006 \/ 710;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/import-client-template.jpg\" title=\"Import client template\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"710\" width=\"1006\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/import-client-template.jpg#ZgotmplZ\" alt=\"Import client template\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>On your computer, locate the <code>template.tpl<\/code> file you downloaded earlier, and import that file into the editor.<\/p>\n<p>You should see the Template Editor change to reflect the contents of the reCAPTCHA v3 template.<\/p>\n<div style=\"aspect-ratio: 1492 \/ 1012;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-v3.jpg\" title=\"recaptcha ready for edit\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1012\" width=\"1492\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-v3.jpg#ZgotmplZ\" alt=\"recaptcha ready for edit\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Finally, click the blue <strong>Save<\/strong> button in the top-right corner of the Template Editor and close the editor.<\/p>\n<p>You\u2019ve now managed to import the Client template into your container, and it\u2019s time to configure it.<\/p>\n<h2 id=\"generate-the-secrets-for-recaptcha-v3\">Generate the secrets for reCAPTCHA v3<\/h2>\n<p>To work with reCAPTCHA v3, you need to generate a <strong>Site key<\/strong> and a <strong>Secret key<\/strong>.<\/p>\n<p>Browse to <a href=\"https:\/\/www.google.com\/recaptcha\/admin\/create\">https:\/\/www.google.com\/recaptcha\/admin\/create<\/a> to register a new site.<\/p>\n<blockquote>\n<p>This is completely free to do!<\/p>\n<\/blockquote>\n<p>Fill in the fields as suggested. Make sure you\u2019ve selected <strong>reCAPTCHA v3<\/strong> as the service version, and add the domain(s) from which you will be communicating with the API into the <strong>Domains<\/strong> part. This is what the configuration looks like for <a href=\"https:\/\/www.teamsimmer.com\/\">https:\/\/www.teamsimmer.com\/<\/a>:<\/p>\n<div style=\"aspect-ratio: 2004 \/ 2192;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/register-new-site-recaptcha.jpg\" title=\"Register new site\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"2192\" width=\"2004\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/register-new-site-recaptcha.jpg#ZgotmplZ\" alt=\"Register new site\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Once you click <strong>Submit<\/strong>, you\u2019ll see a screen with your <strong>Site Key<\/strong> and your <strong>Secret Key<\/strong>.<\/p>\n<div style=\"aspect-ratio: 1598 \/ 1070;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-keys.jpg\" title=\"reCAPTCHA keys\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1070\" width=\"1598\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-keys.jpg#ZgotmplZ\" alt=\"reCAPTCHA keys\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<blockquote>\n<p><strong>Don\u2019t close this tab!<\/strong> You\u2019ll need this information shortly. You can find your reCAPTCHA site via the <a href=\"https:\/\/www.google.com\/recaptcha\/admin\/\">admin panel<\/a> as well.<\/p>\n<\/blockquote>\n<h2 id=\"create-the-client-in-your-server-container\">Create the Client in your Server container<\/h2>\n<p>Back in the Google Tag Manager Server container, browse to <strong>Clients<\/strong> and click to create a new Client.<\/p>\n<div style=\"aspect-ratio: 2498 \/ 826;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/create-new-client.jpg\" title=\"Create new client\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"826\" width=\"2498\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/create-new-client.jpg#ZgotmplZ\" alt=\"Create new client\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Choose the <strong>reCAPTCHA v3<\/strong> Client template from the <strong>Custom<\/strong> category of Client types. You should now see the Client ready for configuring.<\/p>\n<div style=\"aspect-ratio: 1804 \/ 1540;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/client-ready-for-edit.jpg\" title=\"Client ready for editing\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1540\" width=\"1804\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/client-ready-for-edit.jpg#ZgotmplZ\" alt=\"Client ready for editing\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<h3 id=\"add-the-keys-to-the-client\">Add the keys to the Client<\/h3>\n<p>Open the tab with the reCAPTCHA v3 site configuration.<\/p>\n<p>Remember, if you accidentally closed the tab, you can always locate the keys by opening the <a href=\"https:\/\/www.google.com\/recaptcha\/admin\/\">reCAPTCHA admin page<\/a>, choosing the <strong>Site<\/strong> you want to work with, and then clicking the settings cogwheel in the top bar.<\/p>\n<div style=\"aspect-ratio: 1782 \/ 510;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-admin.jpg\" title=\"reCAPTCHA admin\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"510\" width=\"1782\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-admin.jpg#ZgotmplZ\" alt=\"reCAPTCHA admin\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Copy-paste the <strong>Site key<\/strong> and the <strong>Secret key<\/strong> from the reCAPTCHA site configuration to their respective fields in the Client.<\/p>\n<div style=\"aspect-ratio: 898 \/ 322;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/keys-added.jpg\" title=\"Keys added\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"322\" width=\"898\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/keys-added.jpg#ZgotmplZ\" alt=\"Keys added\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<h3 id=\"configure-the-rest-of-the-settings\">Configure the rest of the settings<\/h3>\n<p>If you want to write the bot score in a browser cookie in order to, for example, access the bot score in your GTM Server (if you want to enrich other hits with the information), keep the <strong>Write bot score in a cookie<\/strong> option checked.<\/p>\n<p>If you also want to return the bot score in the HTTP response itself for processing client-side, check the <strong>Return the bot score in the HTTP response<\/strong> option.<\/p>\n<p>If you <em>do<\/em> choose to set the cookie, you can customize the cookie further by setting its <strong>name<\/strong>, its expiration (in seconds), and whether or not it should be an <strong>HttpOnly<\/strong> cookie.<\/p>\n<blockquote>\n<p>Note! If you choose the <strong>HttpOnly<\/strong> option, remember that the cookie <em>will not<\/em> be accessible with JavaScript in the browser.<\/p>\n<\/blockquote>\n<p>In the screenshot below, I\u2019ve set the cookie name as <code>__r_b_s<\/code>, I\u2019ve set it to be a <strong>session cookie<\/strong> (by setting the lifetime to <code>0<\/code>), and I\u2019ve configured it to be an <code>HttpOnly<\/code> cookie.<\/p>\n<div style=\"aspect-ratio: 1388 \/ 640;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/extra-settings.jpg\" title=\"Extra settings\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"640\" width=\"1388\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/extra-settings.jpg#ZgotmplZ\" alt=\"Extra settings\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Once you\u2019re happy with your configuration, <strong>Save<\/strong> the Client.<\/p>\n<h2 id=\"configure-the-browser-side-code\">Configure the browser-side code<\/h2>\n<p>You\u2019ve now configured your Google Tag Manager Server container to listen for requests for both the reCAPTCHA library and for the bot verification itself. Here\u2019s how it works:<\/p>\n<ol>\n<li>The browser has to fetch the <strong>client-side library<\/strong> which is used to generate the <strong>verification token<\/strong>.<\/li>\n<li>Once the token is generated, the browsers sends it to the <strong>verification API<\/strong> and receives the bot score in the response.<\/li>\n<\/ol>\n<p>Both the library fetch and the verification API are handled by the <strong>reCAPTCHA v3<\/strong> Client you\u2019ve now added to your Server container.<\/p>\n<p>In this example, we\u2019ll be creating the browser-side code in a <strong>Google Tag Manager web container<\/strong>, but you might as well run it directly in the page template or in some other linked JavaScript file.<\/p>\n<p>The solution comprises <strong>two<\/strong> Custom HTML tags. The first one is the <strong>script loader<\/strong>, run just once per page, and the second is the <strong>verification request<\/strong>, run whenever an action happens which you\u2019d like to contribute to the bot score calculation.<\/p>\n<h3 id=\"create-the-script-loader\">Create the script loader<\/h3>\n<blockquote>\n<p>You can build a simple <strong>Custom Template<\/strong> to load the reCAPTCHA v3 library, if you like.<\/p>\n<\/blockquote>\n<p>Before getting started with the tag, you need to go into <strong>Variables<\/strong> in the Google Tag Manager container, and click <strong>Configure<\/strong> for Built-in Variables.<\/p>\n<div style=\"aspect-ratio: 1978 \/ 408;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/configure-built-in-variables.jpg\" title=\"Configure built-in variables\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"408\" width=\"1978\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/configure-built-in-variables.jpg#ZgotmplZ\" alt=\"Configure built-in variables\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Make sure to enable <strong>Container ID<\/strong> and <strong>HTML ID<\/strong>.<\/p>\n<div style=\"aspect-ratio: 1514 \/ 1192;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/container-id-html-id.jpg\" title=\"Container ID HTML ID\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1192\" width=\"1514\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/container-id-html-id.jpg#ZgotmplZ\" alt=\"Container ID HTML ID\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Next, go to <strong>Tags<\/strong>, create a new Custom HTML tag and copy-paste the following code into the tag:<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-html\" data-lang=\"html\">script&gt;\n  (<span style=\"color:#00a\">function<\/span>() {\n    <span style=\"color:#aaa;font-style:italic\">\/\/ Replace with the Site Key you got when registering the site for reCAPTCHA v3\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#00a\">var<\/span> siteKey = <span style=\"color:#a50\">'aaaabbbbccccdddd'<\/span>;\n    <span style=\"color:#aaa;font-style:italic\">\/\/ Replace with your server-side origin (just the https and domain name).\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#00a\">var<\/span> serverSideOrigin = <span style=\"color:#a50\">'https:\/\/sgtm.mydomain.com'<\/span>;\n    \n    <span style=\"color:#00a\">var<\/span> script = <span style=\"color:#0aa\">document<\/span>.createElement(<span style=\"color:#a50\">'script'<\/span>);\n    script.src = serverSideOrigin + <span style=\"color:#a50\">'\/recaptcha\/api.js?render='<\/span> + siteKey;\n    script.async = <span style=\"color:#00a\">true<\/span>;\n    script.addEventListener(<span style=\"color:#a50\">'load'<\/span>, <span style=\"color:#00a\">function<\/span>() {\n      <span style=\"color:#0aa\">window<\/span>.google_tag_manager[{{Container ID}}].onHtmlSuccess({{HTML ID}});\n    });\n    <span style=\"color:#0aa\">document<\/span>.head.appendChild(script);\n  })();\n<span style=\"color:#1e90ff;font-weight:bold\">script<\/span>&gt;<\/code><\/pre>\n<\/div>\n<blockquote>\n<p>Update the <code>siteKey<\/code> and <code>serverSideOrigin<\/code> variables per the instructions in the code.<\/p>\n<\/blockquote>\n<p>This tag loads the library from your endpoint, and it adds a listener for the script load, signalling <strong>success<\/strong> once the library is fully loaded.<\/p>\n<p>Once done, <strong>do not add a trigger to this tag<\/strong>. Instead, <strong>Save<\/strong> the tag, ignoring the warning about no triggers having been set.<\/p>\n<h3 id=\"create-the-verification-tag\">Create the verification tag<\/h3>\n<p>Next, create a new Custom HTML tag and copy-paste the following code within:<\/p>\n<div class=\"highlight\">\n<pre style=\"background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-html\" data-lang=\"html\">script&gt;\n  (<span style=\"color:#00a\">function<\/span>() {\n    <span style=\"color:#aaa;font-style:italic\">\/\/ Replace with the Site Key you got when registering the site for reCAPTCHA v3\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#00a\">var<\/span> siteKey = <span style=\"color:#a50\">'aaaabbbbccccdddd'<\/span>;\n    <span style=\"color:#aaa;font-style:italic\">\/\/ Replace with your server-side origin (just the https and domain name).\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#00a\">var<\/span> serverSideOrigin = <span style=\"color:#a50\">'https:\/\/sgtm.mydomain.com'<\/span>;\n    <span style=\"color:#aaa;font-style:italic\">\/\/ Replace this with the action type\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#aaa;font-style:italic\">\/\/ See: https:\/\/developers.google.com\/recaptcha\/docs\/v3#actions\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#00a\">var<\/span> action = <span style=\"color:#a50\">'page'<\/span>;\n\n    <span style=\"color:#aaa;font-style:italic\">\/\/ The following callback is invoked with the bot score as a function argument.\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#aaa;font-style:italic\">\/\/ Feel free to change the dataLayer.push() to your liking.\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#aaa;font-style:italic\">\/\/ Note! The callback is only invoked if you've configured the Server container\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#aaa;font-style:italic\">\/\/ Client template to return a response back to the browser.\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#00a\">var<\/span> callback = <span style=\"color:#00a\">function<\/span>(score) {\n      <span style=\"color:#0aa\">window<\/span>.dataLayer.push({\n        event: <span style=\"color:#a50\">'recaptcha'<\/span>,\n        recaptchaScore: score\n      });\n    };\n\n    <span style=\"color:#00a\">if<\/span> (<span style=\"color:#0aa\">window<\/span>.grecaptcha &amp;&amp; <span style=\"color:#00a\">typeof<\/span> <span style=\"color:#0aa\">window<\/span>.grecaptcha.ready === <span style=\"color:#a50\">'function'<\/span>) {\n      <span style=\"color:#0aa\">window<\/span>.grecaptcha.ready(<span style=\"color:#00a\">function<\/span>() {\n        <span style=\"color:#0aa\">window<\/span>.grecaptcha.execute(siteKey, {action: action}).then(<span style=\"color:#00a\">function<\/span>(token) {\n          <span style=\"color:#00a\">var<\/span> xhr = <span style=\"color:#00a\">new<\/span> XMLHttpRequest();\n          xhr.withCredentials = <span style=\"color:#00a\">true<\/span>;\n          xhr.open(<span style=\"color:#a50\">'POST'<\/span>, serverSideOrigin + <span style=\"color:#a50\">'\/recaptcha?token='<\/span> + token, <span style=\"color:#00a\">true<\/span>);\n          xhr.onreadystatechange = <span style=\"color:#00a\">function<\/span>() {\n            <span style=\"color:#00a\">if<\/span> (xhr.readyState === XMLHttpRequest.DONE &amp;&amp; xhr.status === <span style=\"color:#099\">200<\/span>) {\n              <span style=\"color:#00a\">var<\/span> response = JSON.parse(xhr.responseText);\n              <span style=\"color:#00a\">if<\/span> (response.score) callback(response.score);\n            }\n          };\n          xhr.send();\n        });\n      });\n    }\n  })();\n<span style=\"color:#1e90ff;font-weight:bold\">script<\/span>&gt;<\/code><\/pre>\n<\/div>\n<blockquote>\n<p>Update the <code>siteKey<\/code> and <code>serverSideOrigin<\/code> variables per the instructions in the code.<\/p>\n<\/blockquote>\n<p>Then, go to <strong>Advanced Settings<\/strong> -&gt; <strong>Tag Sequencing<\/strong>, and set the <strong>Setup Tag<\/strong> to be the script loader you created in the previous section.<\/p>\n<div style=\"aspect-ratio: 1620 \/ 1076;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-tag-sequencing.jpg\" title=\"reCAPTCHA tag sequencing\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1076\" width=\"1620\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-tag-sequencing.jpg#ZgotmplZ\" alt=\"reCAPTCHA tag sequencing\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Finally, set this Custom HTML tag to trigger whenever an interaction happens that should contribute to the bot score. These interactions could be:<\/p>\n<ol>\n<li>Page load (set the <code>action<\/code> to e.g. <code>page<\/code>)<\/li>\n<li>Form submission (set the <code>action<\/code> to e.g. <code>submit<\/code>)<\/li>\n<li>Purchase (set the <code>action<\/code> to e.g. <code>purchase<\/code>)<\/li>\n<\/ol>\n<p>And so forth. If you like, you can have a separate Custom HTML tag for each action type, or you can use a Lookup Table to set the <code>action<\/code> variable value dynamically based on the trigger event, for example.<\/p>\n<h2 id=\"test-everything\">Test everything<\/h2>\n<p>Once you\u2019ve created the script loader and you also have the verification tags running, enter Preview mode in both your Server container and in the web container.<\/p>\n<p>Load a page (or do something else that should make the verification tag fire).<\/p>\n<p>In the web container Preview, you should see both the script loader and the verification tag fire:<\/p>\n<div style=\"aspect-ratio: 1724 \/ 846;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/tags-fired.jpg\" title=\"Tags fired\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"846\" width=\"1724\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/tags-fired.jpg#ZgotmplZ\" alt=\"Tags fired\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>In the Server container Preview, you should first see a request for <strong>api.js<\/strong>, which is responded to with a status code of <code>200<\/code>.<\/p>\n<div style=\"aspect-ratio: 2192 \/ 1130;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/api-js-success.jpg\" title=\"api.js success\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1130\" width=\"2192\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/api-js-success.jpg#ZgotmplZ\" alt=\"api.js success\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Then, if you expand the verification API request in the Server container (the request to path <code>recaptcha<\/code>), you can expand the <strong>Outgoing HTTP Request<\/strong> and check the response from the Google reCAPTCHA server:<\/p>\n<div style=\"aspect-ratio: 1486 \/ 1144;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-response.jpg\" title=\"reCAPTCHA response\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"1144\" width=\"1486\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-response.jpg#ZgotmplZ\" alt=\"reCAPTCHA response\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>This indicates that the verification request worked and a valid bot score was returned.<\/p>\n<p>Finally, in your web container you should see a new Data Layer message with event name <code>recaptcha<\/code> (assuming you went with the default callback) and a <code>recaptchaScore<\/code> key containing the bot score for this particular request.<\/p>\n<div style=\"aspect-ratio: 1900 \/ 432;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-score.jpg\" title=\"reCAPTCHA score\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"432\" width=\"1900\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/recaptcha-score.jpg#ZgotmplZ\" alt=\"reCAPTCHA score\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>If you configure the cookie to be set, you can find it in your browser\u2019s cookie list, too:<\/p>\n<div style=\"aspect-ratio: 2882 \/ 482;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2021\/04\/cookie-set-recaptcha.jpg\" title=\"Cookie set for recaptcha\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"482\" width=\"2882\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2021\/04\/cookie-set-recaptcha.jpg#ZgotmplZ\" alt=\"Cookie set for recaptcha\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<h2 id=\"summary\">Summary<\/h2>\n<p>Once you\u2019ve got the reCAPTCHA system up and running, you can use the bot score to selectively fire your tags either in the web container or in the Server container.<\/p>\n<p>You can also use the <code>__r_b_s<\/code> cookie value to send with your Server container tags, in case you want to add additional metadata about the \u201cbot-ness\u201d of the user. Might be useful information in a GA4 custom dimension, for example!<\/p>\n<p>As you collect more and more bot score data, make sure you visit the <a href=\"https:\/\/www.google.com\/recaptcha\/admin\/\">reCAPTCHA admin site<\/a> to check out metrics about the bot score distribution for your site visitors. If you\u2019ve diligently set the <code>action<\/code> variable in your requests, you\u2019ll be able to see the distribution segmented by the action type, too.<\/p>\n<p>Let me know in the comments what you think of this solution. It would be interesting to hear what use cases you have in mind for the bot score \u2013 would you use it to <em>block<\/em> requests or to <em>annotate<\/em> them, and why?<\/p>\n<\/p><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve written about Google\u2019s reCAPTCHA v3 before. It\u2019s a verification API, which analyzes the signals fed into it and returns a bot score, based on how \u201cbot-like\u201d the hits are. It\u2019s a great way to validate whether or not to collect data from certain sources that exhibit bot-like behavior. You\u2019ll want to ignore those in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":69609,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[1531,14495,36737,18475,1791,29117],"dealstore":[],"offerexpiration":[],"class_list":["post-69608","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-google","tag-manager","tag-recaptcha","tag-serverside","tag-tag","tag-tagging"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>reCAPTCHA v3 With Google Tag Manager Server-side Tagging - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=69608\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"reCAPTCHA v3 With Google Tag Manager Server-side Tagging - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"I\u2019ve written about Google\u2019s reCAPTCHA v3 before. It\u2019s a verification API, which analyzes the signals fed into it and returns a bot score, based on how \u201cbot-like\u201d the hits are. It\u2019s a great way to validate whether or not to collect data from certain sources that exhibit bot-like behavior. You\u2019ll want to ignore those in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=69608\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-05T12:42:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1441\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=69608#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=69608\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"reCAPTCHA v3 With Google Tag Manager Server-side Tagging\",\"datePublished\":\"2025-02-05T12:42:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=69608\"},\"wordCount\":1668,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=69608#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg\",\"keywords\":[\"Google\",\"Manager\",\"reCAPTCHA\",\"Serverside\",\"TAG\",\"Tagging\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=69608#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=69608\",\"url\":\"https:\/\/fivemor.com\/?p=69608\",\"name\":\"reCAPTCHA v3 With Google Tag Manager Server-side Tagging - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=69608#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=69608#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg\",\"datePublished\":\"2025-02-05T12:42:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=69608#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=69608\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=69608#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg\",\"width\":2560,\"height\":1441},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=69608#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"reCAPTCHA v3 With Google Tag Manager Server-side Tagging\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"reCAPTCHA v3 With Google Tag Manager Server-side Tagging - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=69608","og_locale":"en_US","og_type":"article","og_title":"reCAPTCHA v3 With Google Tag Manager Server-side Tagging - Som2ny Network","og_description":"I\u2019ve written about Google\u2019s reCAPTCHA v3 before. It\u2019s a verification API, which analyzes the signals fed into it and returns a bot score, based on how \u201cbot-like\u201d the hits are. It\u2019s a great way to validate whether or not to collect data from certain sources that exhibit bot-like behavior. You\u2019ll want to ignore those in [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=69608","og_site_name":"Som2ny Network","article_published_time":"2025-02-05T12:42:57+00:00","og_image":[{"width":2560,"height":1441,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=69608#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=69608"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"reCAPTCHA v3 With Google Tag Manager Server-side Tagging","datePublished":"2025-02-05T12:42:57+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=69608"},"wordCount":1668,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=69608#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg","keywords":["Google","Manager","reCAPTCHA","Serverside","TAG","Tagging"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=69608#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=69608","url":"https:\/\/fivemor.com\/?p=69608","name":"reCAPTCHA v3 With Google Tag Manager Server-side Tagging - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=69608#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=69608#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg","datePublished":"2025-02-05T12:42:57+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=69608#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=69608"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=69608#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/02\/recaptcha-v3-with-google-tag-manager-server-side-tagging-scaled.jpg","width":2560,"height":1441},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=69608#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"reCAPTCHA v3 With Google Tag Manager Server-side Tagging"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/69608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=69608"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/69608\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/69609"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=69608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=69608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=69608"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=69608"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=69608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}