Industry-Leading Smart Tips for Gatsby

Best Smart Tips Software for Gatsby

Join 2,200+ companies using Produktly to create exceptional smart tips that provide context-aware help right where it is needed most on Gatsby.

Produktly Capterra rating 4.7/5.0Produktly Capterra Best Ease of Use Badge

Why Produktly Smart Tips is Perfect for Gatsby

Interactive onboarding for Gatsby static sites. Produktly helps you guide users through your Gatsby-powered content.

Supercharge Your Gatsby Experience

Proactively and non-intrusively guide users through your product with contextual highlights.

Non-Intrusive Guidance

Guide users through your app with subtle, helpful tips.

Rich Media Support

Embed videos and GIFs directly into your smart tips.

Quick Integration

Add smart tips to your site in less than 5 minutes.

Simple Integration with Gatsby

Getting started with Produktly smart tips on your Gatsby project is quick and easy.

How to integrate:

  1. 1

    Get your unique script from Produktly.

  2. 2

    Add the script to your gatsby-ssr.js or gatsby-browser.js.

  3. 3

    Build tours using our visual editor on your live Gatsby site.

  4. 4

    Improve user retention with guided walkthroughs.

Produktly highlighting features in Gatsby

Gatsby and in-app guidance

Gatsby pre-renders pages at build time and hydrates them in the browser. The result is fast static HTML with React taking over once the JS bundle loads. Anything that targets a DOM element has to wait until hydration completes, or use a static target that exists in the pre-rendered HTML.

Gatsby also does client-side routing with @reach/router, so navigation between pages is in-app after the first load. Tours that depend on page reloads will only fire once unless they listen to history changes.

Installing Produktly on Gatsby

Use setHeadComponents in gatsby-ssr.js so the snippet gets injected into the pre-rendered HTML of every page.

// gatsby-ssr.js
import React from "react";

export const onRenderBody = ({ setHeadComponents }) => {
  setHeadComponents([
    <script
      key="produktly"
      dangerouslySetInnerHTML={{
        __html: `
          (function (w, d, f) {
            var a = d.getElementsByTagName("head")[0];
            var s = d.createElement("script");
            s.async = 1; s.src = f;
            s.setAttribute("id", "produktlyScript");
            s.dataset.clientToken = "YOUR_TOKEN";
            a.appendChild(s);
          })(window, document, "https://public.produktly.com/js/main.js");
        `
      }}
    />
  ]);
};

setHeadComponents inlines the script during build, so it lands in the static HTML and runs on first paint, no JS bundle required.

Things to watch out for on Gatsby

  • Loading in gatsby-browser.js misses the first render

    gatsby-browser.js only runs after hydration. If you want the script available on first paint, put it in gatsby-ssr.js as shown.

  • Gatsby Link skips full page reloads

    After the first page, Gatsby Link does soft navigation. Enable Produktly’s SPA redirect handling so cross-page tours keep firing.

  • Static queries hydrate after the page paints

    If your tour targets a component fed by useStaticQuery, the element exists in the pre-rendered HTML but may be replaced during hydration. Use stable data-* attributes that survive both renders.

Why teams on Gatsby pick Produktly

Gatsby teams pick Produktly because the snippet ships in static HTML and runs before the React bundle loads, no impact on Core Web Vitals. Setup is one onRenderBody hook, and the editor works against pre-rendered HTML the same way it works against any other site.