{"id":153930,"date":"2025-03-24T15:41:15","date_gmt":"2025-03-24T15:41:15","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/gtmtips-prevent-repeat-transactions-simo-ahavas-blog\/"},"modified":"2025-03-24T15:41:15","modified_gmt":"2025-03-24T15:41:15","slug":"gtmtips-prevent-repeat-transactions-simo-ahavas-blog","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=153930","title":{"rendered":"#GTMTips: Prevent Repeat Transactions | Simo Ahava&#8217;s blog"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>In this tip, we\u2019ll take a look at how to leverage a custom first-party cookie to prevent repeat hits of any kind. This is most useful for transactions, since a <a href=\"http:\/\/stackoverflow.com\/questions\/26697898\/google-analytics-duplicate-transactions\">common problem<\/a> with <a href=\"https:\/\/www.google.com\/analytics\/\">Google Analytics<\/a> (traditional) <a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/analyticsjs\/ecommerce\">eCommerce tracking<\/a> is that a transaction hit is sent again upon subsequent entries to the receipt page, for example using the Back button of the browser. In some cases, and this is not a good practice, a receipt e-mail is sent to the user with a link <em>back to the receipt page<\/em>, where the transaction is sent over and over again upon entry.<\/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=\"tip-11-use-a-1st-party-cookie-to-prevent-hit-multiplication\">Tip 11: Use a 1st Party Cookie to prevent hit multiplication<\/h2>\n<div style=\"aspect-ratio: 1519 \/ 848;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2014\/12\/prevent-repeat-transactions.jpg\" title=\"Prevent repeat transactions in Google Analytics\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"848\" width=\"1519\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2014\/12\/prevent-repeat-transactions.jpg#ZgotmplZ\" alt=\"Prevent repeat transactions in Google Analytics\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>Here is the use case:<\/p>\n<ol>\n<li>\n<p>User lands on the receipt page<\/p>\n<\/li>\n<li>\n<p>The transaction tag checks if the transaction ID is in the transaction cookie<\/p>\n<\/li>\n<li>\n<p>If the ID is in the cookie, the transaction tag does not fire<\/p>\n<\/li>\n<li>\n<p>If the ID is not in the cookie, the transaction tag fires<\/p>\n<\/li>\n<li>\n<p>The transaction ID is added to the cookie in the <code>hitCallback<\/code> of the tag<\/p>\n<\/li>\n<\/ol>\n<p>So it\u2019s very similar to what I wrote some time ago about <a href=\"https:\/\/www.simoahava.com\/analytics\/universal-analytics-fire-script-just-per-session\/\">firing a tag just once per session<\/a>.<\/p>\n<p>For this to work, you\u2019ll need <strong>four<\/strong> variables:<\/p>\n<ol>\n<li>\n<p>Data Layer Variable for the key <code>transactionId<\/code> in the transaction payload on the receipt page<\/p>\n<\/li>\n<li>\n<p>1st Party Cookie Variable, which retrieves the value of the cookie where all the user\u2019s transaction IDs are stored<\/p>\n<\/li>\n<li>\n<p>Custom JavaScript Variable, which returns true if the transaction ID in the receipt page is found in the cookie<\/p>\n<\/li>\n<li>\n<p>Custom JavaScript Variable, which returns the callback function, where the current transaction ID is added to the cookie after the transaction tag has fired<\/p>\n<\/li>\n<\/ol>\n<h3 id=\"data-layer-variable-dlv-transaction-id\">Data Layer Variable: {{dlv transaction id}}<\/h3>\n<p>This one is easy. Just create a new Data Layer Variable called <strong>{{dlv transaction id}}<\/strong>, and have it point to the variable where the transaction ID is stored on the receipt page (should be <code>transactionId<\/code>).<\/p>\n<h3 id=\"1st-party-cookie-cookie-user-transactions\">1st Party Cookie: {{cookie user transactions}}<\/h3>\n<p>Create a new 1st Party Cookie variable called <strong>{{cookie user transactions}}<\/strong>, and have it refer to whatever you want your cookie to be called. In this example, I\u2019ll use <code>user_transaction_ids<\/code>.<\/p>\n<div style=\"aspect-ratio: 426 \/ 470;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2014\/12\/user-transactions-cookie.jpg\" title=\"1st party cookie\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"470\" width=\"426\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2014\/12\/user-transactions-cookie.jpg#ZgotmplZ\" alt=\"1st party cookie\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<h3 id=\"custom-javascript-js-is-transaction-id-in-cookie\">Custom JavaScript: {{js is transaction id in cookie}}<\/h3>\n<p>The purpose of this variable is to return <em>true<\/em> if the transaction ID on the thank you page is found in the cookie. This means that one of the conditions of the Transaction Tag firing trigger is a check for if the cookie value <em>is not<\/em> true. This would mean that the transaction ID has not been fired yet by this user. The code looks like this:<\/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-javascript\" data-lang=\"javascript\"><span style=\"color:#00a\">function<\/span>() {\n  <span style=\"color:#00a\">return<\/span> <span style=\"color:#099\">\/(,|^){{dlv transaction id}}\/<\/span>.test({{cookie user transactions}});\n}\n<\/code><\/pre>\n<\/div>\n<h3 id=\"custom-javascript-js-hitcallback-set-transaction-cookie\">Custom JavaScript: {{js hitcallback set transaction cookie}}<\/h3>\n<p>In this Custom JavaScript variable, we\u2019ll add the value returned by <strong>{{transactionId}}<\/strong> to the cookie that\u2019s referenced in the variable we just created above. Since I\u2019m assuming the visitor can have multiple transactions, the cookie will be appended with the value, not overwritten. The expiration date depends on the lifetime of a single transaction ID. In my case, I\u2019m assuming that they\u2019re always unique, so I have an expiration time of two years (completely arbitrary figure). If you know that transaction IDs are not unique, you should make the expiration shorter to reflect this.<\/p>\n<p>Here\u2019s what the <strong>{{js hitcallback set transaction cookie}}<\/strong> should have 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-javascript\" data-lang=\"javascript\"><span style=\"color:#00a\">function<\/span>() {\n  <span style=\"color:#00a\">return<\/span> <span style=\"color:#00a\">function<\/span>() {\n    <span style=\"color:#00a\">var<\/span> d, expires;\n    <span style=\"color:#00a\">var<\/span> cvalue = <span style=\"color:#a50\">''<\/span>;\n    <span style=\"color:#aaa;font-style:italic\">\/\/ Run the code only if a transaction is found in the data layer\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>    <span style=\"color:#00a\">if<\/span> ({{dlv transaction id}}) {\n      d = <span style=\"color:#00a\">new<\/span> <span style=\"color:#0aa\">Date<\/span>();\n      d.setTime(d.getTime() + (<span style=\"color:#099\">2<\/span>*<span style=\"color:#099\">365<\/span>*<span style=\"color:#099\">24<\/span>*<span style=\"color:#099\">60<\/span>*<span style=\"color:#099\">60<\/span>*<span style=\"color:#099\">1000<\/span>));\n      expires = <span style=\"color:#a50\">'expires='<\/span>+d.toUTCString();\n      <span style=\"color:#aaa;font-style:italic\">\/\/ If the cookie already exists, append not overwrite\n<\/span><span style=\"color:#aaa;font-style:italic\"\/>      <span style=\"color:#00a\">if<\/span> ({{cookie user transactions}}) {\n        cvalue = {{cookie user transactions}} + <span style=\"color:#a50\">','<\/span>;\n      }    \n      <span style=\"color:#0aa\">document<\/span>.cookie = <span style=\"color:#a50\">'user_transaction_ids='<\/span> + \n            cvalue + {{dlv transaction id}} + <span style=\"color:#a50\">'; '<\/span> + \n            expires + <span style=\"color:#a50\">'; path=\/'<\/span>;\n    }\n  };\n}\n<\/code><\/pre>\n<\/div>\n<h3 id=\"set-up-the-tag\">Set up the tag<\/h3>\n<p>Finally, you need to set up the tag. The only modifications you need to make are to the firing trigger and the <code>hitCallback<\/code> field. For the firing trigger, you need to add the following condition:<\/p>\n<p><strong>{{js is transaction id in cookie}}<\/strong> does not equal <strong>true<\/strong><\/p>\n<p>This means that the tag will only fire if the transaction ID on the page template <em>is not found<\/em> in the cookie. Makes sense, right?<\/p>\n<p>Next, you need to set up the <code>hitCallback<\/code> field. So scroll down to <strong>More Settings -&gt; Fields To Set<\/strong>, and fill in the values like this:<\/p>\n<div style=\"aspect-ratio: 798 \/ 189;\" class=\"figure nocaption\">\n<p>    <a href=\"https:\/\/www.simoahava.com\/images\/2014\/12\/hitcallback-transaction.jpg\" title=\"hitCallback setting in the transaction tag\"><\/p>\n<p>    <img decoding=\"async\" class=\"fig-img\" height=\"189\" width=\"798\" loading=\"lazy\" src=\"https:\/\/www.simoahava.com\/images\/2014\/12\/hitcallback-transaction.jpg#ZgotmplZ\" alt=\"hitCallback setting in the transaction tag\"\/><\/p>\n<p>    <\/a><\/p>\n<\/div>\n<p>And that should do it.<\/p>\n<h2 id=\"summary\">Summary<\/h2>\n<p>Here\u2019s what should take place when a user lands on the receipt page:<\/p>\n<ol>\n<li>\n<p>The Transaction Tag checks if the transaction ID on the page template (stored in <strong>{{dlv transaction id}}<\/strong>) can be found in the value returned by the cookie variable <strong>{{cookie user transactions}}<\/strong>.<\/p>\n<\/li>\n<li>\n<p>If the ID exists in the cookie, it means that a transaction has already been fired with this ID, so nothing is done.<\/p>\n<\/li>\n<li>\n<p>If the ID doesn\u2019t exist, the transaction tag fires.<\/p>\n<\/li>\n<li>\n<p>After the tag has completed execution, the <code>hitCallback<\/code> function, <strong>{{js hitcallback set transaction cookie}}<\/strong> is invoked.<\/p>\n<\/li>\n<li>\n<p>This function checks if the cookie already exists. If it does, it appends the current transaction ID to the end of the cookie (using a comma as the separator). If the cookie doesn\u2019t exist, a new cookie is created with the transaction ID as its only value.<\/p>\n<\/li>\n<li>\n<p>This way any repeat visits to the page with the same transaction ID in the template will not cause the tag to fire again.<\/p>\n<\/li>\n<\/ol>\n<p>It looks like a complicated way to do things, and on some level it probably is. However, GTM and GA are stateless in the user\u2019s browser. The only things they persist are the tracking cookies. Everything else has to be done by the user, which is why we need to manually create the cookies and the logic behind them.<\/p>\n<p><strong>UPDATE<\/strong>: David Vallejo has written a great guide on how to achieve the same in Enhanced Ecommerce. <a href=\"https:\/\/www.thyngster.com\/preventing-duplicate-transactions-in-universal-analytics-with-google-tag-manager\/\">Check it out<\/a>!<\/p>\n<\/p><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>In this tip, we\u2019ll take a look at how to leverage a custom first-party cookie to prevent repeat hits of any kind. This is most useful for transactions, since a common problem with Google Analytics (traditional) eCommerce tracking is that a transaction hit is sent again upon subsequent entries to the receipt page, for example [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":153931,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[27402,3767,14492,16371,966,27401,11028],"dealstore":[],"offerexpiration":[],"class_list":["post-153930","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-ahavas","tag-blog","tag-gtmtips","tag-prevent","tag-repeat","tag-simo","tag-transactions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>#GTMTips: Prevent Repeat Transactions | Simo Ahava&#039;s blog - 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=153930\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"#GTMTips: Prevent Repeat Transactions | Simo Ahava&#039;s blog - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"In this tip, we\u2019ll take a look at how to leverage a custom first-party cookie to prevent repeat hits of any kind. This is most useful for transactions, since a common problem with Google Analytics (traditional) eCommerce tracking is that a transaction hit is sent again upon subsequent entries to the receipt page, for example [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=153930\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-24T15:41:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1519\" \/>\n\t<meta property=\"og:image:height\" content=\"848\" \/>\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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=153930#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=153930\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"#GTMTips: Prevent Repeat Transactions | Simo Ahava&#8217;s blog\",\"datePublished\":\"2025-03-24T15:41:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=153930\"},\"wordCount\":930,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=153930#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg\",\"keywords\":[\"Ahavas\",\"Blog\",\"GTMTips\",\"Prevent\",\"Repeat\",\"Simo\",\"Transactions\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=153930#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=153930\",\"url\":\"https:\/\/fivemor.com\/?p=153930\",\"name\":\"#GTMTips: Prevent Repeat Transactions | Simo Ahava's blog - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=153930#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=153930#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg\",\"datePublished\":\"2025-03-24T15:41:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=153930#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=153930\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=153930#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg\",\"width\":1519,\"height\":848},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=153930#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"#GTMTips: Prevent Repeat Transactions | Simo Ahava&#8217;s blog\"}]},{\"@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":"#GTMTips: Prevent Repeat Transactions | Simo Ahava's blog - 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=153930","og_locale":"en_US","og_type":"article","og_title":"#GTMTips: Prevent Repeat Transactions | Simo Ahava's blog - Som2ny Network","og_description":"In this tip, we\u2019ll take a look at how to leverage a custom first-party cookie to prevent repeat hits of any kind. This is most useful for transactions, since a common problem with Google Analytics (traditional) eCommerce tracking is that a transaction hit is sent again upon subsequent entries to the receipt page, for example [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=153930","og_site_name":"Som2ny Network","article_published_time":"2025-03-24T15:41:15+00:00","og_image":[{"width":1519,"height":848,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=153930#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=153930"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"#GTMTips: Prevent Repeat Transactions | Simo Ahava&#8217;s blog","datePublished":"2025-03-24T15:41:15+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=153930"},"wordCount":930,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=153930#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg","keywords":["Ahavas","Blog","GTMTips","Prevent","Repeat","Simo","Transactions"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=153930#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=153930","url":"https:\/\/fivemor.com\/?p=153930","name":"#GTMTips: Prevent Repeat Transactions | Simo Ahava's blog - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=153930#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=153930#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg","datePublished":"2025-03-24T15:41:15+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=153930#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=153930"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=153930#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2025\/03\/prevent-repeat-transactions.jpg","width":1519,"height":848},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=153930#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"#GTMTips: Prevent Repeat Transactions | Simo Ahava&#8217;s blog"}]},{"@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\/153930","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=153930"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/153930\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/153931"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=153930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=153930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=153930"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=153930"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=153930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}