CINXE.COM

How to create awesome product tours your customers will love

<!DOCTYPE html> <html lang="en"> <head> <link rel="dns-prefetch" href="https://sync.outbrain.com"> <link rel="dns-prefetch" href="https://ups.analytics.yahoo.com"> <link rel="dns-prefetch" href="https://ib.adnxs.com"> <link rel="dns-prefetch" href="https://www.google-analytics.com"> <link rel="dns-prefetch" href="https://fonts.googleapis.com"> <link rel="dns-prefetch" href="https://cdn.logrocket.io"> <link rel="preload" as="style" rel="stylesheet" type="text/css" href="https://www.developermarketing.io/assets/built/screen.css?v=931413e88b" /> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>How to create awesome product tours your customers will love</title> <meta name="HandheldFriendly" content="True" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://www.developermarketing.io/assets/built/screen.css?v=931413e88b" /> <meta name="author" content="Grace Gupta"> <script src="https://cdn.lr-ingest.io/LogRocket.min.js" crossorigin="anonymous"></script> <script> window.LogRocket && window.LogRocket.init('acara/sequel-main'); window.inArticleAdList; window.inArticleAdListDisabled; window.topNav; window.showGetCertCta; window.isTOCenabled; //window.userIdSegment = localStorage.getItem("user_id"); </script> <script> var ghosthunter_key = 'b1d2e55946ba49e939e2eba782'; window.isHiddenUpgradeVisible = false; </script> <script type="text/javascript"> function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } var action = getParameterByName('action'); if (action == 'signin') { window.location = '/account'; } if (window.location && window.location.search && window.location.search.includes('stripe=success')) { window.location = '/activate'; } </script> <script> var checkUserId = function({ payload, next, integrations }) { var user_id = payload.obj.userId; if(user_id && (user_id.length === 8 || user_id.length !== 36)) { console.log('teacahble user_id still set, clearing'); window.localStorage.removeItem('apc_user_id'); analytics.reset(); analytics.user().anonymousId(payload.obj.anonymousId); delete payload.obj.userId; delete payload.obj.traits; console.log('payload after clearing', payload.obj); } next(payload); }; !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="bqZesCFCcPJXif3lu86TptwIYpDbM6WX";analytics.SNIPPET_VERSION="4.13.2"; const tags = []; const authors = []; let primary_tag; let primary_author; primary_author = "Grace Gupta"; primary_tag = "Business to Developer"; authors.push("Grace Gupta") tags.push("Business to Developer") analytics.addSourceMiddleware(checkUserId); analytics.load('bqZesCFCcPJXif3lu86TptwIYpDbM6WX', { user: { persist: true, cookie: { key: 'ajs_alliance_user_id' }, localStorage: { key: 'ajs_alliance_user_traits' } } }); analytics.page({ properties: { primary_tag: primary_tag, primary_author: primary_author, authors: authors, tags: tags, community: 'DMA' } }); }}(); </script> <meta name="description" content="There’s a simple solution that can make your users feel right at home from the get-go, and they’re called product tours. Check it out."> <link rel="icon" href="https://www.developermarketing.io/content/images/size/w256h256/2024/07/android-chrome-192x192--2-.png" type="image/png"> <link rel="canonical" href="https://www.customersuccesscollective.com/product-tours/"> <meta name="referrer" content="no-referrer-when-downgrade"> <meta property="og:site_name" content="Developer Marketing Alliance"> <meta property="og:type" content="article"> <meta property="og:title" content="How to create awesome product tours your customers will love"> <meta property="og:description" content="No one wants their customers to feel alienated and lost. Luckily, there’s a simple solution that can make your users feel right at home from the get-go, and they’re called product tours."> <meta property="og:url" content="https://www.customersuccesscollective.com/product-tours/"> <meta property="og:image" content="https://www.developermarketing.io/content/images/size/w1200/2024/05/jametlene-reskp-3Dtu6_XfqIk-unsplash.jpeg"> <meta property="article:published_time" content="2024-05-31T07:53:39.000Z"> <meta property="article:modified_time" content="2025-01-06T11:33:43.000Z"> <meta property="article:tag" content="Business to Developer"> <meta property="article:publisher" content="https://www.facebook.com/Dev-Mar-Com-104156045444631"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="How to create awesome product tours your customers will love"> <meta name="twitter:description" content="No one wants their customers to feel alienated and lost. Luckily, there’s a simple solution that can make your users feel right at home from the get-go, and they’re called product tours."> <meta name="twitter:url" content="https://www.customersuccesscollective.com/product-tours/"> <meta name="twitter:image" content="https://www.developermarketing.io/content/images/size/w1200/2024/05/jametlene-reskp-3Dtu6_XfqIk-unsplash.jpeg"> <meta name="twitter:label1" content="Written by"> <meta name="twitter:data1" content="Grace Gupta"> <meta name="twitter:label2" content="Filed under"> <meta name="twitter:data2" content="Business to Developer"> <meta name="twitter:site" content="@DevMarCom"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="800"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "publisher": { "@type": "Organization", "name": "Developer Marketing Alliance", "url": "https://www.developermarketing.io/", "logo": { "@type": "ImageObject", "url": "https://www.developermarketing.io/content/images/2024/07/DMA-FULL-LOGO-SECONDARY--ON-WHITE-.png" } }, "author": { "@type": "Person", "name": "Grace Gupta", "image": { "@type": "ImageObject", "url": "https://www.developermarketing.io/content/images/2023/01/grace-gupta.jpeg", "width": 300, "height": 278 }, "url": "https://www.developermarketing.io/author/grace/", "sameAs": [] }, "headline": "How to create awesome product tours your customers will love", "url": "https://www.developermarketing.io/how-to-create-awesome-product-tours-your-customers-will-love-2/", "datePublished": "2024-05-31T07:53:39.000Z", "dateModified": "2025-01-06T11:33:43.000Z", "image": { "@type": "ImageObject", "url": "https://www.developermarketing.io/content/images/size/w1200/2024/05/jametlene-reskp-3Dtu6_XfqIk-unsplash.jpeg", "width": 1200, "height": 800 }, "keywords": "Business to Developer", "description": "No one wants their customers to feel alienated and lost. Luckily, there’s a simple solution that can make your users feel right at home from the get-go, and they’re called product tours.", "mainEntityOfPage": "https://www.developermarketing.io/how-to-create-awesome-product-tours-your-customers-will-love-2/" } </script> <meta name="generator" content="Ghost 5.109"> <link rel="alternate" type="application/rss+xml" title="Developer Marketing Alliance" href="https://www.developermarketing.io/rss/"> <script defer src="https://cdn.jsdelivr.net/ghost/portal@~2.49/umd/portal.min.js" data-i18n="true" data-ghost="https://www.developermarketing.io/" data-key="2be6d1425f40575bfdfe2cf338" data-api="https://developer-marketing-alliance.ghost.io/ghost/api/content/" data-locale="en" crossorigin="anonymous"></script><style id="gh-members-styles">.gh-post-upgrade-cta-content, .gh-post-upgrade-cta { display: flex; flex-direction: column; align-items: center; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; text-align: center; width: 100%; color: #ffffff; font-size: 16px; } .gh-post-upgrade-cta-content { border-radius: 8px; padding: 40px 4vw; } .gh-post-upgrade-cta h2 { color: #ffffff; font-size: 28px; letter-spacing: -0.2px; margin: 0; padding: 0; } .gh-post-upgrade-cta p { margin: 20px 0 0; padding: 0; } .gh-post-upgrade-cta small { font-size: 16px; letter-spacing: -0.2px; } .gh-post-upgrade-cta a { color: #ffffff; cursor: pointer; font-weight: 500; box-shadow: none; text-decoration: underline; } .gh-post-upgrade-cta a:hover { color: #ffffff; opacity: 0.8; box-shadow: none; text-decoration: underline; } .gh-post-upgrade-cta a.gh-btn { display: block; background: #ffffff; text-decoration: none; margin: 28px 0 0; padding: 8px 18px; border-radius: 4px; font-size: 16px; font-weight: 600; } .gh-post-upgrade-cta a.gh-btn:hover { opacity: 0.92; }</style><script async src="https://js.stripe.com/v3/"></script> <script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/sodo-search.min.js" data-key="2be6d1425f40575bfdfe2cf338" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/main.css" data-sodo-search="https://developer-marketing-alliance.ghost.io/" data-locale="en" crossorigin="anonymous"></script> <link href="https://www.developermarketing.io/webmentions/receive/" rel="webmention"> <script defer src="/public/cards.min.js?v=931413e88b"></script> <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=931413e88b"> <script defer src="/public/comment-counts.min.js?v=931413e88b" data-ghost-comments-counts-api="https://www.developermarketing.io/members/api/comments/counts/"></script> <script defer src="/public/member-attribution.min.js?v=931413e88b"></script><style>:root {--ghost-accent-color: #4f36d6;}</style> <!-- style for all community --> <link rel="stylesheet" type="text/css" href="https://middleware.pmmalliance.com/community.css" /> <!-- Start of HubSpot Embed Code --> <script type="text/javascript" id="hs-script-loader" async defer src="//js-eu1.hs-scripts.com/139496063.js"></script> <!-- End of HubSpot Embed Code --> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PCKTC3B');</script> <!-- End Google Tag Manager --> <script>!function () {var reb2b = window.reb2b = window.reb2b || [];if (reb2b.invoked) return;reb2b.invoked = true;reb2b.methods = ["identify", "collect"];reb2b.factory = function (method) {return function () {var args = Array.prototype.slice.call(arguments);args.unshift(method);reb2b.push(args);return reb2b;};};for (var i = 0; i < reb2b.methods.length; i++) {var key = reb2b.methods[i];reb2b[key] = reb2b.factory(key);}reb2b.load = function (key) {var script = document.createElement("script");script.type = "text/javascript";script.async = true;script.src = "https://s3-us-west-2.amazonaws.com/b2bjsstore/b/" + key + "/reb2b.js.gz";var first = document.getElementsByTagName("script")[0];first.parentNode.insertBefore(script, first);};reb2b.SNIPPET_VERSION = "1.0.1";reb2b.load("Y46DJ4H4P361");}();</script> <!-- Start Cookie Script --> <script type="text/javascript"> var _iub = _iub || []; _iub.csConfiguration = {"askConsentAtCookiePolicyUpdate":true,"cookiePolicyInOtherWindow":true,"countryDetection":true,"enableFadp":true,"enableLgpd":true,"enableTcf":true,"floatingPreferencesButtonDisplay":"anchored-center-left","floatingPreferencesButtonZIndex":999,"gdprAppliesGlobally":false,"googleAdditionalConsentMode":true,"lang":"en","lgpdAppliesGlobally":false,"perPurposeConsent":true,"siteId":1712381,"tcfPurposes":{"2":"li_only","7":"li_only","8":"li_only","9":"li_only","10":"li_only","11":"li_only"},"cookiePolicyId":24731467,"i18n":{"en":{"banner":{"title":"The Alliance privacy & cookie controls","dynamic":{"body":"We use cookies to give you the best experience on our website. By continuing to browse, you agree to our cookie policy"}}}}, "banner":{ "acceptButtonColor":"#367AFF","acceptButtonDisplay":true,"backgroundColor":"#09100F","brandBackgroundColor":"#09100F","closeButtonRejects":true,"customizeButtonCaptionColor":"#F9F8F5","customizeButtonColor":"#292626","customizeButtonDisplay":true,"explicitWithdrawal":true,"fontSizeBody":"10px","fontSizeCloseButton":"24px","listPurposes":true,"logo":"https://pma-assets-external.ams3.cdn.digitaloceanspaces.com/alliance-website/ALLIANCE%20FULL%20-%20Secondary_small.svg","linksColor":"#F9F8F5","ownerName":"The Alliance","position":"bottom","prependOnBody":true,"rejectButtonCaptionColor":"#F9F8F5","rejectButtonColor":"#292626","rejectButtonDisplay":true,"showPurposesToggles":true,"showTotalNumberOfProviders":true,"textColor":"#F9F8F5","acceptButtonCaption":"Accept all","rejectButtonCaption":"Reject" }}; </script> <script type="text/javascript" src="https://cs.iubenda.com/autoblocking/1712381.js"></script> <script type="text/javascript" src="//cdn.iubenda.com/cs/tcf/stub-v2.js"></script> <script type="text/javascript" src="//cdn.iubenda.com/cs/tcf/safe-tcf-v2.js"></script> <script type="text/javascript" src="//cdn.iubenda.com/cs/iubenda_cs.js" charset="UTF-8" async></script> <!-- End Cookie Script --> <!-- Mutiny Script --> <script> (function(){var a=window.mutiny=window.mutiny||{};if(!window.mutiny.client){a.client={_queue:{}};var b=["identify","trackConversion"];var c=[].concat(b,["defaultOptOut","optOut","optIn"]);var d=function factory(c){return function(){for(var d=arguments.length,e=new Array(d),f=0;f<d;f++){e[f]=arguments[f]}a.client._queue[c]=a.client._queue[c]||[];if(b.includes(c)){return new Promise(function(b,d){a.client._queue[c].push({args:e,resolve:b,reject:d});setTimeout(d,500)})}else{a.client._queue[c].push({args:e})}}};c.forEach(function(b){a.client[b]=d(b)})}})(); </script> <script data-cfasync="false" src="https://client-registry.mutinycdn.com/personalize/client/dc82cf9a1e4605e6.js"></script> <!-- End Mutiny Script --> <script id='pixel-script-poptin' src='https://cdn.popt.in/pixel.js?id=5216131db94ff' async='true'></script> <!-- Start Clearbit Script --> <script src="https://tag.clearbitscripts.com/v1/pk_bebaa9db4ca35af82ab4d629c9fade2b/tags.js"></script> <!-- End Clearbit Script --> <!-- Start of Async ProveSource Code --><script>!function(o,i){window.provesrc&&window.console&&console.error&&console.error("ProveSource is included twice in this page."),provesrc=window.provesrc={dq:[],display:function(){this.dq.push(arguments)}},o._provesrcAsyncInit=function(){provesrc.init({apiKey:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50SWQiOiI1ZWEyZTczNTRjNDQ0ZDQ1NzU0OWRhYWUiLCJpYXQiOjE1ODc3MzQzMjZ9.3BTkc-xMOUGxjeDJV_LuZh_FJ956iGxKa9mZGF4TRMA",v:"0.0.4"})};var r=i.createElement("script");r.type="text/javascript",r.async=!0,r["ch"+"ar"+"set"]="UTF-8",r.src="https://cdn.provesrc.com/provesrc.js";var e=i.getElementsByTagName("script")[0];e.parentNode.insertBefore(r,e)}(window,document);</script><!-- End of Async ProveSource Code --> <script> window.proPlusStripeIdList = [ 'price_1NY9D7Eo1YJVPydUpWRGoVGF', 'price_1NizPIEo1YJVPydULbBhp8Lm' ]; </script> <script> var eventsList = [ { 'title': 'Developer Marketing Summit', 'date': 'Catch up OnDemand', 'location': '<b>Online</b>', 'url': 'https://www.developermarketing.io/developer-marketing-summit-nov-2022-ondemand/' }, { 'title': 'Developer Marketing Summit', 'date': 'Catch up OnDemand', 'location': '<b>San Francisco</b>', 'url': 'https://www.developermarketing.io/developer-marketing-summit-san-francisco-2022/' }, { 'title': 'Developer Marketing Summit, March 22', 'date': 'Catch up OnDemand', 'location': '<b>Online</b>', 'url': 'https://www.developermarketing.io/developer-marketing-summit-march-2022-ondemand/' }, ]; </script> <script> window.topNav = [ { name: 'Membership', itemList: [ { name: 'Membership plans', url: '', desc: 'Pick your path', itemList: [ { name: 'Pro membership', url: '/pro-membership/' }, { name: 'Pro+ membership', url: '/pro-plus-membership/' }, { name: 'Team membership', url: '/teams/' } , { name: 'Your taster pack', url: '/your-dma-taster-pack/' } ] }, { name: 'What is included?', desc: 'All you need to succeed', itemList: [ { name: 'Templates & frameworks', url: '/templates-frameworks/' }, { name: 'OnDemand videos', url: '/developer-marketing-ondemand/' }, { name: 'Exclusive content', url: '/tag/exclusive-articles/' }, { name: 'Member perks', url: '/member-perks/' } ] }, { name: 'Take a peek inside', url: '', desc: 'See what the fuss is about', itemList: [ { name: 'Freemium membership', url: '/insider-membership-plan/' }, { name: 'Membership release notes', url: '/whats-new-in-the-developer-marketing-alliance-membership-plans/' } ] }, ] }, { name: 'Certification', itemList: [ { name: 'Developer Marketing Core', desc: 'The essentials of developer marketing', itemList: [ { name: 'Developer Marketing Certified: Core', desc: 'The A to Z of developer marketing', url: 'https://learn.developermarketing.io/course/developer-marketing-certified-core' }, { name: 'View all courses', url: 'https://learn.developermarketing.io/courses' }, ] }, { name: 'Masters Certified', desc: 'Be the go-to expert', itemList: [ { name: 'Developer Relations Certified: Masters', url: 'https://learn.developermarketing.io/course/developer-relations-certified-masters' }, { name: 'Developer Research Certified: Masters', url: 'https://learn.developermarketing.io/course/developer-research-certified-masters' }, { name: 'Digital Developer Marketing Certified: Masters', url: 'https://learn.developermarketing.io/course/digital-developer-marketing-certified-masters' }, { name: 'Developer Content Marketing Certified: Masters', url: 'https://learn.developermarketing.io/course/developer-content-marketing-certified-masters' }, { name: 'Developer Journeys Certified: Masters', url: 'https://learn.developermarketing.io/course/developer-journeys-certified-masters' }, { name: 'View all Masters', url: 'https://learn.developermarketing.io/courses' }, ] }, ] }, { name: 'Resources', itemList: [ { name: 'Content hub', desc: 'DevMar insights on tap', url: '#', itemList: [ { name: 'Articles', url: '/articles/' }, { name: 'Reports', url: '/all-developer-marketing-alliance-reports/' }, { name: 'Guides', url: '/tag/guides/' }, { name: 'Playbooks', url: '/tag/playbooks/' }, { name: 'Podcasts', url: 'https://alliance.ghost.io/podcasts/?filter=podcast-filter-community-devmar' }, { name: 'YouTube', url: 'https://www.youtube.com/@developermarketingalliance' }, { name: 'Newsletter', url: '/newsletter/' }, { name: 'Success stories', url: '/tag/success-stories/' } ] }, { name: 'Research & reports', desc: 'All the intel you need', url: '#', itemList: [ { name: 'The State of Developer Adoption 2025', desc: 'Take the survey', url: '/the-state-of-developer-adoption-2025-survey/' }, { name: 'AI in Community Management Playbook', desc: '', url: '/ai-in-community-management-playbook/' }, { name: 'State of Developer Marketing Report', desc: '', url: '/state-of-developer-marketing/' }, { name: 'Tools of Choice Report', desc: '', url: '/developer-marketing-tools-of-choice-report/' }, { name: 'Developer Relations Playbook', desc: '', url: '/the-developer-relations-playbook/' }, { name: 'How Developers Think: A Persona Playbook', desc: '', url: '/how-developers-think-a-persona-playbook/' }, { name: 'Guide to Developer and Community Engagement', desc: '', url: '/guide-to-developer-community-engagement/' }, { name: 'All reports', url: '/all-developer-marketing-alliance-reports/' } ] }, { name: 'Guides', desc: 'Dive into the essentials', url: '/tag/guides/', itemList: [ { name: 'Developer communities', url: '/everything-you-need-to-know-about-developer-communities/' }, { name: 'Developer marketing (B2D)', url: '/your-guide-to-developer-marketing/' }, { name: 'Developer personas', url: '/the-complete-guide-to-developer-personas/' }, { name: 'Developer relations (DevRel)', url: '/what-is-developer-relations-devrel/' }, { name: 'Developer experience', url: '/what-is-developer-experience-devex/' }, { name: 'B2D product positioning', url: '/the-b2d-guide-to-product-positioning/' }, { name: 'SaaS marketing', url: '/what-is-saas-marketing/' }, { name: 'Free essential templates', url: '/4-essential-templates-for-successful-developer-marketers/' }, { name: 'Frequently asked questions', url: '/frequently-asked-questions/' }, { name: 'All guides', url: '/tag/guides/' } ] }, { name: 'Best of the rest', desc: 'Highlights from elsewhere', url: '/', itemList: [ { name: 'DMA framework', desc: 'Download the framework', url: '/developer-marketing-framework/' }, { name: 'DMA IQ test', desc: 'Developer marketing competency test', url: 'https://www.developermarketing.io/developer-marketing-iq/' }, { name: 'Newsletter', desc: 'Monthly developer marketing insights', url: '/newsletter/' }, ] }, ] }, { name: 'Events', itemList: [ { name: 'Virtual events', desc: 'Any time, any place', url: '#', itemList: [ { name: 'DMAnow: Live LinkedIn Webinar', desc: 'Webinar', url: '/tag/dmanow/' }, { name: 'Technical Product Marketing Summit', desc: 'March 5', url: 'https://virtual.productmarketingalliance.com/location/technicalpmm/' }, ] }, { name: 'In-person events', desc: 'Events all over the world', url: '#', itemList: [ { name: 'Global event calendar', url: 'https://events.developermarketing.io/', target: '_blank' }, { name: 'Networking meetup | San Francisco', desc: 'February 27', url: 'https://developer-marketing-alliance.circle.so/c/san-francisco-bay-area/dma-san-francisco-meetup-setting-personal-okrs-february-27' }, ] }, { name: 'Quick links', desc: 'Plan ahead or catch up', url: '#', itemList: [ { name: 'Apply to speak at our events', url: '/developer-marketing-alliance-call-for-speakers/', target: '_blank' }, { name: 'All events', url: 'https://live.developermarketing.io/', target: '_blank' }, ] } ] }, { name: 'Community', itemList: [ { name: 'Network', url: '#', desc: 'Connect and collaborate', itemList: [ { name: 'Slack community', url: '/join-the-developer-marketing-alliance-community/' }, { name: 'Meetups', url: '/dma-in-person-meetups/' }, { name: 'Meet the ambassadors', url: '/meet-the-ambassadors/' } ] }, { name: 'Learn', url: '#', desc: 'Level up your career', itemList: [ { name: 'Developer Marketing Alliance LinkedIn', url: 'https://www.linkedin.com/company/developer-marketing-alliance/' }, { name: 'Developer Marketing Alliance Awards | 2024 Finalists', url: 'https://www.developermarketing.io/developer-marketing-awards-2024-your-finalists/' }, { name: 'Become an ambassador', url: '/become-dma-ambassador/' }, { name: 'Customer Advisory Board', url: '/developer-marketing-alliance-customer-advisory-board/' } ] }] }, { name: 'About', itemList: [ { name: 'The basics', desc: 'Our journey & how to reach us', url: '#', itemList: [ { name: 'Mission', url: '/about-developer-marketing-alliance/' }, { name: 'Partner with us', url: '/partner-with-us/' }, { name: 'Contact', url: '/contact/' } ] }, { name: 'Our people', desc: 'The crew behind our community', url: '#', itemList: [ { name: 'Meet the Developer Marketing Alliance team', url: '/meet-the-team/' }, { name: 'Create & contribute', url: '/create-contribute/' } ] }] }, { name: "What's new?", url: '#', class: 'nav-whats-new' } ]; </script> <script> if (window.location.pathname === '/articles/') { document.title = 'Developer marketing articles | Developer Marketing Alliance'; } </script> <script>(function(w,r){w._rwq=r;w[r]=w[r]||function(){(w[r].q=w[r].q||[]).push(arguments)}})(window,'rewardful');</script> <script async src='https://r.wdfl.co/rw.js' data-rewardful='737c05'></script> <script> window.isTOCenabled = true; </script> <META NAME="ROBOTS" CONTENT="NOINDEX"> </head> <body class="home-template post-template tag-business-to-developer"> <div class="site-wrapper"> <style> .secondary-nav { height : 40px; background-color: #15171A; z-index: 9; } .secondary-nav .secondary-nav-wrapper { z-index: 1; max-width: 1920px; padding: 8px 32px; display: flex; justify-content: space-between; margin: auto; } .secondary-nav .separator { border:1px solid #AEAEAE; height: 16px; } .secondary-nav img { height: 24px; margin-top: -10px; } .secondary-nav .nav-container-left { display: flex; gap: 20px; align-items: center; } .secondary-nav .nav-container-right { display: flex; gap: 20px; align-items: center; } .secondary-nav .nav-link { font-family: Poppins, sans-serif; font-size: 12.5px; font-weight: 400; line-height: 24px; color: #AEAEAE; } .secondary-nav .nav-link:hover { color: #F9F8F5; text-decoration: none; } .modular-navigation .secondary-nav { display: none; } @media (max-width: 1200px) { .secondary-nav { display: none; height: unset; } .secondary-nav img { height: 32px; } .modular-navigation { padding-bottom: 0; } .modular-navigation .secondary-nav { display: flex !important; flex-direction: column; gap: 24px; padding: 40px 32px; margin-left: -20px; width: 100vw; margin-top: 40px; } .secondary-nav .separator { border: unset; border-bottom: 1px solid #AEAEAE; height: 1px; width: 100%; } .secondary-nav .nav-container-left { display: flex !important; flex-direction: column; gap: 24px; align-items: flex-start; } .secondary-nav .nav-container-right { display: flex !important; flex-direction: column; gap: 24px; align-items: flex-start; } .secondary-nav .nav-container-right .separator { order: -1; } } </style> <div class="secondary-nav"> <div class="secondary-nav-wrapper"> <div class="nav-container-left"> <a target="_blank" href="https://www.thealliance.io/"><img src="https://pma-assets-external.ams3.cdn.digitaloceanspaces.com/TheAlliance_Assets/alliance-logo-sm.svg"/></a> <div class="separator"></div> <a target="_blank" href="https://www.thealliance.io/marketing-alliance" class="nav-link">Marketing Alliance</a> <a target="_blank" href="https://www.thealliance.io/customer-alliance" class="nav-link">Customer Alliance</a> <a target="_blank" href="https://www.thealliance.io/product-alliance" class="nav-link">Product Alliance</a> <a target="_blank" href="https://www.thealliance.io/revenue-alliance" class="nav-link">Revenue Alliance</a> <a target="_blank" href="https://www.thealliance.io/finance-alliance" class="nav-link">Finance Alliance</a> <a target="_blank" href="https://www.thealliance.io/technology-alliance" class="nav-link">Technology Alliance</a> </div> <div class="nav-container-right"> <a href="/partner-with-us" class="nav-link">Partner</a> <div class="separator"></div> <a target="_blank" href="https://www.thealliance.io/" class="nav-link">About</a> </div> </div> </div><div class="inner nav-wrapper"> <div class="site-header-content"> <a href="/"> <div class="site-title"> <img class="site-logo" src="/content/images/size/w600/2024/07/DMA-FULL-LOGO-SECONDARY--ON-WHITE-.png" alt="Developer Marketing Alliance" /> </div> </a> </div> <nav class="site-nav"> <div class="site-nav-left"> <div class="nav-login"> <a class="button primary small" href="/signin/">Log in</a> <a class="button primary small button-green" href="/signup/">Membership</a> </div> <div class="nav-icons" data-ghost-search> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg> </div> <!-- <div class="nav-icons nav-mobile"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/> </svg> </div> --> <div class="modular-navigation"></div> <div class="nav-icons nav-mobile-modular"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/> </svg> </div> <!-- <ul class="nav"> <li class="nav-home"><a href="https://www.developermarketing.io/">Home</a></li> </ul> --> </div> </nav> <script> if (window.topNav) { document.addEventListener('mouseover', (evt) => { let targetElement = evt.target; do { if ( (targetElement instanceof Element && targetElement.closest('.site-nav-left')) || (targetElement instanceof Element && targetElement.closest('.modular-navigation')) || (targetElement instanceof Element && targetElement.classList.contains('modular-navigation-main')) || (targetElement instanceof Element && targetElement.classList.contains('modular-navigation')) ) { return; } targetElement = targetElement.parentNode; } while (targetElement); const thisElementChildrenWrapper = document.querySelectorAll('.modular-navigation-item-wrapper'); const selectAllThisElementChildrenWrapperSub = document.querySelectorAll('.modular-navigation-item-sub-wrapper-active'); if (!document.querySelector('.modular-navigation-item-wrapper-active')) return; for (let i = 0; i < thisElementChildrenWrapper.length; i++) { thisElementChildrenWrapper[i].classList.remove('modular-navigation-item-wrapper-active'); setTimeout(() => { thisElementChildrenWrapper[i].style.display = 'none'; for (let c = 0; c < selectAllThisElementChildrenWrapperSub.length; c++) { selectAllThisElementChildrenWrapperSub[c].classList.remove('modular-navigation-item-sub-wrapper-active'); selectAllThisElementChildrenWrapperSub[c].style.display = 'none'; } }, 10); } const thisElementChildrenWrapperThird = document.querySelectorAll('.modular-navigation-item-sub-third-wrapper'); const selectAllThisElementChildrenWrapperSubThird = document.querySelectorAll('.modular-navigation-item-sub-third-wrapper-active'); for (let i = 0; i < thisElementChildrenWrapperThird.length; i++) { thisElementChildrenWrapperThird[i].classList.remove('modular-navigation-item-sub-third-wrapper-active'); setTimeout(() => { thisElementChildrenWrapperThird[i].style.display = 'none'; for (let c = 0; c < selectAllThisElementChildrenWrapperSubThird.length; c++) { selectAllThisElementChildrenWrapperSubThird[c].classList.remove('modular-navigation-item-sub-third-wrapper-active'); selectAllThisElementChildrenWrapperSubThird[c].style.display = 'none'; } }, 10); } }); const getModularNavigation = document.querySelector('.modular-navigation'); function modularNavHandleOnClik(event) { const thisElement = event.target; const thisElementParent = thisElement.parentNode; const thisElementChildrenWrapper = thisElementParent.querySelector('.modular-navigation-item-wrapper'); const selectAllThisElementChildrenWrapperSub = document.querySelectorAll('.modular-navigation-item-sub-wrapper-active'); if (thisElementChildrenWrapper.classList.contains('modular-navigation-item-wrapper-active')) { thisElementChildrenWrapper.classList.remove('modular-navigation-item-wrapper-active'); setTimeout(() => { thisElementChildrenWrapper.style.display = 'none'; for (let c = 0; c < selectAllThisElementChildrenWrapperSub.length; c++) { selectAllThisElementChildrenWrapperSub[c].classList.remove('modular-navigation-item-sub-wrapper-active'); selectAllThisElementChildrenWrapperSub[c].style.display = 'none'; } }, 310); return; } const selectAllThisElementChildrenWrapper = document.querySelectorAll('.modular-navigation-item-wrapper'); for (let i = 0; i < selectAllThisElementChildrenWrapper.length; i++) { if (selectAllThisElementChildrenWrapper[i].classList.contains('modular-navigation-item-wrapper-active')) { selectAllThisElementChildrenWrapper[i].classList.remove('modular-navigation-item-wrapper-active'); setTimeout(() => { selectAllThisElementChildrenWrapper[i].style.display = 'none'; for (let c = 0; c < selectAllThisElementChildrenWrapperSub.length; c++) { selectAllThisElementChildrenWrapperSub[c].classList.remove('modular-navigation-item-sub-wrapper-active'); selectAllThisElementChildrenWrapperSub[c].style.display = 'none'; } }, 310); } } setTimeout(() => { thisElementChildrenWrapper.style.display = 'flex'; setTimeout(() => { thisElementChildrenWrapper.classList.add('modular-navigation-item-wrapper-active'); }, 1); }, 10); } function modularNavHandleOnClikSub(event) { const thisElement = event.target; const thisElementParent = thisElement.classList.contains('modular-navigation-item') ? thisElement : thisElement.parentNode; const thisElementChildrenWrapper = thisElementParent.querySelector('.modular-navigation-item-sub-wrapper'); if (thisElementChildrenWrapper) { if (thisElementChildrenWrapper.classList.contains('modular-navigation-item-sub-wrapper-active')) { thisElementChildrenWrapper.classList.remove('modular-navigation-item-sub-wrapper-active'); setTimeout(() => { thisElementChildrenWrapper.style.display = 'none'; }, 310); return; } const selectAllThisElementChildrenWrapper = document.querySelectorAll('.modular-navigation-item-sub-wrapper'); for (let i = 0; i < selectAllThisElementChildrenWrapper.length; i++) { if (selectAllThisElementChildrenWrapper[i].classList.contains('modular-navigation-item-sub-wrapper-active')) { selectAllThisElementChildrenWrapper[i].classList.remove('modular-navigation-item-sub-wrapper-active'); setTimeout(() => { selectAllThisElementChildrenWrapper[i].style.display = 'none'; }, 310); } } setTimeout(() => { thisElementChildrenWrapper.style.display = 'flex'; setTimeout(() => { thisElementChildrenWrapper.classList.add('modular-navigation-item-sub-wrapper-active'); }, 1); }, 10); } // Close any open third-level menus const selectAllThisElementChildrenWrapper = document.querySelectorAll('.modular-navigation-item-sub-third-wrapper'); for (let i = 0; i < selectAllThisElementChildrenWrapper.length; i++) { if (selectAllThisElementChildrenWrapper[i].classList.contains('modular-navigation-item-sub-third-wrapper-active')) { selectAllThisElementChildrenWrapper[i].classList.remove('modular-navigation-item-sub-third-wrapper-active'); setTimeout(() => { selectAllThisElementChildrenWrapper[i].style.display = 'none'; }, 310); } } } function modularNavHandleOnClikSubThird(event) { const thisElement = event.target; const thisElementParent = thisElement.classList.contains('modular-navigation-item') ? thisElement : thisElement.parentNode; const thisElementChildrenWrapper = thisElementParent.querySelector('.modular-navigation-item-sub-third-wrapper'); if (thisElementChildrenWrapper) { if (thisElementChildrenWrapper.classList.contains('modular-navigation-item-sub-third-wrapper-active')) { thisElementChildrenWrapper.classList.remove('modular-navigation-item-sub-third-wrapper-active'); setTimeout(() => { thisElementChildrenWrapper.style.display = 'none'; }, 310); return; } const selectAllThisElementChildrenWrapper = document.querySelectorAll('.modular-navigation-item-sub-third-wrapper'); for (let i = 0; i < selectAllThisElementChildrenWrapper.length; i++) { if (selectAllThisElementChildrenWrapper[i].classList.contains('modular-navigation-item-sub-third-wrapper-active')) { selectAllThisElementChildrenWrapper[i].classList.remove('modular-navigation-item-sub-third-wrapper-active'); setTimeout(() => { selectAllThisElementChildrenWrapper[i].style.display = 'none'; }, 310); } } setTimeout(() => { thisElementChildrenWrapper.style.display = 'flex'; setTimeout(() => { thisElementChildrenWrapper.classList.add('modular-navigation-item-sub-third-wrapper-active'); }, 1); }, 10); } } // Build out the topNav elements for (let i = 0; i < topNav.length; i++) { const thisModNav = topNav[i]; const thisModNavWrapper = document.createElement('div'); thisModNavWrapper.classList.add('modular-navigation-wrapper'); // If this top-level nav item has children if (thisModNav.itemList) { const thisModNavMain = document.createElement('div'); thisModNavMain.classList.add('modular-navigation-main'); thisModNavMain.classList.add('modular-navigation-main-width-list'); if (thisModNav.class) thisModNavMain.classList.add(thisModNav.class); thisModNavMain.textContent = thisModNav.name ? thisModNav.name : ''; thisModNavWrapper.appendChild(thisModNavMain); // Show dropdown on mouseenter thisModNavMain.addEventListener('mouseenter', modularNavHandleOnClik); const thisModItemWrapper = document.createElement('div'); thisModItemWrapper.classList.add('modular-navigation-item-wrapper'); for (let b = 0; b < thisModNav.itemList.length; b++) { const thisModItem = thisModNav.itemList[b]; // If nav child has no url and no children, skip if (!thisModItem.url && !thisModItem.itemList) continue; // Create wrapper: either <div> (if it has children) or <a> (if it’s a link) const thisModNavItem = thisModItem.itemList ? document.createElement('div') : document.createElement('a'); thisModNavItem.classList.add('modular-navigation-item'); thisModNavItem.classList.add('modular-navigation-item-list-wrapper'); if (thisModItem.class) thisModNavItem.classList.add(thisModItem.class); if (thisModItem.url) thisModNavItem.setAttribute('href', thisModItem.url); if (thisModItem.target) thisModNavItem.setAttribute('target', thisModItem.target); // REPLACED h5 -> span.nav-title const thisModNavHtext = document.createElement('span'); thisModNavHtext.classList.add('nav-title'); thisModNavHtext.textContent = thisModItem.name ? thisModItem.name : ''; thisModNavItem.appendChild(thisModNavHtext); // Optional subtext/description if (thisModItem.desc) { const thisModNavPtext = document.createElement('p'); thisModNavPtext.textContent = thisModItem.desc; thisModNavItem.appendChild(thisModNavPtext); } // If this item has a sub-menu if (thisModItem.itemList) { const thisModNavItemSubWrapper = document.createElement('div'); thisModNavItemSubWrapper.classList.add('modular-navigation-item-sub-wrapper'); for (let d = 0; d < thisModItem.itemList.length; d++) { const thisModItemSub = thisModItem.itemList[d]; // Again, either <div> if more children or <a> if link const thisModNavItemSubEl = thisModItemSub.itemList ? document.createElement('div') : document.createElement('a'); thisModNavItemSubEl.classList.add('modular-navigation-item-third'); thisModNavItemSubEl.classList.add('modular-navigation-item'); if (thisModItemSub.class) thisModNavItemSubEl.classList.add(thisModItemSub.class); if (thisModItemSub.url) thisModNavItemSubEl.setAttribute('href', thisModItemSub.url); if (thisModItemSub.target) thisModNavItemSubEl.setAttribute('target', thisModItemSub.target); // REPLACED h6 -> span.nav-item const thisModNavHtextSub = document.createElement('span'); thisModNavHtextSub.classList.add('nav-item'); thisModNavHtextSub.textContent = thisModItemSub.name ? thisModItemSub.name : ''; thisModNavItemSubEl.appendChild(thisModNavHtextSub); // Optional sub-description if (thisModItemSub.desc) { const thisModNavPtextSub = document.createElement('p'); thisModNavPtextSub.textContent = thisModItemSub.desc; thisModNavItemSubEl.appendChild(thisModNavPtextSub); } thisModNavItemSubWrapper.appendChild(thisModNavItemSubEl); } thisModNavItem.appendChild(thisModNavItemSubWrapper); } thisModItemWrapper.appendChild(thisModNavItem); } thisModNavWrapper.appendChild(thisModItemWrapper); } else { // Simple top-level link const thisModNavMain = document.createElement('a'); thisModNavMain.classList.add('modular-navigation-main'); if (thisModNav.class) thisModNavMain.classList.add(thisModNav.class); thisModNavMain.setAttribute('href', thisModNav.url); if (thisModNav.target) thisModNavMain.setAttribute('target', thisModNav.target); thisModNavMain.textContent = thisModNav.name ? thisModNav.name : ''; thisModNavWrapper.appendChild(thisModNavMain); } getModularNavigation.appendChild(thisModNavWrapper); } // Mobile nav button + close button const getModularNavMobile = document.querySelector('.nav-mobile-modular'); const thisModNavClose = document.createElement('div'); thisModNavClose.classList.add('modular-navigation-close'); thisModNavClose.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg>'; getModularNavigation.appendChild(thisModNavClose); thisModNavClose.addEventListener('click', function() { getModularNavigation.classList.remove('modular-navigation-visible'); }); getModularNavMobile.addEventListener('click', function() { getModularNavigation.classList.add('modular-navigation-visible'); }); // Clone secondary-nav if it exists const originalElement = document.querySelector('.secondary-nav'); if (originalElement) { const clonedElement = originalElement.cloneNode(true); getModularNavigation.appendChild(clonedElement); } } // Force certain nav items to open in new tabs if (document.querySelector('.nav-jobs a')) { document.querySelector('.nav-jobs a').setAttribute('target', '_blank'); } if (document.querySelector('.nav-pmm-q-a a')) { document.querySelector('.nav-pmm-q-a a').setAttribute('target', '_blank'); } </script> </div> <div class="search-results"> <div class="search-results-close"> x close </div> <div id="search-field-wrapper"> <form> <input id="search-field" class="st-default-search-input" placeholder="Start typing..."/> </form> </div> <div id="results" class="st-search-container">Nothing to display...</div> <div class="search-tags"> <div class="search-tags-view">or view by:</div> <a href="/tag/developer-marketing">Developer Marketing</a> <a href="/tag/developer-communities">Developer Communities</a> <a href="/tag/developer-relations">Developer Relations</a> <a href="/tag/product-adoption-and-customer-success">Product adoption</a> </div> </div> <div class="social-links social-links-fixed"> <a href="https://www.linkedin.com/company/developer-marketing-alliance/" target="_blank" rel="noopener"><?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve"> <g> <g> <path class="st0" d="M18.5,0h-17C0.7,0,0,0.6,0,1.4v17.1C0,19.4,0.7,20,1.5,20h17c0.8,0,1.5-0.6,1.5-1.4V1.4C20,0.6,19.3,0,18.5,0 z M5.9,17H3V7.5h3V17z M4.4,6.2c-1,0-1.7-0.8-1.7-1.7c0-0.9,0.8-1.7,1.7-1.7c0.9,0,1.7,0.8,1.7,1.7C6.2,5.4,5.4,6.2,4.4,6.2z M17,17h-3v-4.6c0-1.1,0-2.5-1.5-2.5c-1.5,0-1.8,1.2-1.8,2.5V17h-3V7.5h2.8v1.3h0c0.4-0.8,1.4-1.5,2.8-1.5c3,0,3.6,2,3.6,4.5V17z" /> </g> </g> </svg> </a> <a href="https://twitter.com/DevMarAlliance" target="_blank" rel="noopener"><?xml version="1.0" encoding="iso-8859-1"?> <svg viewBox="0 0 24 24" aria-hidden="true" class="r-18jsvk2 r-4qtqp9 r-yyyyoo r-16y2uox r-8kz0gk r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-lrsllp"> <g> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"> </path> </g> </svg></a> <a href="https://www.facebook.com/Developer-Marketing-Community-104156045444631/" target="_blank" rel="noopener"><?xml version="1.0" encoding="iso-8859-1"?> <!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 10.385 20" style="enable-background:new 0 0 10.385 20;" xml:space="preserve"> <g> <path id="f_1_" d="M6.742,20v-9.122h3.061l0.459-3.556h-3.52v-2.27c0-1.029,0.285-1.731,1.762-1.731 l1.882-0.001V0.139C10.06,0.097,8.943,0,7.643,0C4.928,0,3.07,1.657,3.07,4.699v2.622H0v3.556h3.07V20H6.742z"/> </g> </svg> </a> <a href="https://www.instagram.com/developermarketingalliance/" target="_blank" rel="noopener"><?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="Logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <g> <path d="M256,49.47c67.27,0,75.23,0.26,101.8,1.47c24.56,1.12,37.9,5.22,46.78,8.67c11.76,4.57,20.15,10.03,28.97,18.84 c8.82,8.82,14.28,17.21,18.84,28.97c3.45,8.88,7.55,22.22,8.67,46.78c1.21,26.56,1.47,34.53,1.47,101.8s-0.26,75.23-1.47,101.8 c-1.12,24.56-5.22,37.9-8.67,46.78c-4.57,11.76-10.03,20.15-18.84,28.97c-8.82,8.82-17.21,14.28-28.97,18.84 c-8.88,3.45-22.22,7.55-46.78,8.67c-26.56,1.21-34.53,1.47-101.8,1.47s-75.24-0.26-101.8-1.47c-24.56-1.12-37.9-5.22-46.78-8.67 c-11.76-4.57-20.15-10.03-28.97-18.84c-8.82-8.82-14.28-17.21-18.84-28.97c-3.45-8.88-7.55-22.22-8.67-46.78 c-1.21-26.56-1.47-34.53-1.47-101.8s0.26-75.23,1.47-101.8c1.12-24.56,5.22-37.9,8.67-46.78c4.57-11.76,10.03-20.15,18.84-28.97 c8.82-8.82,17.21-14.28,28.97-18.84c8.88-3.45,22.22-7.55,46.78-8.67C180.77,49.73,188.73,49.47,256,49.47 M256,4.08 c-68.42,0-77,0.29-103.87,1.52c-26.81,1.22-45.13,5.48-61.15,11.71c-16.57,6.44-30.62,15.05-44.62,29.06 C32.36,60.37,23.74,74.42,17.3,90.98c-6.23,16.02-10.49,34.34-11.71,61.15C4.37,179,4.08,187.58,4.08,256 c0,68.42,0.29,77,1.52,103.87c1.22,26.81,5.48,45.13,11.71,61.15c6.44,16.57,15.05,30.62,29.06,44.62 c14.01,14.01,28.05,22.62,44.62,29.06c16.02,6.23,34.34,10.49,61.15,11.71c26.87,1.23,35.45,1.52,103.87,1.52s77-0.29,103.87-1.52 c26.81-1.22,45.13-5.48,61.15-11.71c16.57-6.44,30.62-15.05,44.62-29.06c14.01-14.01,22.62-28.05,29.06-44.62 c6.23-16.02,10.49-34.34,11.71-61.15c1.23-26.87,1.52-35.45,1.52-103.87s-0.29-77-1.52-103.87c-1.22-26.81-5.48-45.13-11.71-61.15 c-6.44-16.57-15.05-30.62-29.06-44.62c-14.01-14.01-28.05-22.62-44.62-29.06c-16.02-6.23-34.34-10.49-61.15-11.71 C333,4.37,324.42,4.08,256,4.08L256,4.08z"/> <path d="M256,126.64c-71.45,0-129.36,57.92-129.36,129.36S184.55,385.36,256,385.36S385.36,327.45,385.36,256 S327.45,126.64,256,126.64z M256,339.97c-46.38,0-83.97-37.6-83.97-83.97s37.6-83.97,83.97-83.97c46.38,0,83.97,37.6,83.97,83.97 S302.38,339.97,256,339.97z"/> <circle cx="390.48" cy="121.52" r="30.23"/> </g> </svg> </a> <a href="https://dev-mar-com.slack.com/join/shared_invite/zt-10ogsse5h-HzlGgf8ln_ButCSJzwJRcw#/shared-invite/email" target="_blank" rel="noopener"><?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.8 122.8" style="enable-background:new 0 0 122.8 122.8;" xml:space="preserve"> <g> <g> <path class="st0" d="M25.8,77.6c0,7.1-5.8,12.9-12.9,12.9S0,84.7,0,77.6c0-7.1,5.8-12.9,12.9-12.9h12.9V77.6z"/> <path class="st0" d="M32.3,77.6c0-7.1,5.8-12.9,12.9-12.9s12.9,5.8,12.9,12.9v32.3c0,7.1-5.8,12.9-12.9,12.9s-12.9-5.8-12.9-12.9 C32.3,109.9,32.3,77.6,32.3,77.6z"/> </g> <g> <path class="st0" d="M45.2,25.8c-7.1,0-12.9-5.8-12.9-12.9S38.1,0,45.2,0s12.9,5.8,12.9,12.9v12.9H45.2z"/> <path class="st0" d="M45.2,32.3c7.1,0,12.9,5.8,12.9,12.9s-5.8,12.9-12.9,12.9H12.9C5.8,58.1,0,52.3,0,45.2s5.8-12.9,12.9-12.9 C12.9,32.3,45.2,32.3,45.2,32.3z"/> </g> <g> <path class="st0" d="M97,45.2c0-7.1,5.8-12.9,12.9-12.9c7.1,0,12.9,5.8,12.9,12.9s-5.8,12.9-12.9,12.9H97V45.2z"/> <path class="st0" d="M90.5,45.2c0,7.1-5.8,12.9-12.9,12.9c-7.1,0-12.9-5.8-12.9-12.9V12.9C64.7,5.8,70.5,0,77.6,0 c7.1,0,12.9,5.8,12.9,12.9V45.2z"/> </g> <g> <path class="st0" d="M77.6,97c7.1,0,12.9,5.8,12.9,12.9c0,7.1-5.8,12.9-12.9,12.9c-7.1,0-12.9-5.8-12.9-12.9V97H77.6z"/> <path class="st0" d="M77.6,90.5c-7.1,0-12.9-5.8-12.9-12.9c0-7.1,5.8-12.9,12.9-12.9h32.3c7.1,0,12.9,5.8,12.9,12.9 c0,7.1-5.8,12.9-12.9,12.9H77.6z"/> </g> </g> </svg> </a> <a href="https://www.youtube.com/@developermarketingalliance/videos" target="_blank" rel="noopener"> <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 176 124"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="M180.32,53.36A22.12,22.12,0,0,0,164.76,37.7C151,34,96,34,96,34s-55,0-68.76,3.7A22.12,22.12,0,0,0,11.68,53.36C8,67.18,8,96,8,96s0,28.82,3.68,42.64A22.12,22.12,0,0,0,27.24,154.3C41,158,96,158,96,158s55,0,68.76-3.7a22.12,22.12,0,0,0,15.56-15.66C184,124.82,184,96,184,96S184,67.18,180.32,53.36ZM78,122.17V69.83L124,96Z" transform="translate(-8 -34)"/></svg> </a> <a href="https://www.tiktok.com/@dm_alliance" target="_blank" rel="noopener"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tiktok" viewBox="0 0 16 16"> <path d="M9 0h1.98c.144.715.54 1.617 1.235 2.512C12.895 3.389 13.797 4 15 4v2c-1.753 0-3.07-.814-4-1.829V11a5 5 0 1 1-5-5v2a3 3 0 1 0 3 3z"/> </svg></a> </div> <main id="site-main" class="site-main outer site-main-post has-post-image"> <div class="feature-post-wrapper"> <article class="post-full post tag-business-to-developer "> <section class="post-full-content Business to Developer"> <header class="post-full-header"> <div class="post-full-header-wrapper"> <section class="post-full-meta"> <time class="post-full-meta-date" datetime=" 2024-05-31">31 May 2024</time> <span class="reading-time">9 min read</span> </section> <h1 class="post-full-title">How to create awesome product tours your customers will love</h1> <section class="post-full-meta"> <a href="/tag/business-to-developer/">Business to Developer</a> </section> <div class="post-author-with-linkedin-wrapper"> <div class="post-author-wrapper"> <section class="post-full-authors"> <section class="author-card"> <a href="/author/grace/"> <img class="author-profile-image" src="/content/images/size/w300/2023/01/grace-gupta.jpeg" alt="Grace Gupta" /> <section class="author-card-content"> <h4 class="author-card-name">Grace Gupta</h4> <div class="post-full-footer-right"> <div class="author-card-button">Read More</div> </div> </section> </a> </section> </section> </div> </div> </div> <div class="post-full-image" style="background-image: url(/content/images/2024/05/jametlene-reskp-3Dtu6_XfqIk-unsplash.jpeg);"> </div> </header> <div class="post-content"> <aside class="toc-container"> </aside> <p>Look, we've all been there: you’ve signed up for new software or a new tool, and the moment you log in, you're hit with a wall of features, buttons, and options that leave you feeling overwhelmed and confused. </p><p>No one wants their customers to feel alienated and lost. Luckily, there’s a simple solution that can make your users feel right at home from the get-go, and they’re called<strong>&nbsp;product tours</strong>. </p><p>Shall we get on with it? Let's go...</p><h2 id="what-is-a-product-tour">What is a product tour?</h2><p>Product tours are intuitive, step-by-step walkthroughs that guide users through your product's features and functionalities within the application itself. What do they do exactly? What do they consist of? Product tours offer:</p><ul><li>Contextual prompts</li><li>Visual cues</li><li>Interactive elements</li></ul><p>They create an immersive and personalized experience that enhances user understanding and accelerates&nbsp;time-to-value.</p><p>In order to provide a&nbsp;good <a href="https://www.developermarketing.io/what-is-developer-experience-devex/">customer experience</a>, it's helpful to give them an overview of what they can expect to find and where to locate it. You may want to offer the option to "skip this" or "return to this later." If your product is complex, it's a good idea to stretch this tour out over time.</p><p>But of course, all of this depends on the user, they’ll have different levels of tolerance for information. Play the caution card and keep an eye on how digestible your product tours are – you don't want to overwhelm your new user.</p><p>Slack does a really good job of providing product tours during their&nbsp;<a href="https://www.developermarketing.io/how-to-create-a-great-developer-onboarding-process/">customer onboarding</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://lh7-us.googleusercontent.com/n0LYOScdE3k2Rc6F1oeBx_ZiseHC50hhfS1XLitoSKOpowuk2gdt9zpsve7-XG_BoLiaCGqL1NkLrjZVqFVYCLX4IENGJ9AFgsIcCwSTFH2LrCv3J32ibAxmIp4VEJTgYx3RktwfE2ZjtpaX0UGxgG8" class="kg-image" alt="" loading="lazy" width="1298" height="834"><figcaption><span style="white-space: pre-wrap;">Source: </span><a href="https://saaswebsites.com/userflow-articles/user-onboarding-user-flows-inspiration-and-examples-from-slack/?ref=customersuccesscollective.com"><u><span class="underline" style="white-space: pre-wrap;">SaaS Websites</span></u></a></figcaption></figure><p>As soon as you enter your email address into Slack, you get a glimpse into what your experience will look like.&nbsp;</p><p>Once you enter, Slackbot takes over and introduces you to what can be achieved in your channel or workspace. There are also numerous&nbsp;pop-ups&nbsp;giving tips and directions to reinforce the information given. Any white space is also cleverly used to illustrate what will eventually be there when a user starts to engage with Slack regularly.</p><h3 id="the-difference-between-product-tours-and-product-demos">The difference between product tours and product demos</h3><p>If you’re new to&nbsp;<a href="https://www.developermarketing.io/what-is-saas-marketing/">SaaS</a>&nbsp;or the wider tech industry, you’d be forgiven for mixing up the terminology surrounding different product experiences. Let’s clear up some of that confusion.</p><p>Product tours are&nbsp;<strong>interactive</strong>, allowing users to explore the product hands-on while being gently directed toward key features and functionalities. It's a guided, yet self-paced journey designed to help users quickly become acquainted with the product and feel empowered to navigate it confidently.</p><p>On the other hand, product demos are&nbsp;<em>non</em>-interactive experiences, often taking the form of videos or narrated guides, where the product's capabilities are showcased and explained, but without any hands-on exploration from the viewer.</p><div class="kg-card kg-callout-card kg-callout-card-purple"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">TL;DR: </strong></b>Product tours are all about learning by doing, while product demos are about learning by watching. Both serve valuable purposes, but they cater to different stages of the customer journey and learning styles.</div></div><p>So, consider your users' needs the next time you're wondering whether to offer a product tour or a product demo. Are they better served by an immersive, self-guided experience that builds confidence and familiarity? Or would they prefer to sit back and observe the product in action before diving in themselves?</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.developermarketing.io/9-product-adoption-and-onboarding-tools-for-amazing-product-experiences/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">9 product adoption and onboarding tools for amazing product experiences</div><div class="kg-bookmark-description">The success of a product isn’t just about creating a brilliant solution—it’s about ensuring that users embrace it with open arms. Yet, product adoption and onboarding often pose challenges for product teams.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.developermarketing.io/content/images/size/w256h256/2021/07/DMC-33_logomark_square-02-1.png" alt=""><span class="kg-bookmark-author">Developer Marketing Alliance</span><span class="kg-bookmark-publisher">Hasanpasha Abdulov</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.developermarketing.io/content/images/size/w1200/2023/10/drew-beamer-3SIXZisims4-unsplash--1-.jpeg" alt="" onerror="this.style.display = 'none'"></div></a></figure><h2 id="product-tours-customer-onboarding-success">Product tours + customer onboarding = success</h2><p>Have a subpar product tour? That means you’ve got yourself a subpar onboarding process and, likely, a subpar customer experience.</p><p>The onboarding process sets the tone for a&nbsp;<a href="https://learn.developermarketing.io/course/developer-journeys-certified-masters">customer's entire journey</a>&nbsp;with your product. It's the critical first impression that can either pave the way for long-term success or lead to frustration, confusion, and ultimately, churn.&nbsp;</p><p>Effective onboarding is about more than just getting users to sign up – it's about guiding them through your product's features and functionalities, helping them understand its value proposition, and ensuring they experience those "aha!" moments that foster lasting engagement and loyalty.</p><p>However, traditional onboarding methods, such as lengthy product documentation or generic tutorials, often fall short. The reason? This overly formal method of education fails to provide the personalized, contextual guidance that modern customers demand, resulting in a disjointed and underwhelming experience.&nbsp;</p><p>This is where interactive product tours shine, offering a&nbsp;seamless and engaging approach to customer onboarding.</p><h2 id="product-tours-throughout-the-customer-journey">Product tours throughout the customer journey</h2><p>When you think of product tours, you probably associate them with the introductory walkthroughs that greet you upon launching a new app or software. They guide you through the interface, pointing out key features and functionalities.&nbsp;</p><p>But despite being key features of an onboarding process, product tours have the potential to be so much more than just a one-time onboarding experience.</p><p>Here are some of the ways to unlock the full potential of your product's capabilities.</p><h3 id="new-feature-updates">New feature updates</h3><p>Introducing groundbreaking product updates? We all know how easy it is for cool new stuff to fly under the radar, but that’s not going to happen on your watch. Let product tours do the work for you and showcase the value proposition of your latest innovations. No more confusion or missed updates here.</p><h3 id="promoting-underused-features">Promoting underused features</h3><p>Providing <a href="https://www.developermarketing.io/customer-lifetime-value-how-to-calculate-and-increase-it/">value</a>&nbsp;is at the heart of customer success efforts, agreed? The thing is, your customers won’t fully realize the awesome features and capabilities of your product if they’re unaware of them.</p><p>If you notice your customers aren’t making the most of all of your product’s cool features, there’s a good chance it’s because they don’t know about them! By and large, their overall engagement, satisfaction, and experience would be improved if they knew about the awesome other things your product can do to alleviate their pain points.&nbsp;</p><p>Product tours are a brilliant way to draw attention to underused features and help users realize value – and fast.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.developermarketing.io/connecting-with-developers-and-engineering-buyers/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Connecting with developers and engineering buyers</div><div class="kg-bookmark-description">By immersing yourself in the world of developers and engineers, offering authentic value, and consistently nurturing brand memories, you position your business as a valuable partner in their path forward.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.developermarketing.io/content/images/size/w256h256/2021/07/DMC-33_logomark_square-02-1.png" alt=""><span class="kg-bookmark-author">Developer Marketing Alliance</span><span class="kg-bookmark-publisher">Fahmid Kabir</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.developermarketing.io/content/images/size/w1200/2023/11/jason-goodman-bzqU01v-G54-unsplash.jpeg" alt="" onerror="this.style.display = 'none'"></div></a></figure><h3 id="user-re-engagement">User re-engagement</h3><p>Noticed your once-loyal users have gone a little... crickets lately? Not to worry, these things happen. The trick is to nip any inactivity in the bud immediately. If a user is inactive, it’s likely due to not fully grasping all of the nifty tricks your product is capable of. A tactical product tour is the perfect way to reel them back in and remind them why they fell in love with your product in the first place.</p><p>Whether you get their attention with an email or an in-app message, highlight everything they've been missing out on – recently launched features, improvements, you name it. They'll think: "Oh I get it!&nbsp;<em>This</em>&nbsp;is why I bought X”&nbsp;</p><h3 id="support-and-education">Support and education</h3><p>Even your most experienced users can level up with the right guidance. Product tours are a brilliant way to&nbsp;educate them&nbsp;on advanced ways to optimize their workflow and get maximum value.</p><p>Share insider tips, power user tricks, or simply reinforce best practices – it's a bit like a free coaching session. They'll be absorbing pro-level skills left, right and center. Consider it an investment in their success (which is a win for you too!).</p><h3 id="milestones">Milestones</h3><p>Did somebody just hit a major milestone? Don't let that momentous occasion go unnoticed. A perfectly timed tour can celebrate their accomplishment&nbsp;<em>and</em>&nbsp;reveal what fresh opportunities have been unlocked.</p><p>Get users hyped about earning that new badge or hitting a new level with a tour showcasing the fresh new features and next-level capabilities now at their fingertips. In a way, you’re teasing them a little, showing them, “Look how far you've come... but the best is yet to come!"&nbsp;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.developermarketing.io/from-gunpoint-to-collaboration-rethinking-developer-marketing/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">From gunpoint to collaboration: Rethinking developer marketing</div><div class="kg-bookmark-description">The traditional approach to developer marketing has been focused on coercing developers and targeting budget owners. However, this approach often leads to mistrust and a lack of investment from the very people we’re trying to reach.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.developermarketing.io/content/images/size/w256h256/2021/07/DMC-33_logomark_square-02-1.png" alt=""><span class="kg-bookmark-author">Developer Marketing Alliance</span><span class="kg-bookmark-publisher">Sachin Jha</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.developermarketing.io/content/images/size/w1200/2023/04/shaking-hands-g0d1905d6d_1920.jpeg" alt="" onerror="this.style.display = 'none'"></div></a></figure><h2 id="interactivity-the-usp-of-product-tours">Interactivity: The USP of product tours</h2><p>Product tours have emerged as a powerful tool for enhancing user&nbsp;onboarding&nbsp;and&nbsp;<a href="https://www.developermarketing.io/13-product-adoption-metrics-you-should-be-tracking/">adoption</a>. By combining visual guidance with interactive elements, they provide an immersive and engaging learning experience that helps users quickly grasp the functionality and value of a product.</p><h3 id="the-power-of-contextual-learning">The power of contextual learning</h3><p>One of the key advantages of interactive product tours is their ability to deliver contextual learning experiences.</p><p>Rather than bombarding users with generic information or documentation, these tours offer guidance within the specific context of the feature or workflow being demonstrated. This contextual approach ensures users receive relevant and actionable insights precisely when and where they need them, minimizing cognitive load and increasing comprehension.</p><h3 id="visual-guidance-and-interactive-elements">Visual guidance and interactive elements</h3><p>Product tours leverage visuals like annotated screen captures and interactive hotspots to make complex features more accessible and intuitive. Step-by-step walkthroughs and simulated actions further reinforce the learning experience, allowing users to actively engage and solidify their understanding.</p><h3 id="personalized-experiences-for-diverse-user-roles">Personalized experiences for diverse user roles</h3><p>Modern software often caters to diverse user roles with varying needs and permissions. Interactive product tours can be tailored to provide personalized guidance based on these roles, ensuring each user receives a relevant and focused onboarding experience. This targeted approach enhances efficiency and fosters a deeper understanding of the product's value proposition for each user segment.</p><h2 id="measure-the-impact-of-your-product-tour">Measure the impact of your product tour</h2><p>To truly understand the effectiveness of your product tours and their impact on&nbsp;customer success, it's essential to establish clear&nbsp;<a href="https://www.developermarketing.io/the-ultimate-saas-metrics-cheat-sheet/">metrics</a>&nbsp;and measure their performance. Some key metrics to consider include:</p><ol><li><strong>Activation and engagement rates:&nbsp;</strong>Track how many users complete and engage with your product tours, as well as their subsequent actions and feature usage patterns.</li><li><strong>Time-to-value:&nbsp;</strong>Measure the time it takes for users to experience their first "aha!" moment or achieve a specific goal after completing a product tour. A shorter time-to-value typically indicates more effective onboarding and guidance.</li><li><strong>Feature adoption and usage:&nbsp;</strong>Monitor the adoption rates of specific features highlighted in your product tours, overall usage metrics, and user activity levels.</li><li><strong>Customer satisfaction and net promoter score (NPS):</strong>&nbsp;Gather&nbsp;feedback&nbsp;and&nbsp;NPS&nbsp;scores from users who have completed your product tours to gauge their satisfaction levels and likelihood of recommending your product.</li><li><strong>Support ticket reduction</strong>: Analyze the impact of product tours on support ticket volume and the types of questions or issues being raised, as effective tours should reduce the need for user support.</li></ol><p>By continuously measuring and analyzing these metrics, you can gain valuable insights into the effectiveness of your product tours and identify areas for optimization and improvement.</p><h2 id="wrapping-up">Wrapping up</h2><p>Okay! That concludes our exploration of product tours and all of their intricacies. Here’s a recap of why interactive product tours are a powerful tool for driving customer success and&nbsp;<a href="https://www.developermarketing.io/top-10-customer-retention-saas-software-choices-for-growth/">growth</a>:</p><ul><li>Provide seamless and engaging onboarding experiences</li><li>Foster ongoing feature adoption and product value maximization</li><li>Leverage contextual learning, visual guidance, and interactive elements</li><li>Create immersive and personalized user journeys</li><li>Enhance user understanding and accelerating time-to-value</li></ul><p>To unlock their full potential, focus on:</p><ul><li>Thorough user research and persona development</li><li>Adhering to best practices in product tour design</li><li>Continuously measuring and optimizing based on metrics like activation rates, feature adoption, and customer satisfaction</li></ul><p>With well-executed product tours, you can differentiate your offering, build lasting customer relationships, and pave the way for sustainable growth and success.</p><hr><p>In our <a href="https://www.developermarketing.io/guide-to-developer-community-engagement/">Guide to Developer and Community Engagement</a>, you'll find expert advice, how-tos, and inspiration to navigate the ever-evolving landscape of developer and community engagement.</p><p>Get your free copy.</p> <!--kg-card-begin: html--> <a href="https://www.developermarketing.io/guide-to-developer-community-engagement/"> <img src="https://www.developermarketing.io/content/images/size/w1000/2024/05/DMA_Dev_Community_Engagement_Report_Banner_.png"> </a> <!--kg-card-end: html--> </div> <aside class="post-upgrade-cta hidden-upgrade"> <div class="post-upgrade-cta-content"> <img src="/content/images/2024/07/android-chrome-192x192--2-.png" alt="Developer Marketing Alliance icon" class="site-logo" /> <h2>Like what you see? Then check out tonnes more.</h2> <p class="post-upgrade-cta-desc"> From exclusive content by industry experts and an ever-increasing bank of templates, to 100s of hours’ worth of presentations and mentors, our membership plans are packed with awesome developer marketing resources. </p> <div class="post-upgrade-buttons-wrapper"> <a class="button large primary" href="/signup/">Subscribe now</a> </div> </div> </aside> <aside class="post-upgrade-cta get-cert-cta" style="display:none;"> <div class="post-upgrade-cta-content"> <img src="/content/images/2024/07/android-chrome-192x192--2-.png" alt="Developer Marketing Alliance icon" class="site-logo" /> <h2>Get product marketing certified.</h2> <p class="post-upgrade-cta-desc"> PMMC™ unleashes product marketers’ potential. Lauded by leading lights like Facebook and HubSpot, it offers expert insights, priceless tuition, and awesome resources. No topic missed. No page unturned. </p> <div class="post-upgrade-buttons-wrapper"> <a class="button large primary" href="https://certified.productmarketingalliance.com/p/product-marketing-certified-core" target="_blank">Get certified</a> </div> </div> </aside> <section class="post-full-authors post-full-authors-with-bio"> <section class="author-card"> <div class="post-full-authors-content"> <p>Written by: </p> </div> <a href="/author/grace/"> <img class="author-profile-image" src="/content/images/size/w300/2023/01/grace-gupta.jpeg" alt="Grace Gupta" /> <section class="author-card-content"> <h4 class="author-card-name">Grace Gupta</h4> <p>Grace Gupta is the copywriter at our sister community, Customer Success Collective.</p> <div class="post-full-footer-right"> <div class="author-card-button">Read More</div> </div> </section> </a> </section> </section> </section> <section class="subscribe-form"> <p>Get industry insights</p> <form data-members-form="subscribe"> <input data-members-email type="email" required="true" placeholder="youremail@example.com" /> <br> <button type="submit">Join</button> </form> </section> <aside class="read-next"> <aside class="read-more-wrap outer"> <header class="read-next-card-header"> <h3><span>More in</span> <a href="/tag/business-to-developer/">Business to Developer</a></h3> </header> <div class="read-more inner"> <article class="post-card"> <a class="post-card-image-link" href="/the-role-of-product-marketers-in-achieving-product-market-fit/"> <img class="post-card-image" src="/content/images/size/w800/2024/06/ashkan-forouzani-m0l9NBCivuk-unsplash.jpeg" alt="The role of product marketers in achieving product-market fit" /> </a> <div class="post-card-content"> <div class="post-visibility-public" href="/signin">Members-only</div> <a class="post-card-content-link" href="/the-role-of-product-marketers-in-achieving-product-market-fit/"> <header class="post-card-header"> <h2 class="post-card-title">The role of product marketers in achieving product-market fit</h2> </header> <section class="post-card-excerpt"> <p>While founders traditionally lead the charge towards PMF, there&#39;s a growing conversation about the potential role of product marketers (PMMs) in this early-stage process....</p> </section> </a> <footer class="post-card-meta"> <ul class="author-list"> </ul> <span class="reading-time">4 min read</span> </footer> </div> </article> <article class="post-card"> <a class="post-card-image-link" href="/what-is-product-messaging/"> <img class="post-card-image" src="/content/images/size/w800/2024/07/DMA_Framework_Tiles_messaging.jpg" alt="What is product messaging?" /> </a> <div class="post-card-content"> <div class="post-visibility-public" href="/signin">Members-only</div> <a class="post-card-content-link" href="/what-is-product-messaging/"> <header class="post-card-header"> <h2 class="post-card-title">What is product messaging?</h2> </header> <section class="post-card-excerpt"> <p>Without great positioning and messaging, your product may never reach your intended audience. But how can we define messaging?...</p> </section> </a> <footer class="post-card-meta"> <ul class="author-list"> </ul> <span class="reading-time">5 min read</span> </footer> </div> </article> <article class="post-card"> <a class="post-card-image-link" href="/5-strategies-to-encourage-developers-to-contribute-to-your-product/"> <img class="post-card-image" src="/content/images/size/w800/2023/12/pexels-christina-morillo-1181263.jpeg" alt="5 strategies to encourage developers to contribute to your product" /> </a> <div class="post-card-content"> <div class="post-visibility-public" href="/signin">Members-only</div> <a class="post-card-content-link" href="/5-strategies-to-encourage-developers-to-contribute-to-your-product/"> <header class="post-card-header"> <h2 class="post-card-title">5 strategies to encourage developers to contribute to your product</h2> </header> <section class="post-card-excerpt"> <p>By implementing some of these strategies, you can create an environment that encourages developers to become active and enthusiastic contributors, thus benefiting your project’s growth and success....</p> </section> </a> <footer class="post-card-meta"> <ul class="author-list"> </ul> <span class="reading-time">6 min read</span> </footer> </div> </article> </div> </aside> </aside> </article> </div> </main> <div class="floating-header"> <div class="floating-header-logo"> <a href="https://www.developermarketing.io"> <img src="/content/images/size/w100/2024/07/android-chrome-192x192--2-.png" alt="Developer Marketing Alliance icon" /> <span>Developer Marketing Alliance</span> </a> </div> <span class="floating-header-divider">&mdash;</span> <div class="floating-header-title">How to create awesome product tours your customers will love</div> <div class="floating-header-share"> <a class="floating-header-share-tw" href="https://twitter.com/share?text=How%20to%20create%20awesome%20product%20tours%20your%20customers%20will%20love&amp;url=https://www.developermarketing.io/how-to-create-awesome-product-tours-your-customers-will-love-2/" onclick="window.open(this.href, 'share-twitter', 'width=550,height=235');return false;"> <?xml version="1.0" encoding="iso-8859-1"?> <svg viewBox="0 0 24 24" aria-hidden="true" class="r-18jsvk2 r-4qtqp9 r-yyyyoo r-16y2uox r-8kz0gk r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-lrsllp"> <g> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"> </path> </g> </svg> </a> <a class="floating-header-share-fb" href="https://www.facebook.com/sharer/sharer.php?u=https://www.developermarketing.io/how-to-create-awesome-product-tours-your-customers-will-love-2/" onclick="window.open(this.href, 'share-facebook','width=580,height=296');return false;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z"/></svg> </a> <a class="floating-header-share-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.developermarketing.io/how-to-create-awesome-product-tours-your-customers-will-love-2/" onclick="window.open(this.href, 'share-facebook','width=580,height=496');return false;"> <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve"> <g> <g> <path class="st0" d="M18.5,0h-17C0.7,0,0,0.6,0,1.4v17.1C0,19.4,0.7,20,1.5,20h17c0.8,0,1.5-0.6,1.5-1.4V1.4C20,0.6,19.3,0,18.5,0 z M5.9,17H3V7.5h3V17z M4.4,6.2c-1,0-1.7-0.8-1.7-1.7c0-0.9,0.8-1.7,1.7-1.7c0.9,0,1.7,0.8,1.7,1.7C6.2,5.4,5.4,6.2,4.4,6.2z M17,17h-3v-4.6c0-1.1,0-2.5-1.5-2.5c-1.5,0-1.8,1.2-1.8,2.5V17h-3V7.5h2.8v1.3h0c0.4-0.8,1.4-1.5,2.8-1.5c3,0,3.6,2,3.6,4.5V17z" /> </g> </g> </svg> </a> </div> <progress id="reading-progress" class="progress" value="0"> <div class="progress-container"> <span class="progress-bar"></span> </div> </progress> </div> <!-- link tag --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.12.3/tocbot.css" /> <!-- script tag --> <script src="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.12.3/tocbot.min.js"></script> <script> if (window.isTOCenabled) { document.querySelector('.toc-container').innerHTML = '<div class="toc"></div>'; tocbot.init({ tocSelector: '.toc', contentSelector: '.post-content' }); } </script> <div class="footer"> <div class="footer-wrapper"> <div class="site-footer-content"> <div class="site-footer-content-logo"> <a href="/"> <img src="https://www.developermarketing.io/assets/img/sales/DMA%20FULL%20LOGO%20WHITE.svg?v=931413e88b" /> </a> </div> <div class="site-footer-content-title"> The only dedicated and community resource specific to developer marketing. All the resources you need, all the expert insights you want. </div> </div> <div class="site-footer-social social-links"> <a href="https://www.linkedin.com/company/developer-marketing-alliance/" target="_blank" rel="noopener"><?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve"> <g> <g> <path class="st0" d="M18.5,0h-17C0.7,0,0,0.6,0,1.4v17.1C0,19.4,0.7,20,1.5,20h17c0.8,0,1.5-0.6,1.5-1.4V1.4C20,0.6,19.3,0,18.5,0 z M5.9,17H3V7.5h3V17z M4.4,6.2c-1,0-1.7-0.8-1.7-1.7c0-0.9,0.8-1.7,1.7-1.7c0.9,0,1.7,0.8,1.7,1.7C6.2,5.4,5.4,6.2,4.4,6.2z M17,17h-3v-4.6c0-1.1,0-2.5-1.5-2.5c-1.5,0-1.8,1.2-1.8,2.5V17h-3V7.5h2.8v1.3h0c0.4-0.8,1.4-1.5,2.8-1.5c3,0,3.6,2,3.6,4.5V17z" /> </g> </g> </svg> </a> <a href="https://twitter.com/DevMarAlliance" target="_blank" rel="noopener"><?xml version="1.0" encoding="iso-8859-1"?> <svg viewBox="0 0 24 24" aria-hidden="true" class="r-18jsvk2 r-4qtqp9 r-yyyyoo r-16y2uox r-8kz0gk r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-lrsllp"> <g> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"> </path> </g> </svg></a> <a href="https://www.facebook.com/Developer-Marketing-Community-104156045444631/"><?xml version="1.0" encoding="iso-8859-1"?> <!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 10.385 20" style="enable-background:new 0 0 10.385 20;" xml:space="preserve"> <g> <path id="f_1_" d="M6.742,20v-9.122h3.061l0.459-3.556h-3.52v-2.27c0-1.029,0.285-1.731,1.762-1.731 l1.882-0.001V0.139C10.06,0.097,8.943,0,7.643,0C4.928,0,3.07,1.657,3.07,4.699v2.622H0v3.556h3.07V20H6.742z"/> </g> </svg> </a> <a href="https://www.instagram.com/developermarketingalliance/" target="_blank" rel="noopener"><?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="Logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <g> <path d="M256,49.47c67.27,0,75.23,0.26,101.8,1.47c24.56,1.12,37.9,5.22,46.78,8.67c11.76,4.57,20.15,10.03,28.97,18.84 c8.82,8.82,14.28,17.21,18.84,28.97c3.45,8.88,7.55,22.22,8.67,46.78c1.21,26.56,1.47,34.53,1.47,101.8s-0.26,75.23-1.47,101.8 c-1.12,24.56-5.22,37.9-8.67,46.78c-4.57,11.76-10.03,20.15-18.84,28.97c-8.82,8.82-17.21,14.28-28.97,18.84 c-8.88,3.45-22.22,7.55-46.78,8.67c-26.56,1.21-34.53,1.47-101.8,1.47s-75.24-0.26-101.8-1.47c-24.56-1.12-37.9-5.22-46.78-8.67 c-11.76-4.57-20.15-10.03-28.97-18.84c-8.82-8.82-14.28-17.21-18.84-28.97c-3.45-8.88-7.55-22.22-8.67-46.78 c-1.21-26.56-1.47-34.53-1.47-101.8s0.26-75.23,1.47-101.8c1.12-24.56,5.22-37.9,8.67-46.78c4.57-11.76,10.03-20.15,18.84-28.97 c8.82-8.82,17.21-14.28,28.97-18.84c8.88-3.45,22.22-7.55,46.78-8.67C180.77,49.73,188.73,49.47,256,49.47 M256,4.08 c-68.42,0-77,0.29-103.87,1.52c-26.81,1.22-45.13,5.48-61.15,11.71c-16.57,6.44-30.62,15.05-44.62,29.06 C32.36,60.37,23.74,74.42,17.3,90.98c-6.23,16.02-10.49,34.34-11.71,61.15C4.37,179,4.08,187.58,4.08,256 c0,68.42,0.29,77,1.52,103.87c1.22,26.81,5.48,45.13,11.71,61.15c6.44,16.57,15.05,30.62,29.06,44.62 c14.01,14.01,28.05,22.62,44.62,29.06c16.02,6.23,34.34,10.49,61.15,11.71c26.87,1.23,35.45,1.52,103.87,1.52s77-0.29,103.87-1.52 c26.81-1.22,45.13-5.48,61.15-11.71c16.57-6.44,30.62-15.05,44.62-29.06c14.01-14.01,22.62-28.05,29.06-44.62 c6.23-16.02,10.49-34.34,11.71-61.15c1.23-26.87,1.52-35.45,1.52-103.87s-0.29-77-1.52-103.87c-1.22-26.81-5.48-45.13-11.71-61.15 c-6.44-16.57-15.05-30.62-29.06-44.62c-14.01-14.01-28.05-22.62-44.62-29.06c-16.02-6.23-34.34-10.49-61.15-11.71 C333,4.37,324.42,4.08,256,4.08L256,4.08z"/> <path d="M256,126.64c-71.45,0-129.36,57.92-129.36,129.36S184.55,385.36,256,385.36S385.36,327.45,385.36,256 S327.45,126.64,256,126.64z M256,339.97c-46.38,0-83.97-37.6-83.97-83.97s37.6-83.97,83.97-83.97c46.38,0,83.97,37.6,83.97,83.97 S302.38,339.97,256,339.97z"/> <circle cx="390.48" cy="121.52" r="30.23"/> </g> </svg> </a> <a href="https://dev-mar-com.slack.com/join/shared_invite/zt-10ogsse5h-HzlGgf8ln_ButCSJzwJRcw#/shared-invite/email" target="_blank" rel="noopener"><?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.8 122.8" style="enable-background:new 0 0 122.8 122.8;" xml:space="preserve"> <g> <g> <path class="st0" d="M25.8,77.6c0,7.1-5.8,12.9-12.9,12.9S0,84.7,0,77.6c0-7.1,5.8-12.9,12.9-12.9h12.9V77.6z"/> <path class="st0" d="M32.3,77.6c0-7.1,5.8-12.9,12.9-12.9s12.9,5.8,12.9,12.9v32.3c0,7.1-5.8,12.9-12.9,12.9s-12.9-5.8-12.9-12.9 C32.3,109.9,32.3,77.6,32.3,77.6z"/> </g> <g> <path class="st0" d="M45.2,25.8c-7.1,0-12.9-5.8-12.9-12.9S38.1,0,45.2,0s12.9,5.8,12.9,12.9v12.9H45.2z"/> <path class="st0" d="M45.2,32.3c7.1,0,12.9,5.8,12.9,12.9s-5.8,12.9-12.9,12.9H12.9C5.8,58.1,0,52.3,0,45.2s5.8-12.9,12.9-12.9 C12.9,32.3,45.2,32.3,45.2,32.3z"/> </g> <g> <path class="st0" d="M97,45.2c0-7.1,5.8-12.9,12.9-12.9c7.1,0,12.9,5.8,12.9,12.9s-5.8,12.9-12.9,12.9H97V45.2z"/> <path class="st0" d="M90.5,45.2c0,7.1-5.8,12.9-12.9,12.9c-7.1,0-12.9-5.8-12.9-12.9V12.9C64.7,5.8,70.5,0,77.6,0 c7.1,0,12.9,5.8,12.9,12.9V45.2z"/> </g> <g> <path class="st0" d="M77.6,97c7.1,0,12.9,5.8,12.9,12.9c0,7.1-5.8,12.9-12.9,12.9c-7.1,0-12.9-5.8-12.9-12.9V97H77.6z"/> <path class="st0" d="M77.6,90.5c-7.1,0-12.9-5.8-12.9-12.9c0-7.1,5.8-12.9,12.9-12.9h32.3c7.1,0,12.9,5.8,12.9,12.9 c0,7.1-5.8,12.9-12.9,12.9H77.6z"/> </g> </g> </svg> </a> <a href="https://www.youtube.com/@developermarketingalliance/videos" target="_blank" rel="noopener"> <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 176 124"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="M180.32,53.36A22.12,22.12,0,0,0,164.76,37.7C151,34,96,34,96,34s-55,0-68.76,3.7A22.12,22.12,0,0,0,11.68,53.36C8,67.18,8,96,8,96s0,28.82,3.68,42.64A22.12,22.12,0,0,0,27.24,154.3C41,158,96,158,96,158s55,0,68.76-3.7a22.12,22.12,0,0,0,15.56-15.66C184,124.82,184,96,184,96S184,67.18,180.32,53.36ZM78,122.17V69.83L124,96Z" transform="translate(-8 -34)"/></svg> </a> <a href="https://www.tiktok.com/@dm_alliance" target="_blank" rel="noopener"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tiktok" viewBox="0 0 16 16"> <path d="M9 0h1.98c.144.715.54 1.617 1.235 2.512C12.895 3.389 13.797 4 15 4v2c-1.753 0-3.07-.814-4-1.829V11a5 5 0 1 1-5-5v2a3 3 0 1 0 3 3z"/> </svg></a> </div> <div class="site-footer-links"> <div class="site-footer-links-title"> ABOUT </div> <ul role="menu"> <li class="nav-home nav-current" role="menuitem"><a href="/create-contribute/">Contribute</a></li> <li class="nav-tag" role="menuitem"><a href="/partner-with-us">Media Guide</a></li> <li class="nav-advisory-board" role="menuitem"><a href="/about-developer-marketing-alliance/">Mission</a></li> <li class="nav-advisory-board" role="menuitem"><a href="/privacy-policy">Privacy Policy</a></li> <li class="nav-advisory-board" role="menuitem"><a href="/terms-and-conditions">Terms of Service</a></li> </ul> </div> <div class="site-footer-links"> <div class="site-footer-links-title"> RESOURCES </div> <ul role="menu"> <li class="nav-tag" role="menuitem"><a href="/articles">Articles</a></li> <li class="nav-tag" role="menuitem"><a href="/newsletter/">Newsletter</a></li> <li class="nav-home nav-current" role="menuitem"><a href="#">Podcasts</a></li> <li class="nav-tag" role="menuitem"><a href="#">Reports</a></li> </ul> </div> <div class="site-footer-links"> <div class="site-footer-links-title"> GENERAL </div> <ul role="menu"> <li class="nav-tag" role="menuitem"><a href="https://events.developermarketing.io/" target="_blank">Events</a></li> <li class="nav-advisory-board" role="menuitem"><a href="#">Membership</a></li> <li class="nav-advisory-board" role="menuitem"><a href="/join-the-developer-marketing-alliance-community/">Community</a></li> </ul> </div> <div class="site-footer-categories"> <div class="site-footer-categories-title"> Learn </div> <a href="/tag/developer-marketing">Developer Marketing</a> <a href="/tag/developer-relations">Developer Relations</a> <a href="/tag/product-adoption-and-customer-success">Product Adoption</a> <a href="/tag/business-to-developer">Business-to-Developer</a> <a href="/tag/developer-communities/">Developer Communities</a> </div> </div> </div> </div> <!-- --> <script> var images = document.querySelectorAll('.kg-gallery-image img'); images.forEach(function (image) { var container = image.closest('.kg-gallery-image'); var width = image.attributes.width.value; var height = image.attributes.height.value; var ratio = width / height; container.style.flex = ratio + ' 1 0%'; }) </script> <script> var beamer_config = { product_id : 'UzGVPWEz44788', //DO NOT CHANGE: This is your product code on Beamer selector : '.nav-whats-new' }; </script> <script type="text/javascript" src="https://app.getbeamer.com/js/beamer-embed.js" defer="defer"></script> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PCKTC3B" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <script> const myTimeout = setTimeout(myStopFunction, 1500); function myStopFunction() { var bannerElement = document.getElementById('hs-web-interactives-top-push-anchor'); if (bannerElement) { var navItemWrapper = document.querySelectorAll('.modular-navigation-item-wrapper'); if (navItemWrapper) { console.log("running"); navItemWrapper.forEach(item => { item.style.top = '75px'; }) } } } </script> <script type="text/javascript" src="https://www.developermarketing.io/assets/built/jquery.js?v=931413e88b" ></script> <script type="text/javascript" src="https://www.developermarketing.io/assets/built/jquery.fitvids.js?v=931413e88b" ></script> <script type="text/javascript" src="https://www.developermarketing.io/assets/built/ghost-lunr.js?v=931413e88b" defer></script> <script type="text/javascript" src="https://www.developermarketing.io/assets/built/search.js?v=931413e88b" defer></script> <script type="text/javascript" src="https://www.developermarketing.io/assets/js/events-calendar.js?v=931413e88b" defer></script> <script type="text/javascript" src="https://www.developermarketing.io/assets/%20built/jquery.fitvids.js?v=931413e88b"></script> <script> // NOTE: Scroll performance is poor in Safari // - this appears to be due to the events firing much more slowly in Safari. // Dropping the scroll event and using only a raf loop results in smoother // scrolling but continuous processing even when not scrolling $(document).ready(function () { // Start fitVids var $postContent = $(".post-full-content"); $postContent.fitVids(); // End fitVids var progressBar = document.querySelector('#reading-progress'); var header = document.querySelector('.floating-header'); var title = document.querySelector('.post-full-title'); var lastScrollY = window.scrollY; var lastWindowHeight = window.innerHeight; var lastDocumentHeight = $(document).height(); var ticking = false; function onScroll() { lastScrollY = window.scrollY; requestTick(); } function onResize() { lastWindowHeight = window.innerHeight; lastDocumentHeight = $(document).height(); requestTick(); } function requestTick() { if (!ticking) { requestAnimationFrame(update); } ticking = true; } function update() { var trigger = title.getBoundingClientRect().top + window.scrollY; var triggerOffset = title.offsetHeight + 35; var progressMax = lastDocumentHeight - lastWindowHeight; // show/hide floating header if (lastScrollY >= trigger + triggerOffset) { header.classList.add('floating-active'); } else { header.classList.remove('floating-active'); } progressBar.setAttribute('max', progressMax); progressBar.setAttribute('value', lastScrollY); ticking = false; } window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onResize, false); update(); var getHiddenUpgrade = document.querySelector('.hidden-upgrade'); if (getHiddenUpgrade && isHiddenUpgradeVisible) getHiddenUpgrade.style.display = 'block'; }); // window.inArticleAdList = [ // { // img: 'https://static.ghost.org/v3.0.0/images/publishing-options.png', // url: '/' // }, // { // img: 'https://static.ghost.org/v3.0.0/images/admin-settings.png', // url: '/' // } // ]; if (window.inArticleAdList && !window.inArticleAdListDisabled) { const getSelectPostContent = document.querySelector('.post-content'); const getSelectPostContentLength = parseInt(getSelectPostContent.children.length / 2); const getSelectPostContentItem = getSelectPostContent.children[getSelectPostContentLength]; const thisinPostAd = document.createElement('a'); thisinPostAd.classList.add('post-in-post-ad'); const getRandAdItem = inArticleAdList[Math.floor(Math.random() * inArticleAdList.length)]; thisinPostAd.style.backgroundImage = 'url(' + getRandAdItem.img + ')'; thisinPostAd.setAttribute('href', getRandAdItem.url); thisinPostAd.setAttribute('target', '_blank'); getSelectPostContentItem.parentNode.insertBefore(thisinPostAd, getSelectPostContentItem.nextSibling); } const getCertCta = document.querySelector('.get-cert-cta'); if (window.showGetCertCta && getCertCta) { getCertCta.style.display = 'block'; } </script> <script> window.intercomSettings = { app_id: "ihx5j8jg", user_type: "dma" }; </script> <script> (function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/ihx5j8jg';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})(); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10