{"id":4160,"date":"2015-11-25T10:18:17","date_gmt":"2015-11-25T08:18:17","guid":{"rendered":"https:\/\/usersnap.com\/?p=4160"},"modified":"2025-07-30T18:40:51","modified_gmt":"2025-07-30T16:40:51","slug":"client-side-javascript-error-logging","status":"publish","type":"post","link":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/","title":{"rendered":"Why we have to talk about client-side JavaScript error logging!"},"content":{"rendered":"\n<p>Web browsers got some superpowers over the last few years. The increasing speed of the browser engines has pushed browsers from being simple website viewers to a level where they are platforms executing our beloved applications like Gmail and Facebook day in day out.<\/p>\n\n\n\n<p>Of course, this opened up the door for developers to do incredible things. But just like with everything that\u2019s new, chances are high that bugs and issues occur. A lot of times, client-side errors give developers a hard time in reproducing and finding the bugs.<\/p>\n\n\n\n<p>In this blog post, I\u2019m going to show you why <strong>client-side JavaScript error logging<\/strong> is easy to implement and that it is just a few clicks away \ud83d\ude42<br>\n<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"acf-cta\" style=\"background-image: url(https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2025\/02\/Group-1000004194.svg); width: 100%;\"><h2>Try Usersnap for Website Testing<\/h2><a href=\"https:\/\/usersnap.com\/signup\" class=\"cta-button\">Try Usersnap Now<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">JavaScript &#8211; the winner takes it all?<\/h2>\n\n\n\n<p>JavaScript is the de facto standard language of the web. With all those JavaScript libraries popping up, developers demonstrating that almost everything is possible in browsers. It\u2019s safe to say that JavaScript has become the most widespread programming language for web applications.<\/p>\n\n\n\n<p>Or, as <a href=\"https:\/\/www.bugtrackers.io\/interview-paralleldrive-eric-elliott?utm_source=blogpost&amp;utm_medium=referral&amp;utm_campaign=new_blogpost\" target=\"_blank\" rel=\"noopener\">Eric Elliott<\/a> would state it:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>JavaScript has the potential to help a lot of more people, because it&#8217;s the most popular language in the world.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Why log client-side JavaScript errors?<\/h2>\n\n\n\n<p>OK, so we all know that JavaScript is widely used in many applications and websites. But why should you log client-side errors?<\/p>\n\n\n\n<p>The short answer is: because you do not want to spend hours and hours reproducing bugs. And if you\u2019re using JavaScript, especially non-trivial JavaScript, in your code base, you will have a hard time finding those bugs.<\/p>\n\n\n\n<p>And because there are so <a href=\"https:\/\/usersnap.com\/blog\/browser-diversity\/\">many different browser versions<\/a>, operating systems and devices out there, it\u2019s much harder to produce high-quality JavaScript code that works everywhere.<\/p>\n\n\n\n<p>Especially if you compare this to the olden days of server-side code&#8230;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Let&#8217;s keep this short. Too few websites log JavaScript errors.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>&#8211; <a href=\"http:\/\/openmymind.net\/2012\/4\/4\/You-Really-Should-Log-Client-Side-Error\/\" target=\"_blank\" rel=\"nofollow noopener\">Karl Seguin<\/a><\/p>\n\n\n<div class=\"acf-cta\" style=\"background-image: url(https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2025\/02\/Group-1000004194.svg); width: 100%;\"><h2>Try Usersnap for Website Testing<\/h2><a href=\"https:\/\/usersnap.com\/signup\" class=\"cta-button\">Try Usersnap Now<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">How to log client-side errors?<\/h2>\n\n\n\n<p>I guess we\u2019ve all been there. How do you describe a bug in order to make it reproducible for the developer in charge?<\/p>\n\n\n\n<p>When it comes to <strong>client-side JavaScript errors<\/strong>, people have a hard time reporting the issue. A simple \u201c<em>the button doesn\u2019t work<\/em>\u201d isn\u2019t sufficient. Developers in charge of finding those bugs need answers to a lot more questions, such as: What was the user doing before the error occurred?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Use the console recorder and avoid email ping pong<\/h2>\n\n\n\n<p>So, how do we avoid all those ping pongs between bug reporter and developer and spend the time on actual bug fixing?<\/p>\n\n\n\n<p>The basic problem of client-side JavaScript errors looks something like this:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The user does something on your website, e.g. clicking on a button<\/li>\n\n\n\n<li>The button does not do what it should (like linking to some other page)<\/li>\n\n\n\n<li>There\u2019s no error message displayed to the user.<\/li>\n\n\n\n<li>The developer console would contain some info with error logs<\/li>\n\n\n\n<li>Because the bug appears on the client-side, the developer in charge will have a hard time finding and fixing it.<\/li>\n<\/ul>\n\n\n\n<p><iframe loading=\"lazy\" class=\"giphy-embed\" src=\"\/\/giphy.com\/embed\/l41m3t74fWpPxkQN2\" width=\"550\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n\n\n\n<p>At this point, you will probably agree that it\u2019s time for a way to attach the console output to get high-quality <a href=\"https:\/\/usersnap.com\/blog\/what-is-a-bug-report\/\">bug reports<\/a>.<\/p>\n\n\n<div class=\"acf-cta\" style=\"background-image: url(https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2025\/02\/Group-1000004194.svg); width: 100%;\"><h2>Try Usersnap for Website Testing<\/h2><a href=\"https:\/\/usersnap.com\/signup\" class=\"cta-button\">Try Usersnap Now<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Usersnap console recorder<\/h2>\n\n\n\n<p>A while ago we introduced the <a href=\"https:\/\/usersnap.com\/classic\/?gat=blog-post\" target=\"_blank\" rel=\"noopener\">Usersnap Console Recorder<\/a> which helps every developer by delivering the recorded output from the developer console.<\/p>\n\n\n\n<p>The Console Recorder from Usersnap is a tool that records and tracks every front end error, such as XHR traces, JavaScript exceptions and much more.<\/p>\n\n\n\n<p>Once a Usersnap screenshot has been taken, the log record is automatically attached to your bug report and easily accessible from the Usersnap Dashboard.<\/p>\n\n\n\n<p>So how do you make everyone\u2019s life easier and start recording client-side JavaScript errors?<\/p>\n\n\n\n<p><strong>Step 1: Sign up for a Usersnap account<\/strong><br>\nif you already have one, log into your existing account.<\/p>\n\n\n\n<p><strong>Step 2: Activate the Console Recorder in your project settings<\/strong><br>\nIf you have already created a bug tracking project, you can switch to your project settings and activate the Console Log Recorder in the widget settings.<\/p>\n\n\n\n<p><iframe loading=\"lazy\" class=\"giphy-embed\" src=\"\/\/giphy.com\/embed\/3oEdv8y3sdDLmj51Ha\" width=\"550\" height=\"300\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n\n\n\n<p><strong>Step 3: Embed the feedback widget on your website or app\u2026<\/strong><br>\nand start tracking client-side JavaScript errors.<\/p>\n\n\n\n<p><strong>You\u2019re good to go.<\/strong><\/p>\n\n\n\n<p>All client-side JavaScript errors and XHR calls will automatically be saved once you create a Usersnap report.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping it up.<\/h2>\n\n\n\n<p>I guess the good old days of not logging client-side JavaScript errors are over. Aside from the Usersnap Console Recorder, there are also some other great applications out there which help developers in their bug tracking efforts.<\/p>\n\n\n\n<p><strong>Try the Usersnap Console Recorder for free and <a href=\"https:\/\/usersnap.com\/classic\/?gat=blog-post\" target=\"_blank\" rel=\"noopener\">start logging client-side JavaScript errors<\/a>.<\/strong> <\/p>\n\n\n\n<p>Get started with Usersnap and deliver what users want. Collect your first 20 feedback items for free, upgrade to continue acting on the insights.<\/p>\n\n\n\n<p><em>This article was brought to you by <a href=\"https:\/\/usersnap.com\/?gat=blog-post\">Usersnap<\/a> &#8211; a visual bug tracking&nbsp;tool used by software companies like Facebook, Google, and AddThis.<\/em><\/p>\n\n\n<div class=\"acf-cta\" style=\"background-image: url(https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2025\/02\/Group-1000004194.svg); width: 100%;\"><h2>Try Usersnap for Website Testing<\/h2><a href=\"https:\/\/usersnap.com\/signup\" class=\"cta-button\">Try Usersnap Now<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Web browsers got some superpowers over the last few years. The increasing speed of the browser engines has pushed browsers from being simple website viewers to a level where they are platforms executing our beloved applications like Gmail and Facebook day in day out. Of course, this opened up the door for developers to do [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":4161,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":true,"inline_featured_image":false,"ub_ctt_via":"","footnotes":""},"categories":[855],"tags":[],"class_list":["post-4160","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bug-tracking-blog"],"acf":[],"featured_image_src":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg","author_info":{"display_name":"Thomas Peham","author_link":"https:\/\/usersnap.com\/blog\/author\/thomas\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Why we have to talk about client-side JavaScript error logging!<\/title>\n<meta name=\"description\" content=\"In this blog post, I\u2019m going to show you why client-side JavaScript error logging is easy to implement and that it is just a few clicks away. Read full post.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why we have to talk about client-side JavaScript error logging!\" \/>\n<meta property=\"og:description\" content=\"In this blog post, I\u2019m going to show you why client-side JavaScript error logging is easy to implement and that it is just a few clicks away. Read full post.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/\" \/>\n<meta property=\"og:site_name\" content=\"Usersnap Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/usersnap\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-25T08:18:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-30T16:40:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Thomas Peham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tompeham\" \/>\n<meta name=\"twitter:site\" content=\"@usersnap\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Peham\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/\"},\"author\":{\"name\":\"Thomas Peham\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b\"},\"headline\":\"Why we have to talk about client-side JavaScript error logging!\",\"datePublished\":\"2015-11-25T08:18:17+00:00\",\"dateModified\":\"2025-07-30T16:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/\"},\"wordCount\":820,\"publisher\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg\",\"articleSection\":[\"Bug Tracking\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/\",\"url\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/\",\"name\":\"Why we have to talk about client-side JavaScript error logging!\",\"isPartOf\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg\",\"datePublished\":\"2015-11-25T08:18:17+00:00\",\"dateModified\":\"2025-07-30T16:40:51+00:00\",\"description\":\"In this blog post, I\u2019m going to show you why client-side JavaScript error logging is easy to implement and that it is just a few clicks away. Read full post.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage\",\"url\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg\",\"contentUrl\":\"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg\",\"width\":700,\"height\":400,\"caption\":\"client side javascript error logging how to\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/usersnap.com\/blog\/#website\",\"url\":\"https:\/\/usersnap.com\/blog\/\",\"name\":\"Usersnap Blog\",\"description\":\"Learn more about how to collect user feedback and build better products with the magic power of feedback.\",\"publisher\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/usersnap.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/usersnap.com\/blog\/#organization\",\"name\":\"Usersnap\",\"url\":\"https:\/\/usersnap.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png\",\"contentUrl\":\"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png\",\"width\":136,\"height\":26,\"caption\":\"Usersnap\"},\"image\":{\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/usersnap\",\"https:\/\/x.com\/usersnap\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b\",\"name\":\"Thomas Peham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/usersnap.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g\",\"caption\":\"Thomas Peham\"},\"sameAs\":[\"https:\/\/x.com\/tompeham\"],\"url\":\"https:\/\/usersnap.com\/blog\/author\/thomas\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Why we have to talk about client-side JavaScript error logging!","description":"In this blog post, I\u2019m going to show you why client-side JavaScript error logging is easy to implement and that it is just a few clicks away. Read full post.","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:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/","og_locale":"en_US","og_type":"article","og_title":"Why we have to talk about client-side JavaScript error logging!","og_description":"In this blog post, I\u2019m going to show you why client-side JavaScript error logging is easy to implement and that it is just a few clicks away. Read full post.","og_url":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/","og_site_name":"Usersnap Blog","article_publisher":"https:\/\/www.facebook.com\/usersnap","article_published_time":"2015-11-25T08:18:17+00:00","article_modified_time":"2025-07-30T16:40:51+00:00","og_image":[{"width":700,"height":400,"url":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg","type":"image\/jpeg"}],"author":"Thomas Peham","twitter_card":"summary_large_image","twitter_creator":"@tompeham","twitter_site":"@usersnap","twitter_misc":{"Written by":"Thomas Peham","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#article","isPartOf":{"@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/"},"author":{"name":"Thomas Peham","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b"},"headline":"Why we have to talk about client-side JavaScript error logging!","datePublished":"2015-11-25T08:18:17+00:00","dateModified":"2025-07-30T16:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/"},"wordCount":820,"publisher":{"@id":"https:\/\/usersnap.com\/blog\/#organization"},"image":{"@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage"},"thumbnailUrl":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg","articleSection":["Bug Tracking"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/","url":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/","name":"Why we have to talk about client-side JavaScript error logging!","isPartOf":{"@id":"https:\/\/usersnap.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage"},"image":{"@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage"},"thumbnailUrl":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg","datePublished":"2015-11-25T08:18:17+00:00","dateModified":"2025-07-30T16:40:51+00:00","description":"In this blog post, I\u2019m going to show you why client-side JavaScript error logging is easy to implement and that it is just a few clicks away. Read full post.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/usersnap.com\/blog\/client-side-javascript-error-logging\/#primaryimage","url":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg","contentUrl":"https:\/\/usersnap.com\/blog\/wp-content\/uploads\/2015\/11\/client-side-javascript-error-logging-how-to.jpg","width":700,"height":400,"caption":"client side javascript error logging how to"},{"@type":"WebSite","@id":"https:\/\/usersnap.com\/blog\/#website","url":"https:\/\/usersnap.com\/blog\/","name":"Usersnap Blog","description":"Learn more about how to collect user feedback and build better products with the magic power of feedback.","publisher":{"@id":"https:\/\/usersnap.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/usersnap.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/usersnap.com\/blog\/#organization","name":"Usersnap","url":"https:\/\/usersnap.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png","contentUrl":"https:\/\/usersnap.com\/wp-content\/uploads\/2020\/08\/Usersnap-Updated-Logo.png","width":136,"height":26,"caption":"Usersnap"},"image":{"@id":"https:\/\/usersnap.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/usersnap","https:\/\/x.com\/usersnap"]},{"@type":"Person","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/person\/85bd1168f7e7c005c6cd2a4045e3d59b","name":"Thomas Peham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/usersnap.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c570afeda0ee367f5824a6762a0511ec7be061521c645ef29d34b976c183341d?s=96&d=mm&r=g","caption":"Thomas Peham"},"sameAs":["https:\/\/x.com\/tompeham"],"url":"https:\/\/usersnap.com\/blog\/author\/thomas\/"}]}},"_links":{"self":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/posts\/4160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/comments?post=4160"}],"version-history":[{"count":0,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/posts\/4160\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/media\/4161"}],"wp:attachment":[{"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/media?parent=4160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/categories?post=4160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/usersnap.com\/blog\/wp-json\/wp\/v2\/tags?post=4160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}