{"id":22318,"date":"2021-04-05T17:40:28","date_gmt":"2021-04-05T17:40:28","guid":{"rendered":"http:\/\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content"},"modified":"2024-10-23T16:58:34","modified_gmt":"2024-10-23T23:58:34","slug":"create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content","title":{"rendered":"Create a Great E-Commerce Site on Gatsby Along With User-Generated Content Using Cloudinary"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>Today\u2019s tremendous growth in e-commerce means that competition among businesses is heating up. One way to gain a competitive edge is to boost your product\u2019s authenticity by incorporating <a href=\"https:\/\/cloudinary.com\/documentation\/user_generated_content\">user-generated content<\/a> (UGC) into your product pages.<\/p>\n<p>This tutorial shows you how to do the following:<\/p>\n<ol>\n<li>Build a progressive web app with Gatsby, a React-based web framework for JavaScript. Gatsby.js works seamlessly as a front end for building sites with Shopify, WordPress, and many other content management systems (CMS).<\/li>\n<li>Manage UGC for the app by integrating it with Cloudinary. Cloudinary is a robust, software-as-a-service (SaaS) platform with a one-stop solution for managing images and <a href=\"https:\/\/cloudinary.com\/video_api\">videos<\/a> along with add-ons for organizing and transforming media.<\/li>\n<\/ol>\n<p>To follow this tutorial, you must have a working knowledge of Git and web development. Experience with Gatsby is helpful; if that\u2019s new to you, this tutorial steers you through what you need to know.<\/p>\n<h2>Setup of E-Commerce With Gatsby<\/h2>\n<p>Since this tutorial\u2019s main goal is to enhance an e-commerce site with UGC through Cloudinary, you need the <a href=\"https:\/\/templates.netlify.com\/template\/gatsby-starter-ecommerce\/\">Jamstack e-commerce template<\/a> as a starter. Do the following:<\/p>\n<ol>\n<li>Install <a href=\"https:\/\/www.gatsbyjs.com\/docs\/tutorial\/part-zero\/\">Gatsby<\/a> on your computer.<\/li>\n<li>\n<a href=\"https:\/\/github.com\/parmsang\/gatsby-starter-ecommerce\">Clone the Starter Theme repository<\/a> and open the folder with a code editor.<\/li>\n<li>Open a terminal at the root directory of the project and run <code>npm install<\/code> to install the required packages.<\/li>\n<li>Run <code>gatsby develop<\/code> to start a local development server of the project on localhost:8000.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/image\/upload\/f_auto,q_auto\/Web_Assets\/blog\/gatsby_ecommerce.png\" alt=\"gatsby e-commerce\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"602\" height=\"293\"\/><\/p>\n<h2>Integration of Gatsby With Cloudinary<\/h2>\n<p>Now integrate Cloudinary with the e-commerce app, enhancing it with UGC. Follow these steps:<\/p>\n<ol>\n<li>\n<p>Sign up for a <a href=\"https:\/\/cloudinary.com\/users\/register\/free\">Cloudinary account<\/a>, which is completely free for up to 25 credits monthly, enough for plenty of transformations, storage, and bandwidth.\nCloudinary\u2019s intuitive dashboard displays your account details and recent usage data. You can upload media files directly from the dashboard. For the purpose of this tutorial, configure the site so your audience can upload their content with Cloudinary\u2019s upload widget. See the steps below.<\/p>\n<\/li>\n<li>\n<p>Create an upload preset: log in to Cloudinary, click the <strong>Profile<\/strong> icon on the upper-right corner, and then click the gear-shaped <strong>Settings<\/strong> icon at the top.<\/p>\n<\/li>\n<li>\n<p>Click the <strong>Upload<\/strong> tab at the top, scroll down to the <strong>Upload presets<\/strong> section, and click <strong>Add upload preset<\/strong>. On the screen that is displayed, pull down the menu for <strong>Signing Mode<\/strong> and choose <strong>Unsigned<\/strong> to enable unsigned uploads. Click <strong>Save<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/image\/upload\/w_700,c_fill,f_auto,q_auto,dpr_2.0\/Web_Assets\/blog\/unsigned-preset.png\" alt=\"Preset\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"625\"\/><\/p>\n<\/li>\n<li>\n<p>Click the <strong>Security<\/strong> tab at the top and, under <strong>Restricted media types<\/strong>, select <strong>Resource list<\/strong> so that you can retrieve media files from Cloudinary\u2019s API.<\/p>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/image\/upload\/w_700,c_fill,f_auto,q_auto,dpr_2.0\/Web_Assets\/blog\/resource-list.png\" alt=\"resource list\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"972\"\/><\/p>\n<p>To use Cloudinary\u2019s React SDK with Gatsby, install a dependency and set up the app, as follows:<\/p>\n<ol>\n<li>Open the terminal and run the <code>npm install cloudinary-react --save<\/code> command.<\/li>\n<li>Add the custom script below to the <code>Gatsby-browser.js<\/code> file in the root directory of the project so that you can use Cloudinary\u2019s upload widget:<\/li>\n<\/ol>\n<pre class=\"js-syntax-highlighted\"><code>const addScript = url =&gt; {\n  const script = document.createElement(&quot;script&quot;)\n  script.src = url;\n  script.async = true;\n  document.body.appendChild(script);\n}\nexport const onClientEntry = () =&gt; {\n  window.onload = () =&gt; {\n    addScript(&quot;https:\/\/widget.cloudinary.com\/v2.0\/global\/all.js&quot;)\n  };\n};\n<\/code><\/pre>\n<p>Integration of Cloudinary with Gatsby is now complete. You can use all sorts of interesting features with <a href=\"https:\/\/cloudinary.com\/documentation\/react_integration\">Cloudinary\u2019s React SDK<\/a> inside the app. With Cloudinary, you can also validate, process, and transform user-generated <a href=\"https:\/\/cloudinary.com\/video_api\">videos<\/a>. <a href=\"https:\/\/cloudinary.com\/addons\">Cloudinary add-ons<\/a> accord you control over content with artificial intelligence (AI).<\/p>\n<h2>The Cloudinary Upload Widget<\/h2>\n<p>The <a href=\"https:\/\/demo.cloudinary.com\/uw\/#\/\">Cloudinary upload widget<\/a> is a customizable, interactive, and responsive pop-up tool that uploads content directly to your Cloudinary account. The widget sends a callback function on successful uploads and offers cloud-name and upload-preset options for both signed and unsigned uploads. You only need JavaScript to integrate that widget into your web app.\nTo see what the upload widget can do, define a function in the <code>src\\components\\ProductAttributes\\index.js<\/code> file and execute that function on a click event in your app, like this:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>  const showWidget = () =&gt; {\n    const uploadOptions = {\n      tags: [&quot;userVideos&quot;], \n      cloud_name: &quot;your_cloud&quot;,\n      upload_preset: &quot;your_preset&quot;,\n      resource_type: &quot;video&quot;,\n      folder: &quot;videos&quot;,\n    };\n    const widget = window.cloudinary.createUploadWidget(\n      uploadOptions,\n      (error, result) =&gt; {\n        if (!error &amp;&amp; result &amp;&amp; result.event === &quot;success&quot;) {\n          console.log(result);\n        }\n      }\n    );\n    widget.open();\n  };\n<\/code><\/pre>\n<p><code>uploadOptions<\/code> in the function above specifies that it accepts only resources with type <code>video<\/code>. All uploaded videos are stored in a folder named <code>videos<\/code> with the tag <code>userVideos<\/code>.\nNext, call the <code>showWidget<\/code> function on the click of a button:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>&lt;div className=&quot;text-center mb-4&quot;&gt;\n        &lt;button className=&quot;btn btn-primary&quot;  onClick={showWidget}&gt;\n          Upload Review Video\n        &lt;\/button&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>Clicking <strong>Upload Review Video<\/strong> then triggers this dialog box from the upload widget:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/image\/upload\/v1617642676\/Web_Assets\/blog\/upload-widget-gatsby.png\" alt=\"upload widget\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"602\" height=\"421\"\/><\/p>\n<h2>Moderation and Security<\/h2>\n<p>The most crucial aspects of managing UGC are moderation and security, which eliminate uploads of irrational, offensive, or harmful content. Implementation is a cumbersome task, but Cloudinary makes it swift with much less effort.<\/p>\n<p>Cloudinary offers automatic and manual media moderations. Automated moderation, which approves or rejects the uploaded content, is through add-ons for <a href=\"https:\/\/cloudinary.com\/documentation\/aws_rekognition_ai_moderation_addon\">images<\/a> and <a href=\"https:\/\/cloudinary.com\/documentation\/aws_rekognition_video_moderation_addon\">videos<\/a>. All you have to do is register for the add-ons, include them in the upload preset, and specify the moderation mode you desire. Follow these steps:<\/p>\n<ol>\n<li>Navigate to the section where you created the upload preset and enable unsigned uploads.<\/li>\n<li>Click the <strong>Upload Control<\/strong> tab on the left and select your moderation mode from the pull-down menu under <strong>Auto moderation<\/strong>.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/image\/upload\/w_700,c_fill,f_auto,q_auto,dpr_2.0\/Web_Assets\/blog\/upload_control.png\" alt=\"upload control\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"477\"\/><\/p>\n<p>Security of your assets is equally important. What happens if someone uploads a media file that contains malware? It could inflict a load of harm on your business within seconds. Cloudinary automatically checks for malicious files, ensuring that your assets are secure. To activate that security check, simply apply any form of transformation through Cloudinary, such as cropping or changing your assets\u2019 width or format.<\/p>\n<p>Cloudinary can also remove media information that\u2019s not relevant to your business. The <a href=\"https:\/\/cloudinary.com\/product_updates\/ocr_optical_character_recognition_add_on\">Optical Character Recognition (OCR) add-on<\/a>, for example, automatically scans images and removes potentially sensitive information by blurring it.<\/p>\n<h2>Content-Aware Cropping<\/h2>\n<p>Cloudinary\u2019s content-aware cropping feature identifies the most significant part of the media and intelligently crops it. In the Gatsby app, set <code>gravity<\/code> to <code>auto<\/code> and <code>crop<\/code> to <code>fill<\/code> by adding transformations using the <code>Transformation<\/code> component imported  from the <code>cloudinary-react<\/code> package:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>import { CloudinaryContext, Transformation, Video } from &quot;cloudinary-react&quot;;\n \n&lt;Video\n  className=&quot; col-xl-6 col-12 mb-2 shadow&quot;\n  publicId={publicIds[id].public_id}\n  controls={true}\n  &gt;\n  &lt;Transformation\n    width=&quot;300&quot;\n    height={window.innerWidth &lt; 600 ? &quot;300&quot; : &quot;&quot;}\n    gravity=&quot;auto&quot;\n    crop=&quot;fill&quot;\n  \/&gt;\n&lt;\/Video&gt;\n<\/code><\/pre>\n<h2>The Cloudinary Video Player<\/h2>\n<p>Cloudinary\u2019s responsive, JavaScript-based <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_video_player\">video player<\/a> offers options for integration and customization, including skin themes, fonts, subtitles, transformations, and so forth. However, in the React app you just built, you can also dynamically pass the public ID (<code>publicId<\/code>) as an attribute to create a customized video player with the <code>Video<\/code> component of the Cloudinary-react SDK. If you look in the <code>ProductAttributes<\/code> page of the sample project, you\u2019ll see we\u2019ve imported several Cloudinary React components and added a video player to the page:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>import { CloudinaryContext, Transformation, Video } from &quot;cloudinary-react&quot;;\n...\nconst getNextIndex = () =&gt; {\n    return id + 1 &lt; publicIds.length ? id + 1 : 0;\n};\n...\n&lt;CloudinaryContext cloudName=&quot;dafco2hao&quot;&gt;\n        {publicIds.length &gt; 0 ? (\n          &lt;Header className=&quot;text-center&quot; as=&quot;h3&quot;&gt;\n            Videos with No Transformation\n          &lt;\/Header&gt;\n        ) : null}\n        {videos.map(data =&gt; {\n          return (\n            &lt;div className=&quot;container &quot; key={data.public_id}&gt;\n              &lt;div className=&quot;row py-3&quot;&gt;\n                &lt;Video\n                  className=&quot;col-xl-6 p-0 col-12 shadow&quot;\n                  publicId={data.public_id}\n                  controls={true}\n                &gt;&lt;\/Video&gt;\n              &lt;\/div&gt;\n            &lt;\/div&gt;\n          );\n        })}\n        {publicIds.length &gt; 0 ? (\n          &lt;&gt;\n            &lt;Header className=&quot;text-center mb-4&quot; as=&quot;h3&quot;&gt;\n              Video Playlist with Content Aware Cropping\n            &lt;\/Header&gt;\n            &lt;Video\n              className=&quot; col-xl-6 col-12 mb-2 shadow&quot;\n              publicId={publicIds[id].public_id}\n              controls={true}\n            &gt;\n              &lt;Transformation\n                width=&quot;300&quot;\n                height={window.innerWidth &lt; 600 ? &quot;300&quot; : &quot;&quot;}\n                gravity=&quot;auto&quot;\n                crop=&quot;fill&quot;\n              \/&gt;\n            &lt;\/Video&gt;\n          &lt;\/&gt;\n        ) : null}\n      &lt;\/CloudinaryContext&gt;\n...\n&lt;div className=&quot;text-center mb-4&quot;&gt;\n    &lt;Button onClick={() =&gt; setId(getNextIndex())} variant=&quot;primary&quot;&gt;\n            Next Video\n    &lt;\/Button&gt;{&quot; &quot;}\n&lt;\/div&gt;\n<\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>You\u2019ve now learned how to enhance your website by first integrating Cloudinary with a Gatsby.js app and then leveraging Cloudinary\u2019s many advanced features, such as its upload widget, moderation and security capabilities, content-aware cropping, and video player. The <a href=\"https:\/\/stoic-newton-0177bd.netlify.app\/\">deployed link<\/a> of this sample e-commerce app includes all the functions discussed in this tutorial.<\/p>\n<p>Ultimately, by dynamically generating content on your site with Cloudinary, you can promote your product\u2019s authenticity and credibility, which bodes well for sales growth. For more details, see our <a href=\"https:\/\/cloudinary.com\/documentation\/programmable_media_overview\">developer resources<\/a>.<\/p>\n<h2>About the Author &#8211; Dhruv Patel<\/h2>\n<p>Dhruv Patel is a full-stack developer and AWS-certified solutions architect. His motto is \u201cDo What You Love\u201d and Tech is surely one of them for him.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":22319,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[25,98,303,305],"class_list":["post-22318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-asset-management","tag-e-commerce","tag-video","tag-video-api"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Create a E-Commerce Site on Gatsby Along With User-Generated Content<\/title>\n<meta name=\"description\" content=\"Incorporate user-generated content into a Gatsby app by integrating it with Cloudinary, complete with moderation, security, and other advanced features.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create a Great E-Commerce Site on Gatsby Along With User-Generated Content Using Cloudinary\" \/>\n<meta property=\"og:description\" content=\"Incorporate user-generated content into a Gatsby app by integrating it with Cloudinary, complete with moderation, security, and other advanced features.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-05T17:40:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-23T23:58:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"847\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Create a Great E-Commerce Site on Gatsby Along With User-Generated Content Using Cloudinary\",\"datePublished\":\"2021-04-05T17:40:28+00:00\",\"dateModified\":\"2024-10-23T23:58:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content\"},\"wordCount\":13,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA\",\"keywords\":[\"Asset Management\",\"E-commerce\",\"Video\",\"Video API\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2021\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content\",\"url\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content\",\"name\":\"Create a E-Commerce Site on Gatsby Along With User-Generated Content\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA\",\"datePublished\":\"2021-04-05T17:40:28+00:00\",\"dateModified\":\"2024-10-23T23:58:34+00:00\",\"description\":\"Incorporate user-generated content into a Gatsby app by integrating it with Cloudinary, complete with moderation, security, and other advanced features.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a Great E-Commerce Site on Gatsby Along With User-Generated Content Using Cloudinary\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Create a E-Commerce Site on Gatsby Along With User-Generated Content","description":"Incorporate user-generated content into a Gatsby app by integrating it with Cloudinary, complete with moderation, security, and other advanced features.","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:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content","og_locale":"en_US","og_type":"article","og_title":"Create a Great E-Commerce Site on Gatsby Along With User-Generated Content Using Cloudinary","og_description":"Incorporate user-generated content into a Gatsby app by integrating it with Cloudinary, complete with moderation, security, and other advanced features.","og_url":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content","og_site_name":"Cloudinary Blog","article_published_time":"2021-04-05T17:40:28+00:00","article_modified_time":"2024-10-23T23:58:34+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content"},"author":{"name":"","@id":""},"headline":"Create a Great E-Commerce Site on Gatsby Along With User-Generated Content Using Cloudinary","datePublished":"2021-04-05T17:40:28+00:00","dateModified":"2024-10-23T23:58:34+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content"},"wordCount":13,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA","keywords":["Asset Management","E-commerce","Video","Video API"],"inLanguage":"en-US","copyrightYear":"2021","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content","url":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content","name":"Create a E-Commerce Site on Gatsby Along With User-Generated Content","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA","datePublished":"2021-04-05T17:40:28+00:00","dateModified":"2024-10-23T23:58:34+00:00","description":"Incorporate user-generated content into a Gatsby app by integrating it with Cloudinary, complete with moderation, security, and other advanced features.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/create_a_great_e_commerce_site_on_gatsby_along_with_user_generated_content#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Create a Great E-Commerce Site on Gatsby Along With User-Generated Content Using Cloudinary"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649719345\/Web_Assets\/blog\/Gatsby_Video_223199a3d1\/Gatsby_Video_223199a3d1.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=22318"}],"version-history":[{"count":6,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22318\/revisions"}],"predecessor-version":[{"id":36157,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22318\/revisions\/36157"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/22319"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=22318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=22318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=22318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}