Highlights → SEO + social previews ship

SEO + social previews ship

April 22, 2026. Two foundations land on the same day. Site title and tagline now render on every public page automatically. Twitter Card previews appear when your links are shared. Discoverability + sharing, both ready.

What changed

Site title and tagline. Set them once at Site → Settings → SEO. Every public page now serves them in `` and `<meta description>` automatically — both the homepage and every interior page. No per-page configuration needed. Per-page overrides still work where set; the site-level values are the default.</p><p><strong>Twitter Card previews.</strong> Share a link to any SGEN site on Twitter, Slack, Discord, iMessage, or any modern preview-rendering surface — the link expands into a card with the page title, description, and image. The card data is generated automatically from each page's SEO fields and featured image.</p><p>Together: search engines see a useful title and description for every page. Social sharing surfaces show a designed preview instead of a bare URL.</p><h2>Why this matters</h2><p>For a marketing site, search visibility and social sharing aren't optional. Without site-level title/tagline defaults, every page either inherits a generic placeholder (bad) or requires per-page overrides (tedious). Without Open Graph and Twitter Card data, shared links look like raw URLs (no click-through).</p><p>Both gaps are closed today. Sites become discoverable on day one without per-page configuration. Shared links look professional on day one without manual meta-tag editing.</p><h2>What's covered</h2><p><strong>SEO surface:</strong><br><ul><li>Site title (defaults to brand name, configurable)</li><li>Site tagline (one-line description, configurable)</li><li>Per-page title override (where you want it different from the site default)</li><li>Per-page meta description override</li><li>Auto-generated XML sitemap</li><li>robots.txt (configurable)</li><li>Canonical URL handling</li><li>Open Graph fields (og:title, og:description, og:image, og:type, og:url)</li></ul><br><strong>Twitter Card surface:</strong><br><ul><li>`twitter:card` type (summary or large image, configurable)</li><li>`twitter:title` (inherits from page title)</li><li>`twitter:description` (inherits from page meta description)</li><li>`twitter:image` (uses page featured image, falls back to site default)</li><li>`twitter:site` (your handle, configurable)</li></ul><br>All of these render at page-serve time. View page-source on any public page to see them in `<head>`.</p><h2>How to configure</h2><p>The site-level defaults live at <strong>Site → Settings → SEO</strong>:</p><ul><li><strong>Site title</strong> — usually your brand name; e.g., "SGEN Digital"</li><li><strong>Tagline</strong> — one-line description; e.g., "Quality digital services shipped from the cloud"</li><li><strong>Default featured image</strong> — image used in social previews when a page has no specific featured image</li><li><strong>Twitter handle</strong> — `@yourhandle` style identifier</li></ul>Per-page overrides live on each page's edit form under the <strong>SEO</strong> panel. Override only the pages where the site default isn't right.<h2>Common patterns</h2><ul><li><strong>A new site setup.</strong> Set the site title and tagline at first launch. Forget about per-page SEO until you have content you want to title differently. Most pages will inherit the defaults gracefully.</li><li><strong>A blog post launch.</strong> The post inherits the site title and tagline by default. For high-value posts (long-form essays, launch announcements), override the per-page SEO fields for sharper meta data.</li><li><strong>A multi-language site.</strong> Each locale carries its own site title and tagline. The Twitter Card preview uses the visitor's language automatically.</li><li><strong>An agency setup.</strong> Set client-specific site title and tagline as part of every new-site checklist. Two fields, ~30 seconds, every client site is discoverable.</li></ul><h2>What's not in this release</h2><ul><li><strong>Per-page rich snippet schema</strong> (JSON-LD beyond Open Graph). Currently the platform ships Open Graph + Twitter Card; JSON-LD for product / event / article schemas is in NEXT.</li><li><strong>Locale-specific Open Graph rotation</strong> for multi-language sites. Today the OG image is global; per-locale OG images is in NEXT.</li><li><strong>Real-time preview tool</strong> — see what the Twitter Card will look like before publishing. The actual preview matches the spec, but a preview tool inside SGEN admin is in LATER.</li></ul><h2>Next steps</h2><ul><li><strong>Go to Site → Settings → SEO</strong> and set your site title + tagline if you haven't.</li><li><strong>Set a default featured image</strong> so all your social shares have a sane fallback.</li><li><strong>Use a card validator</strong> (Twitter's, LinkedIn's, Facebook's) to confirm your link previews render the way you expect.</li><li><strong>Read the SEO reference page</strong> for full field detail.</li></ul></div><div id="i9mx9" data-component-id="sgb_mp2a4osavj1yh" class="sgb-component sgb-component-text"><div class="post-nav"> <nav class="sg-post-navigation"> <ul class="post-nav-list"> <li class="post-nav-prev"> <a href="https://documentationsgen.staging.sgen.com/blog/highlights/custom-objects-and-fields" class="btn btn-primary"> <div class="nav-icon"> <i data-lucide="chevron-left" class="icon" aria-hidden="true"></i> </div> <div class="nav-label"> <span class="nav-label-txt">← Previous</span> <span class="nav-label-title">Custom Objects and Fields — your data shapes, native</span> </div> </a> </li> <li class="post-nav-next"> <a href="https://documentationsgen.staging.sgen.com/blog/highlights/cross-site-analytics" class="btn btn-primary"> <div class="nav-label"> <span class="nav-label-txt">Next →</span> <span class="nav-label-title">Cross-site analytics — read every site from one dashboard</span> </div> <div class="nav-icon"> <i data-lucide="chevron-right" class="icon" aria-hidden="true"></i> </div> </a> </li> </ul> </nav> </div></div></div><div id="comp_mp2a4osainnjt" data-component-id="sgb_mp2a4osainnjt" class="sgb-component docs-toc col cell"><div id="iqpyk" data-component-id="sgb_mp2a4oscig22i" class="sgb-component sgb-component-text"><div class="docs-toc-inner"><div class="toc-label">On this page</div><nav class="toc-list" aria-label="Page sections"><span class="toc-empty">Loading...</span></nav></div></div></div></div></div></section> </main> <footer id="masterfoot"> <div></div> </footer></div> <div id="searchbar" class="sgen-searchbar-overlay" aria-hidden="true" aria-label="Search overlay"> <div class="sgen-searchbar-backdrop" aria-label="Close search"></div> <div class="sgen-searchbar-dialog" role="dialog" aria-modal="true" aria-labelledby="sgen-searchbar-title"> <div class="sgen-searchbar-inner"> <button type="button" class="sgen-searchbar-close" aria-label="Close search">×</button> <h2 id="sgen-searchbar-title" class="sgen-searchbar-title">Search</h2> <form class="sgen-searchbar-form" action="https://documentationsgen.staging.sgen.com/search" method="get" role="search"> <label for="sgen-searchbar-input" class="visually-hidden">Search this site</label> <input type="search" id="sgen-searchbar-input" name="s" class="sgen-searchbar-input" placeholder="Search pages and posts…" autocomplete="off"> <button type="submit" class="btn btn-primary sgen-searchbar-submit">Search</button> </form> </div> </div></div> <script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/defaults/js/lucide.min.js?v=1.0.19" defer /></script><script type="text/javascript" defer />(function(){function run(){if(window.lucide&&typeof window.lucide.createIcons==='function')window.lucide.createIcons()}if(document.readyState!=='loading')run();else document.addEventListener('DOMContentLoaded',run);setTimeout(run,100)})();</script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/defaults/modules/wowjs/dist/wow.min.js?v=1.0.19" defer /></script><script type="text/javascript" defer />if(typeof WOW!=='undefined'){new WOW().init()}</script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/vendors/swiper/swiper-bundle.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/defaults/sgen/assets/js/sg-drawer.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/locations.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/locations-picker.js?v=1.0.19" defer /></script><script type="text/javascript" defer />window.sgenAccessibility={alignment:"right"};</script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/sgen-accessibility.min.js?v=1.0.19" defer /></script><script type="text/javascript" defer />window.sgcom=window.sgcom||{};window.sgcom.config={cart:{mode:'drawer',button:{mode:'redirect',show_count:true,inline_count:false},urls:{cart:'https://documentationsgen.staging.sgen.com/cart/',checkout:'https://documentationsgen.staging.sgen.com/checkout/',state:'https://documentationsgen.staging.sgen.com/do_shopping/cart_state',add:'https://documentationsgen.staging.sgen.com/add_to_cart',remove:'https://documentationsgen.staging.sgen.com/remove_from_cart'}}};window.sgcom.cart=window.sgcom.cart||{};window.sgcom.checkout=window.sgcom.checkout||{};window.sgcom.ui=window.sgcom.ui||{};</script><script type="text/javascript" defer />window.sgcom=window.sgcom||{};window.sgcom.config={cart:{mode:'drawer',button:{mode:'redirect',show_count:true,inline_count:false},urls:{cart:'https://documentationsgen.staging.sgen.com/cart/',checkout:'https://documentationsgen.staging.sgen.com/checkout/',state:'https://documentationsgen.staging.sgen.com/do_shopping/cart_state',add:'https://documentationsgen.staging.sgen.com/add_to_cart',remove:'https://documentationsgen.staging.sgen.com/remove_from_cart'}}};window.sgcom.cart=window.sgcom.cart||{};window.sgcom.checkout=window.sgcom.checkout||{};window.sgcom.ui=window.sgcom.ui||{};</script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/ecommerce.plugin.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/ecommerce.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/defaults/js/plugins.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/forms.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/sessionAttributerForms.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/plugins.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/sgbuilder.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/main.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/sgen-mobile-menu.js?v=1.0.19" defer /></script><script type="text/javascript" src="https://documentationsgen.staging.sgen.com/assets/front/js/lazyLoad.min.js?v=1.0.19" defer /></script><script type="text/javascript" src="/assets/dispenza/js/dispenza.js?v=1.0.19" defer /></script> <script>document.addEventListener('DOMContentLoaded',function(){if(document.querySelector('.docs-sidebar, .docs-article, .docs-toc-inner')){var here=location.pathname.replace(/\/$/,'');document.querySelectorAll('.docs-sidebar a.nav-item').forEach(function(a){var href=(a.getAttribute('href')||'').split('#')[0].split('?')[0].replace(/\/$/,'');if(href&&href===here){a.classList.add('active');var p=a.closest('details.nav-group');if(p)p.open=true}});var tocLinks=document.querySelectorAll('.docs-toc-inner .toc-list a, .docs-toc-inner nav a');if(tocLinks.length&&'IntersectionObserver'in window){var byId={};tocLinks.forEach(function(a){var id=(a.getAttribute('href')||'').replace('#','');if(id)byId[id]=a});var heads=[];Object.keys(byId).forEach(function(id){var h=document.getElementById(id);if(h)heads.push(h)});if(heads.length){var io=new IntersectionObserver(function(entries){entries.forEach(function(e){var a=byId[e.target.id];if(!a)return;if(e.isIntersecting){tocLinks.forEach(function(x){x.classList.remove('active')});a.classList.add('active')}})},{rootMargin:'-80px 0px -65% 0px',threshold:0});heads.forEach(function(h){io.observe(h)})}}}var isMobile=function(){return window.innerWidth<992};var hideViewAll=function(){document.querySelectorAll('#mobile-nav .mega-grid a').forEach(function(a){if(/^view all/i.test((a.textContent||'').trim()))a.style.display='none'})};var blockMainRoute=function(e){if(!isMobile())return;var a=e.target.closest('#mobile-nav .sg-nav-item.is-mega-menu > .sg-nav-link');if(a){e.preventDefault();var li=a.closest('li.is-mega-menu');if(li){li.classList.toggle('mobile-open');var drop=li.querySelector('.sg-dropdown-menu');if(drop){drop.style.display=(drop.style.display==='block'?'none':'block')}}}};document.addEventListener('click',blockMainRoute,true);hideViewAll();document.querySelectorAll('.mobile-toggler-burger').forEach(function(b){b.addEventListener('click',function(){setTimeout(hideViewAll,300)})})});</script><script>(function(){if(window.__SG_MOBILE_ACCORDION_SINGLE)return;function init(){var mn=document.querySelector('#mobile-nav');if(!mn)return false;var triggers=mn.querySelectorAll('ul.sg-site-navigation > li.sg-dropdown > .sg-nav-link, ul.sg-site-navigation > li.sg-dropdown > a');if(!triggers.length)return false;triggers.forEach(function(t){t.addEventListener('click',function(e){var thisLi=t.closest('li.sg-dropdown');if(!thisLi)return;mn.querySelectorAll('li.sg-dropdown.mobile-open').forEach(function(other){if(other!==thisLi)other.classList.remove('mobile-open')})},true)});window.__SG_MOBILE_ACCORDION_SINGLE=true;return true}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else if(!init())setTimeout(init,500)})();</script><script>(function(){if(window.__HL_DATE_SWAP)return;function init(){var cards=document.querySelectorAll('body.page_id-136 #comp_mouzev9o02e6h .article-item');if(!cards.length)return false;var dateRe=/^(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),\s*(\d{4})/i;cards.forEach(function(card){var desc=card.querySelector('.description');var dateEl=card.querySelector('.article-date');if(!desc||!dateEl)return;var m=desc.textContent.trim().match(dateRe);if(!m)return;var formatted=m[1].slice(0,3).toUpperCase()+' '+m[2]+', '+m[3];var svg=dateEl.querySelector('svg');dateEl.innerHTML='';if(svg)dateEl.appendChild(svg);dateEl.appendChild(document.createTextNode(' '+formatted));desc.innerHTML=desc.innerHTML.replace(/^[^A-Z]*(January|February|March|April|May|June|July|August|September|October|November|December)\s+\d{1,2},\s*\d{4}\s*[—–-]\s*/i,'')});window.__HL_DATE_SWAP=true;return true}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else if(!init())setTimeout(init,500)})();</script><script>(function(){if(window.__BLOG_BACK_LINK)return;function init(){if(!document.body.classList.contains('sgposts-blog_single'))return false;var m=location.pathname.match(/^\/blog\/([^\/]+)\/[^\/]+/);var cat=m?m[1]:null;var labels={guides:'Guides',reference:'Reference',changelog:'Changelog',highlights:'Highlights','whats-new':"What's New"};var label=cat&&labels[cat]?labels[cat]:'Blog';var target=cat==='highlights'||cat==='whats-new'?'/':(cat?'/'+cat:'/blog');var bar=document.createElement('div');bar.className='blog-back-bar';bar.innerHTML='<a class="blog-back-link" href="'+target+'">← Back to '+label+'</a>';var content=document.querySelector('main')||document.querySelector('.site-content');if(content)content.insertBefore(bar,content.firstChild);window.__BLOG_BACK_LINK=true;return true}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else if(!init())setTimeout(init,500)})();</script><script>(function(){if(window.__SG_DESKTOP_ACCORDION_SINGLE)return;window.__SG_DESKTOP_ACCORDION_SINGLE=true;function wire(){var sidebars=document.querySelectorAll('.docs-sidebar-inner');if(!sidebars.length)return;sidebars.forEach(function(sb){if(sb.__sgWired)return;sb.__sgWired=true;var topGroups=[].filter.call(sb.children,function(c){return c.tagName==='DETAILS'});topGroups.forEach(function(d){d.addEventListener('toggle',function(){if(!d.open)return;topGroups.forEach(function(other){if(other!==d&&other.open)other.open=false})})})})}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',wire);else wire();var obs=new MutationObserver(wire);obs.observe(document.documentElement,{childList:true,subtree:true})})();</script><script>(function(){if(window.__SG_BLOG_INDEX_REDIRECT)return;window.__SG_BLOG_INDEX_REDIRECT=true;try{var path=location.pathname.replace(/\/+$/,'');if(path!=='/blog')return;var ref=document.referrer||'';var sameOrigin=ref&&ref.indexOf(location.origin)===0;var dest=sameOrigin&&ref.replace(/[#?].*$/,'')!==location.href.replace(/[#?].*$/,'')?ref:'/';location.replace(dest)}catch(e){}})();</script><script>(function(){if(window.__SG_SIDEBAR_INJECTOR)return;window.__SG_SIDEBAR_INJECTOR=true;var CAT_TO_HUB={guides:'/guides',reference:'/reference',changelog:'/changelog',roadmap:'/roadmap',highlights:'/',whatsnew:'/','whats-new':'/'};var TTL_MS=5*60*1000;var pathRe=new RegExp('^/blog/([a-z0-9-]+)/','i');function getCat(){var m=location.pathname.match(pathRe);return m?m[1].toLowerCase():null}function readCache(cat){try{var raw=localStorage.getItem('__sg_sidebar_'+cat);if(!raw)return null;return JSON.parse(raw)}catch(e){return null}}function writeCache(cat,html){try{localStorage.setItem('__sg_sidebar_'+cat,JSON.stringify({t:Date.now(),html:html}))}catch(e){}}function wireAccordion(sidebar){var top=[].filter.call(sidebar.children,function(c){return c.tagName==='DETAILS'});top.forEach(function(d){if(d.__sgAccordionWired)return;d.__sgAccordionWired=true;d.addEventListener('toggle',function(){if(!d.open)return;top.forEach(function(o){if(o!==d&&o.open)o.open=false})})})}function markActive(sidebar){var here=location.pathname.replace(new RegExp('/$'),'');[].forEach.call(sidebar.querySelectorAll('a.nav-item'),function(a){var href=(a.getAttribute('href')||'').replace(new RegExp('/$'),'');if(href===here){a.classList.add('nav-item--active');var det=a.closest('details');if(det)det.open=true}})}function injectInto(target,html){target.innerHTML=html;wireAccordion(target);markActive(target)}function fetchHubSidebar(cat){var hub=CAT_TO_HUB[cat];if(!hub)return Promise.resolve(null);return fetch(hub,{credentials:'same-origin'}).then(function(r){return r.text()}).then(function(txt){var d=new DOMParser().parseFromString(txt,'text/html');var sb=d.querySelector('.docs-sidebar-inner');return sb?sb.innerHTML:null}).catch(function(){return null})}function run(){if(document.body.className.indexOf('sgposts-blog_single')<0)return;var cat=getCat();if(!cat)return;var target=document.querySelector('.docs-sidebar-inner');if(!target)return;var cached=readCache(cat);if(cached&&cached.html)injectInto(target,cached.html);fetchHubSidebar(cat).then(function(fresh){if(!fresh)return;writeCache(cat,fresh);if(!cached||cached.html!==fresh)injectInto(target,fresh)})}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',run);else run()})();</script> </body></html>