{"id":68228,"date":"2024-11-05T11:17:51","date_gmt":"2024-11-05T10:17:51","guid":{"rendered":"https:\/\/www.makingscience.com\/?p=68228"},"modified":"2024-11-05T11:17:51","modified_gmt":"2024-11-05T10:17:51","slug":"shopify-checkout-extensibility","status":"publish","type":"post","link":"https:\/\/www.makingscience.com\/en\/blog\/shopify-checkout-extensibility\/","title":{"rendered":"Shopify Checkout Extensibility"},"content":{"rendered":"<h3><strong>Installing GTM on Shopify&#8217;s Checkout Extensibility<\/strong><\/h3>\n<p>&nbsp;<\/p>\n<h4>What&#8217;s happening?<\/h4>\n<p><span style=\"font-weight: 400;\">Shopify has changed how its checkout manages third-party scripts. Historically Shopify ecommerce sites have used Checkout.liquid and added scripts to the code for measurement. However, Shopify is moving towards a new feature called Checkout Extensibility. To quote Shopify:<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">\u201cIn February 2023 we announced that checkout.liquid is deprecated, and that we\u2019re moving to Checkout Extensibility, a new foundation for checkout that is more secure, performant, upgrade-safe, and customized using apps. Relying on obsolete checkout.liquid code past the deadlines below poses risks that may impact your business.\u201d<\/span><\/i><\/p>\n<h4>Important Dates<\/h4>\n<p><b>August 13, 2024:<\/b><span style=\"font-weight: 400;\"> Deadline to upgrade your Information, Shipping, and Payment pages. Automatic upgrades begin on January 6, 2025, and all checkout.liquid customizations for these pages will be lost.<\/span><\/p>\n<p><b>August 28, 2025:<\/b><span style=\"font-weight: 400;\"> Deadline to upgrade Thank you and Order status pages, including your apps using script tags and additional scripts.<\/span><\/p>\n<h4>Custom Pixels<\/h4>\n<p><span style=\"font-weight: 400;\">Checkout Extensibility forces Google Tag Manager (GTM) to be implemented in a custom pixel. These can be created in the Settings section of your Shopify Plus account.<\/span><\/p>\n<h4><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-1\/\" rel=\"attachment wp-att-68241 noopener\" target=\"_blank\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-68241 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-1-300x138.png\" alt=\"\" width=\"680\" height=\"313\" \/><\/a><\/h4>\n<h4><\/h4>\n<h4>Adding Google Tag Manager<\/h4>\n<p><span style=\"font-weight: 400;\">Firstly, copy the container snippet from GTM. Then to add the GTM container script to Shopify, select the \u2018Add custom pixel\u2019 button and past the code into the pixel.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-2\/\" rel=\"attachment wp-att-68235 noopener\" target=\"_blank\"><img decoding=\"async\" class=\"wp-image-68235 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-2-300x88.png\" alt=\"\" width=\"689\" height=\"202\" \/><\/a><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Starting a custom pixel with console.log message will enable you to confirm the script is being loaded.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-3\/\" rel=\"attachment wp-att-68229 noopener\" target=\"_blank\"><img decoding=\"async\" class=\"wp-image-68229 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-3-300x82.png\" alt=\"\" width=\"651\" height=\"178\" \/><\/a><\/span><\/p>\n<p><span style=\"font-weight: 400;\">With that the foundation of GTM on Shopify is complete. We still need to cover a few topics to complete the setup.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Add Consent Mode<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Enable debugging<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Subscribe to events<\/span><\/li>\n<\/ul>\n<h3>Configure Consent Mode for GTM on Shopify&#8217;s Checkout Extensibility<\/h3>\n<p><span style=\"font-weight: 400;\">One of the bigger challenges for Checkout Extensibility is configuring Consent Mode in GTM. For Consent Mode to work the values need to be sent within the custom pixel. Setting default values is easy enough, Consent Mode default values can be passed above the GTM container snippet. This is simple to do but implies the User\u2019s consent is denied. Shopify\u2019s official document sets <\/span><i><span style=\"font-weight: 400;\">granted <\/span><\/i><span style=\"font-weight: 400;\">as default &#8211; this is <\/span><b>bad <\/b><span style=\"font-weight: 400;\">practice. The better approach is to set denied and then check for the user\u2019s current consent state. To do this we need to accomplish two things:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Set consent as denied<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Retrieve the user\u2019s consent<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Set the Consent Mode consent update functionality<\/span><\/li>\n<\/ol>\n<h4>Set Default Consent Mode Status<\/h4>\n<p><span style=\"font-weight: 400;\">Set the default Consent Mode status, this is placed above the GTM script. Adjust the settings to suit your operating requirements.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-4\/\" rel=\"attachment wp-att-68250 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68250 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-4-300x146.png\" alt=\"\" width=\"516\" height=\"251\" \/><\/a><\/p>\n<h4>Retrieve User&#8217;s Consent Status<\/h4>\n<p><span style=\"font-weight: 400;\">The user\u2019s consent status can be retrieved from a cookie, it must be in a cookie. Shopify\u2019s sandbox environment means that Consent Management Platforms (CMPs) using localStorage cannot be read. Secondly the cookie value must be sent to the domain, rather than each subdomain. The consent cookie should be set to <\/span><b><i>.example.com <\/i><\/b><span style=\"font-weight: 400;\">rather than <\/span><b><i>www.example.com<\/i><\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With this in place the consent can be retrieved from within the custom pixel.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-5\/\" rel=\"attachment wp-att-68256 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68256 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-5-300x138.png\" alt=\"\" width=\"526\" height=\"242\" \/><\/a><\/p>\n<h4>Update Consent Mode Status<\/h4>\n<p><span style=\"font-weight: 400;\">Having retrieved the consent values from the cookie, the final step of the consent process can be completed and the Consent Mode gtag update values can be set.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-6\/\" rel=\"attachment wp-att-68262 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68262 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-6-300x94.png\" alt=\"\" width=\"539\" height=\"169\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">With the GTM script already in place, it is now possible to check that Consent Mode is working correctly by reviewing the console.log and checking the <\/span><b><i>gcs <\/i><\/b><span style=\"font-weight: 400;\">parameter value in the GA4 network requests.<\/span><\/p>\n<h3>Configure an E-Commerce Datalayer for Shopify&#8217;s Checkout Extensibility<\/h3>\n<p>Part three of our Checkout Extensibility masterclass is to add the ecommerce object and dataLayer to our custom pixel GTM script.<\/p>\n<h4>How Shopify provides data<\/h4>\n<p><span style=\"font-weight: 400;\">Shopify has an Analytics API that has a number of events that can be subscribed to. When first using the API, subscribing to all events is useful to see what fires and when during the checkout process. It is good to make a note of this for your internal analytics documentation.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-7\/\" rel=\"attachment wp-att-68268 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68268 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-7-300x114.png\" alt=\"\" width=\"505\" height=\"192\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Each Shopify event has a data object containing data about the event, the page, etc. It is good to review these to see how Shopify builds its data structure and the values that are being passed for products, etc. Adding a variable called <\/span><i><span style=\"font-weight: 400;\">shopify.data <\/span><\/i><span style=\"font-weight: 400;\">and logging it to the console.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-8\/\" rel=\"attachment wp-att-68274 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68274 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-8-300x59.png\" alt=\"\" width=\"615\" height=\"121\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">The output of which will be in the console when each event fires.<\/span><\/p>\n<h4>Calling Events<\/h4>\n<p><span style=\"font-weight: 400;\">Events can be set up in two ways. There is <\/span><i><span style=\"font-weight: 400;\">\u201cthe way\u201d <\/span><\/i><span style=\"font-weight: 400;\">but having experienced problems with the <\/span><i><span style=\"font-weight: 400;\">purchase <\/span><\/i><span style=\"font-weight: 400;\">event in the past, there is also an alternative. The preferred approach is to request only the event you require.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-9\/\" rel=\"attachment wp-att-68280 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68280 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-9-300x34.png\" alt=\"\" width=\"653\" height=\"74\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">The alternative is to request all events and then use an if function to work with the event you need.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-10\/\" rel=\"attachment wp-att-68286 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68286 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-10-300x52.png\" alt=\"\" width=\"508\" height=\"88\" \/><\/a><\/p>\n<h4>Configuring Page Views<\/h4>\n<p><span style=\"font-weight: 400;\">The checkout is a single-page application (SPA) &#8211; it doesn\u2019t send page views itself and needs either History Change enabled or a page_view event to be sent to the dataLayer. Fortunately there is a <\/span><i><span style=\"font-weight: 400;\">page_viewed <\/span><\/i><span style=\"font-weight: 400;\">event that can be subscribed to via the API that also contains all the details needed to create your own page_view event.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-11\/\" rel=\"attachment wp-att-68292 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68292 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-11-300x120.png\" alt=\"\" width=\"450\" height=\"180\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">This unfortunately leads to a mess as page_views during the checkout don\u2019t necessarily match the displayed URL and are not useful for humans.<\/span><\/p>\n<h4>Creating your own page views<\/h4>\n<p><span style=\"font-weight: 400;\">A useful approach to get a full picture of the checkout funnel and user journey is to write your own and send them with the checkout events. For example:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>SHOPIFY EVENT<\/b><\/td>\n<td><b>GA4 EVENT<\/b><\/td>\n<td><b>PAGE PATH<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">checkout_started<\/span><\/td>\n<td><span style=\"font-weight: 400;\">begin_checkout<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\/checkout\/begin<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">checkout_shipping_info_submitted<\/span><\/td>\n<td><span style=\"font-weight: 400;\">add_shipping_info<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\/checkout\/shipping<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">payment_info_submitted<\/span><\/td>\n<td><span style=\"font-weight: 400;\">add_payment_info<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\/checkout\/payment<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">checkout_completed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">purchase<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\/checkout\/thank-you<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">These can then be sent as part of each ecommerce event. The output will be 2 dataLayer pushes per ecommerce event &#8211; 1 sending the page view, 1 sending ecommerce data.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-12\/\" rel=\"attachment wp-att-68298 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68298 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-12-300x222.png\" alt=\"\" width=\"453\" height=\"335\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">This will result in nice clean page_views appearing in your analytics account and be easy to understand for all users.<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-13\/\" rel=\"attachment wp-att-68304 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68304 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-13-300x164.png\" alt=\"\" width=\"373\" height=\"204\" \/><\/a><\/p>\n<h4>Locating Product Data<\/h4>\n<p><span style=\"font-weight: 400;\">The first challenge when creating an ecommerce dataLayer in Checkout Extensibility is understanding the products object. This varies depending on the event that has been fired.They are split by:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">collection_viewed<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">cart_viewed<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Checkout events (checkout_started, purchase, etc.)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">There is an element of sifting through the data to find the value you require but it is important to get a consistent ID for each step that can try each item together across the checkout process.<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Shopify Event<\/b><\/td>\n<td><b>Item data location<\/b><\/td>\n<td><b>Notes<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">collection_viewed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">collection.productVariants<\/span><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">cart_viewed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">cart.lines<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Item data is split across different sections. cart.lines.merchandise.product contains product ID and name. Price is found under cart.lines.cost.totalAmount.amount<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">Checkout events<\/span><\/td>\n<td><span style=\"font-weight: 400;\">checkout.lineItems<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Item data is stored under the variant. checkout.lineItems.variant.product. Price data is found item.variant.price.amount<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Building a Products Array<\/h4>\n<p><span style=\"font-weight: 400;\">The most efficient way to pull in products is to create a function that will map the products data to your liking. This is done outside of the analytics subscribe events and will then be called from each event. A function is needed for each source data type:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">collection_viewed =&gt; createCollectionItemsArr<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">cart_viewed =&gt; createCartItemsArr<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Checkout events =&gt; createCheckoutItemsArr<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The function is just mapping existing data. Using a GA4 ecommerce dataLayer as the template, a checkout items function will look like:<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-14\/\" rel=\"attachment wp-att-68310 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68310 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-14-300x144.png\" alt=\"\" width=\"469\" height=\"225\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">The values for each variable will need updating for each function but the format will stay the same.<\/span><\/p>\n<h4>Using the Items Array Function in your Event<\/h4>\n<p><span style=\"font-weight: 400;\">The final part is to call the items array as part of your function and map the remaining ecommerce attributes that are not item specific, e.g. currency, order_id, etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This will produce an analytics subscribe event that looks like:<\/span><\/p>\n<p><a href=\"https:\/\/www.makingscience.co.uk\/blog\/shopify-checkout-extensibility\/shopify-15\/\" rel=\"attachment wp-att-68316 noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-68316 aligncenter\" src=\"https:\/\/www.makingscience.co.uk\/wp-content\/uploads\/2024\/11\/Shopify-15-291x300.png\" alt=\"\" width=\"467\" height=\"481\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Review the console logs, network requests and analytics data to confirm everything is being collected correctly.<\/span><\/p>\n<h4>Summary<\/h4>\n<p><span style=\"font-weight: 400;\">Getting the Shopify Checkout Extensibility GTM pixel set up correctly can be a challenge. The key is to enable logging to make troubleshooting easier and remember the order of code snippets:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Consent Mode default values<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Cookie consent values<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Consent Mode update values<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">GTM container snippet<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Items array functions<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Analytics.subscribe events<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Happy tagging!<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Installing GTM on Shopify&#8217;s Checkout Extensibility &nbsp; What&#8217;s happening? Shopify has changed how its checkout manages third-party scripts. Historically Shopify ecommerce sites have used Checkout.liquid and added scripts to the code for measurement. However, Shopify is moving towards a new feature called Checkout Extensibility. To quote Shopify: \u201cIn February 2023 we announced that checkout.liquid is [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":68324,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[824,999,842],"tags":[],"class_list":["post-68228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-en","category-data-analytics-and-bi-en","category-e-commerce-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/posts\/68228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/comments?post=68228"}],"version-history":[{"count":0,"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/posts\/68228\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/media\/68324"}],"wp:attachment":[{"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/media?parent=68228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/categories?post=68228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.makingscience.com\/en\/wp-json\/wp\/v2\/tags?post=68228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}