Publish the blocks your emails and pages are built from, and let allGood check that nothing strays from them.
A component library is your approved set of building blocks — a hero, a CTA button, a feature row, a footer — each carrying a note on when it should be used.There are two, because email and web are different craft:
Creating a library is the step that does the most work later. Once one exists, everything composed from it is checked against it.For how Email Components fit with email templates and emails, see the Email overview. To edit or write email components, see Email components.
In Content, select Create and choose Email Components or Page Components. Give it your brand guideline and, if you have one, an email or page that already looks the way you want.Working from an asset you already have is usually faster than describing blocks from scratch — the generator pulls the recurring pieces out of it and writes them up as components.
2
Review the blocks
You get an index of blocks, each with a name, a short description and a rendered preview. Each block also carries guidance on when to use it, which is written for the generator and isn’t shown on the card.The guidance is not decoration. It is what the generator reads when it is choosing and composing. A block described as “hero — use at the top of a launch announcement, never more than one per email” produces better output than one called “hero1”.
Scrolling through a page component library: each block's name, description and preview.
3
Publish the library
Select Publish. Later changes are published the same way. An unpublished library can be cited while you are drafting, but publishing the emails and pages built on it locks in the library version they used.
You’re done when the library shows a published version and its blocks appear with previews.
An asset composed from a library marks each section with the block it came from. When the asset is saved, allGood checks that every marked section names a real block and still has that block’s shape.It compares structure only — which elements, nested how. It ignores your copy and your styling values, because those are different every time by design. Changing the words in a hero is fine. Changing a hero into something that is no longer a hero is not.A block nested inside another block is checked on its own and is invisible to its parent. So editing a shared button re-checks that button, not every section that contains one.
A failed check names the block and what no longer matches it.
Checking is strict by default. A section that does not match its block stops the save, with a message saying which block and what differs.While you are migrating existing content, your team can be moved to warnings instead — either the whole account, or one person at a time, so a marketer mid-migration can keep working while everyone else stays strict.
There is no way to turn checking off entirely, and that is deliberate. A check anyone can disable is a check someone forgets to turn back on. If allGood cannot reach the setting that relaxes it, the answer is strict — a blocked save with a message you can act on is a better failure than an off-brand email that ships.
Ask allGood support to move your account or a specific person to advisory.
No library means no check. With no library declared there is nothing to match against, and the check reports nothing. This is why the second email is the one that benefits — the first one had nothing to conform to.
A library is not a template. The library is the vocabulary of blocks; the template is the arrangement of them plus a declaration of what copy changes. Most teams want both.
Libraries live under Content, not Templates. The Templates toggle holds shells; a component library is content in its own right.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"allGood Docs","colors":{"primary":"#dc4393","light":"#ea7cb9","dark":"#b12563"},"logo":{"light":"https://mintcdn.com/allgoodtechnologyinc/QQ498qL6_aJdv7lm/logo/light.svg?fit=max\u0026auto=format\u0026n=QQ498qL6_aJdv7lm\u0026q=85\u0026s=0a6e25720e392678288f3d5e92580677","dark":"https://mintcdn.com/allgoodtechnologyinc/QQ498qL6_aJdv7lm/logo/dark.svg?fit=max\u0026auto=format\u0026n=QQ498qL6_aJdv7lm\u0026q=85\u0026s=d68d3e70bcb0adf89895e438a7dd3dd1"},"favicon":"https://mintcdn.com/allgoodtechnologyinc/QQ498qL6_aJdv7lm/favicon.svg?fit=max\u0026auto=format\u0026n=QQ498qL6_aJdv7lm\u0026q=85\u0026s=393be1889fc5f811dc575e9e7c4aa16f","background":{"decoration":"gradient"},"navbar":{"links":[{"href":"mailto:support@allgoodhq.com","label":"Support"}],"primary":{"type":"button","label":"App","href":"https://allgoodhq.app"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","mcp"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Welcome","icon":"house","href":"/"},{"anchor":"Release Notes","icon":"list","href":"/release-notes"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"allgoodtechnologyinc","hasAudioNarration":false,"actualSubdomain":"allgoodtechnologyinc","customDomains":["docs.allgoodhq.com"],"gitSource":{"type":"github","owner":"allgoodhq","repo":"mint","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae89845ed2f58cb10ee7f21","collectionId":"ded4f481-a124-4f34-9b5d-99e441c864c1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae89845ed2f58cb10ee7f21"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee4936ccb0d32d838b1741","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"allGood","count":127},{"language":"default","tag":"Use Cases","count":68},{"language":"default","tag":"Email Reply Management","count":65},{"language":"default","tag":"Error Codes","count":38},{"language":"default","tag":"Marketing Kernel","count":20},{"language":"default","tag":"Marketo","count":18},{"language":"default","tag":"Integrations","count":17},{"language":"default","tag":"Settings","count":16},{"language":"default","tag":"Email Builder","count":12},{"language":"default","tag":"HubSpot","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@allgoodhq.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--sidebar-width: 18rem}.frame{padding:0}.frame>.relative>*[data-as=\"p\"]{margin:0!important}div:has(>.frame){margin:0.5rem 0}.frame [data-component-part=\"frame-caption\"]{margin:0.5rem 0;margin-left:1rem;padding:0;text-align:left}"}],"page":{"pagePath":"mk/content/component-libraries","slug":"/mk/content/component-libraries","pageMetadata":{"title":"Component libraries","sidebarTitle":"Component Libraries","description":"Publish the blocks your emails and pages are built from, and let allGood check that nothing strays from them.","noindex":true,"href":"/mk/content/component-libraries"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Publish the blocks your emails and pages are built from, and let allGood check that nothing strays from them.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`component library`}),` is your approved set of building blocks — a hero, a CTA button, a feature row, a footer — each carrying a note on when it should be used.`]}),`\n`,_jsx(_components.p,{children:`There are two, because email and web are different craft:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Library`}),_jsx(_components.th,{children:`Holds`}),_jsx(_components.th,{children:`Used by`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/mk/content/email/components/index`,children:_jsx(_components.strong,{children:`Email Components`})})}),_jsx(_components.td,{children:`Email blocks (written in MJML, the email-building language allGood uses)`}),_jsx(_components.td,{children:`Emails, email templates`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/mk/content/landing-pages/page-components`,children:_jsx(_components.strong,{children:`Page Components`})})}),_jsx(_components.td,{children:`HTML blocks`}),_jsx(_components.td,{children:`Landing pages, landing page templates`})]})]})]}),`\n`,_jsx(_components.p,{children:`Creating a library is the step that does the most work later. Once one exists, everything composed from it is checked against it.`}),`\n`,_jsxs(_components.p,{children:[`For how Email Components fit with email templates and emails, see the `,_jsx(_components.a,{href:`/mk/content/email/index`,children:`Email overview`}),`. To edit or write email components, see `,_jsx(_components.a,{href:`/mk/content/email/components/index`,children:`Email components`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`create-one`,children:`Create one`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{id:`create-the-library`,title:`Create the library`,children:[_jsxs(_components.p,{children:[`In `,_jsx(_components.strong,{children:`Content`}),`, select `,_jsx(_components.strong,{children:`Create`}),` and choose `,_jsx(_components.strong,{children:`Email Components`}),` or `,_jsx(_components.strong,{children:`Page Components`}),`. Give it your brand guideline and, if you have one, an email or page that already looks the way you want.`]}),_jsx(_components.p,{children:`Working from an asset you already have is usually faster than describing blocks from scratch — the generator pulls the recurring pieces out of it and writes them up as components.`})]}),_jsxs(Step,{id:`review-the-blocks`,title:`Review the blocks`,children:[_jsx(_components.p,{children:`You get an index of blocks, each with a name, a short description and a rendered preview. Each block also carries guidance on when to use it, which is written for the generator and isn’t shown on the card.`}),_jsx(_components.p,{children:`The guidance is not decoration. It is what the generator reads when it is choosing and composing. A block described as “hero — use at the top of a launch announcement, never more than one per email” produces better output than one called “hero1”.`}),_jsx(Frame,{caption:`Scrolling through a page component library: each block's name, description and preview.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/allgoodtechnologyinc/kRFN6t6lZA4SD0Ea/images/mk/content/landing-pages/page-components-scroll.gif?s=a0a3de28886592001ef330e5f07f7367`,alt:`Scrolling through a page component library, with each block's name, description and preview`,\"data-og-width\":`560`,width:`560`,\"data-og-height\":`505`,height:`505`,\"data-path\":`images/mk/content/landing-pages/page-components-scroll.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})})]}),_jsx(Step,{id:`approve-the-library`,title:`Publish the library`,children:_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Publish`}),`. Later changes are published the same way. An unpublished library can be cited while you are drafting, but publishing the emails and pages built on it locks in the library version they used.`]})})]}),`\n`,_jsx(_components.p,{children:`You’re done when the library shows a published version and its blocks appear with previews.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-the-check-works`,children:`How the check works`}),`\n`,_jsx(_components.p,{children:`An asset composed from a library marks each section with the block it came from. When the asset is saved, allGood checks that every marked section names a real block and still has that block’s shape.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`It compares structure only`}),` — which elements, nested how. It ignores your copy and your styling values, because those are different every time by design. Changing the words in a hero is fine. Changing a hero into something that is no longer a hero is not.`]}),`\n`,_jsx(_components.p,{children:`A block nested inside another block is checked on its own and is invisible to its parent. So editing a shared button re-checks that button, not every section that contains one.`}),`\n`,_jsx(Frame,{caption:`A failed check names the block and what no longer matches it.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/allgoodtechnologyinc/kg8NfGYnKsNNTd3h/images/mk/content/components-check-failed.png?fit=max\u0026auto=format\u0026n=kg8NfGYnKsNNTd3h\u0026q=85\u0026s=b410d11fff41e15b3bf4fc6bb77ddf12`,alt:`A failed check names the block and what no longer matches it`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`900`,height:`900`,\"data-path\":`images/mk/content/components-check-failed.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/allgoodtechnologyinc/kg8NfGYnKsNNTd3h/images/mk/content/components-check-failed.png?w=280\u0026fit=max\u0026auto=format\u0026n=kg8NfGYnKsNNTd3h\u0026q=85\u0026s=a6b6a76b082b5ee4e810c446dc771f07 280w, https://mintcdn.com/allgoodtechnologyinc/kg8NfGYnKsNNTd3h/images/mk/content/components-check-failed.png?w=560\u0026fit=max\u0026auto=format\u0026n=kg8NfGYnKsNNTd3h\u0026q=85\u0026s=d906d38fee139c472999238ece3eb976 560w, https://mintcdn.com/allgoodtechnologyinc/kg8NfGYnKsNNTd3h/images/mk/content/components-check-failed.png?w=840\u0026fit=max\u0026auto=format\u0026n=kg8NfGYnKsNNTd3h\u0026q=85\u0026s=2743e09d38d468f8d963df65bab96d04 840w, https://mintcdn.com/allgoodtechnologyinc/kg8NfGYnKsNNTd3h/images/mk/content/components-check-failed.png?w=1100\u0026fit=max\u0026auto=format\u0026n=kg8NfGYnKsNNTd3h\u0026q=85\u0026s=557eb53ee1bc08c3b475b2384ccf5549 1100w, https://mintcdn.com/allgoodtechnologyinc/kg8NfGYnKsNNTd3h/images/mk/content/components-check-failed.png?w=1650\u0026fit=max\u0026auto=format\u0026n=kg8NfGYnKsNNTd3h\u0026q=85\u0026s=5e24fe738ab4ab0b4359b711e0ee12fa 1650w, https://mintcdn.com/allgoodtechnologyinc/kg8NfGYnKsNNTd3h/images/mk/content/components-check-failed.png?w=2500\u0026fit=max\u0026auto=format\u0026n=kg8NfGYnKsNNTd3h\u0026q=85\u0026s=189788fd204ecc03b30c2d38e70ca8c8 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`strict-and-advisory`,children:`Strict and advisory`}),`\n`,_jsxs(_components.p,{children:[`Checking is `,_jsx(_components.strong,{children:`strict by default`}),`. A section that does not match its block stops the save, with a message saying which block and what differs.`]}),`\n`,_jsx(_components.p,{children:`While you are migrating existing content, your team can be moved to warnings instead — either the whole account, or one person at a time, so a marketer mid-migration can keep working while everyone else stays strict.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`There is no way to turn checking off entirely, and that is deliberate. A check anyone can disable is a check someone forgets to turn back on. If allGood cannot reach the setting that relaxes it, the answer is strict — a blocked save with a message you can act on is a better failure than an off-brand email that ships.`})}),`\n`,_jsx(_components.p,{children:`Ask allGood support to move your account or a specific person to advisory.`}),`\n`,_jsx(Heading,{level:`2`,id:`good-to-know`,children:`Good to know`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No library means no check.`}),` With no library declared there is nothing to match against, and the check reports nothing. This is why the second email is the one that benefits — the first one had nothing to conform to.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`A library is not a template.`}),` The library is the vocabulary of blocks; the `,_jsx(_components.a,{href:`/mk/content/templates`,children:`template`}),` is the arrangement of them plus a declaration of what copy changes. Most teams want both.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Libraries live under Content, not Templates.`}),` The Templates toggle holds shells; a component library is content in its own right.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Component libraries","sidebarTitle":"Component Libraries","description":"Publish the blocks your emails and pages are built from, and let allGood check that nothing strays from them.","noindex":true,"href":"/mk/content/component-libraries"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Create one","slug":"create-one","depth":2,"children":[]},{"title":"How the check works","slug":"how-the-check-works","depth":2,"children":[]},{"title":"Strict and advisory","slug":"strict-and-advisory","depth":2,"children":[]},{"title":"Good to know","slug":"good-to-know","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"allgoodtechnologyinc","siteName":"allGood Docs","title":"Component libraries - allGood Docs","relatedPagesConfig":{"enabled":false,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T16:53:25.653Z","originalFileLocation":"mk/content/component-libraries.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Publish the blocks your emails and pages are built from, and let allGood check that nothing strays from them.\">\u003cmeta data-mint-head name=\"application-name\" content=\"allGood Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"noindex\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Component libraries - allGood Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Publish the blocks your emails and pages are built from, and let allGood check that nothing strays from them.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"allGood Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.allgoodhq.com/mk/content/component-libraries\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://allgoodtechnologyinc.mintlify.site/_mintlify/api/og/v2?division=Set+up+once\u0026amp;title=Component+libraries\u0026amp;description=Publish+the+blocks+your+emails+and+pages+are+built+from%2C+and+let+allGood+check+that+nothing+strays+from+them.\u0026amp;theme=1dffc1444f7b7db60f57189e\u0026amp;signature=a78ca0c343a0a6023b7edc1a84def2ce284cbc6ca261f4136bc48557c3ac68f0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Component libraries - allGood Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Publish the blocks your emails and pages are built from, and let allGood check that nothing strays from them.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://allgoodtechnologyinc.mintlify.site/_mintlify/api/og/v2?division=Set+up+once\u0026amp;title=Component+libraries\u0026amp;description=Publish+the+blocks+your+emails+and+pages+are+built+from%2C+and+let+allGood+check+that+nothing+strays+from+them.\u0026amp;theme=1dffc1444f7b7db60f57189e\u0026amp;signature=a78ca0c343a0a6023b7edc1a84def2ce284cbc6ca261f4136bc48557c3ac68f0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/allgoodtechnologyinc/_ALjgld6m1uJaRhW/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"allGood Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#dc4393\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.allgoodhq.com/mk/content/component-libraries\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/mk/content/component-libraries.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"allGood Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"allGood Docs","nav":{"global":{"anchors":[{"anchor":"Welcome","icon":"house","href":"/"},{"anchor":"Release Notes","icon":"list","href":"/release-notes"}]},"tabs":[{"tab":"allGood","icon":"book-open","pages":[{"title":"allGood","href":"/use-cases/email-builder"}]},{"tab":"Marketing Kernel","icon":"layers","groups":[{"group":"Marketing Kernel","pages":[{"title":"Marketing Kernel","sidebarTitle":"Overview","href":"/mk"},{"group":"Content","pages":[{"title":"Content","sidebarTitle":"Overview","href":"/mk/content/index"},{"title":"Getting started with Content","sidebarTitle":"Getting Started","href":"/mk/content/getting-started"},{"group":"Set up once","pages":[{"title":"Brand guidelines","sidebarTitle":"Brand Guidelines","description":"Capture your colors, fonts, logos and tone of voice once, once, for every generator to read.","href":"/mk/content/brand-guidelines"},{"title":"Component libraries","sidebarTitle":"Component Libraries","href":"/mk/content/component-libraries"},{"title":"Templates","sidebarTitle":"Templates","description":"Build the layout once and list what changes, so making the next email or page is filling in fields.","href":"/mk/content/templates"}]},{"group":"Visual assets","pages":[{"title":"Visual assets","sidebarTitle":"Overview","href":"/mk/content/visual-assets/index"},{"title":"Using an image in an email or page","sidebarTitle":"In an email or page","href":"/mk/content/visual-assets/using-an-image-in-an-email-or-page"},{"title":"Using an image you host elsewhere","sidebarTitle":"Images hosted elsewhere","href":"/mk/content/visual-assets/images-hosted-elsewhere"},{"title":"Visual assets FAQ","sidebarTitle":"FAQ","href":"/mk/content/visual-assets/faq"}]},{"title":"Hosted files","sidebarTitle":"Hosted Files","href":"/mk/content/hosted-files"},{"group":"Landing pages","pages":[{"title":"Landing pages","sidebarTitle":"Overview","href":"/mk/content/landing-pages/index"},{"title":"What a landing page is","sidebarTitle":"What a landing page is","href":"/mk/content/landing-pages/what-a-landing-page-is"},{"title":"Creating a landing page","sidebarTitle":"Creating a landing page","href":"/mk/content/landing-pages/creating-a-landing-page"},{"title":"Making a page from a template","sidebarTitle":"From a template","href":"/mk/content/landing-pages/making-a-page-from-a-template"},{"title":"Page components","sidebarTitle":"Page Components","href":"/mk/content/landing-pages/page-components"},{"title":"Editing a landing page's code","sidebarTitle":"Editing the code","href":"/mk/content/landing-pages/editing-the-code"},{"title":"Previewing a landing page","sidebarTitle":"Previewing","href":"/mk/content/landing-pages/previewing-a-landing-page"},{"title":"Checks before a page goes live","sidebarTitle":"Checks before publishing","href":"/mk/content/landing-pages/checks-before-publishing"},{"title":"Publishing a landing page","sidebarTitle":"Publishing and taking down","href":"/mk/content/landing-pages/publishing-a-landing-page"},{"title":"Showing different versions of a page","sidebarTitle":"Different versions","href":"/mk/content/landing-pages/testing-versions-of-a-page"},{"title":"Using a page you host elsewhere","sidebarTitle":"External pages","href":"/mk/content/landing-pages/using-an-external-page"},{"title":"Coming from Marketo or HubSpot: landing pages","sidebarTitle":"Coming from Marketo/HubSpot","href":"/mk/content/landing-pages/coming-from-marketo-hubspot"},{"title":"Landing page not showing or not saving?","sidebarTitle":"Troubleshooting","href":"/mk/content/landing-pages/troubleshooting"},{"title":"Landing pages FAQ","sidebarTitle":"FAQ","href":"/mk/content/landing-pages/faq"}]},{"group":"Email","pages":[{"title":"Email","sidebarTitle":"Overview","href":"/mk/content/email/index"},{"group":"Components","pages":[{"title":"Email components","sidebarTitle":"Overview","href":"/mk/content/email/components/index"},{"title":"Editing an email component","sidebarTitle":"Editing a component","href":"/mk/content/email/components/editing-an-email-component"},{"title":"Setting up and reviewing email components in allGood","sidebarTitle":"Setting up and reviewing","href":"/mk/content/email/components/setting-up-and-reviewing-email-components"},{"title":"What MJML is","sidebarTitle":"What MJML is","href":"/mk/content/email/components/what-mjml-is"}]},{"group":"Email templates","pages":[{"title":"Email templates","sidebarTitle":"Overview","href":"/mk/content/email/templates/index"},{"title":"What an email template is","sidebarTitle":"What a template is","href":"/mk/content/email/templates/what-an-email-template-is"},{"title":"Creating an email template","sidebarTitle":"Creating a template","href":"/mk/content/email/templates/creating-an-email-template"},{"title":"Decide what writers fill in","sidebarTitle":"What writers fill in","href":"/mk/content/email/templates/writing-the-copy-schema"},{"title":"Changing an email template","sidebarTitle":"Changing a template","href":"/mk/content/email/templates/changing-an-email-template"}]},{"group":"Emails","pages":[{"title":"Emails","sidebarTitle":"Overview","href":"/mk/content/email/emails/index"},{"title":"What an email is","sidebarTitle":"What an email is","href":"/mk/content/email/emails/what-an-email-is"},{"title":"Creating an email","sidebarTitle":"Creating an email","href":"/mk/content/email/emails/creating-an-email"},{"title":"Previewing and testing an email","sidebarTitle":"Previewing and testing","href":"/mk/content/email/emails/previewing-and-testing-an-email"},{"title":"Editing an email's code","sidebarTitle":"Editing the code","href":"/mk/content/email/emails/editing-the-code"},{"title":"Personalizing an email","sidebarTitle":"Personalizing","href":"/mk/content/email/emails/personalizing-an-email"},{"title":"Merge field reference","sidebarTitle":"Merge field reference","href":"/mk/content/email/emails/merge-field-reference"},{"title":"Show content conditionally and repeat a list","sidebarTitle":"Conditional content","href":"/mk/content/email/emails/conditional-content-and-lists"},{"title":"Liquid recipes for emails","sidebarTitle":"Liquid recipes","href":"/mk/content/email/emails/liquid-recipes"},{"title":"Before an email can send","sidebarTitle":"Before it can send","href":"/mk/content/email/emails/before-an-email-can-send"},{"title":"How unsubscribes work","sidebarTitle":"How unsubscribes work","href":"/mk/content/email/emails/how-unsubscribes-work"},{"title":"Email not sending or rendering wrong?","sidebarTitle":"Troubleshooting","href":"/mk/content/email/emails/troubleshooting"}]},{"title":"Email FAQ","sidebarTitle":"FAQ","href":"/mk/content/email/faq"},{"title":"Coming from Marketo or HubSpot: email","sidebarTitle":"Coming from Marketo or HubSpot","href":"/mk/content/email/coming-from-marketo-hubspot"}]},{"group":"Forms","pages":[{"title":"Forms","sidebarTitle":"Overview","href":"/mk/content/forms/index"},{"title":"What a form is","sidebarTitle":"What a form is","href":"/mk/content/forms/what-a-form-is"},{"title":"Creating a form","sidebarTitle":"Creating a form","href":"/mk/content/forms/creating-a-form"},{"title":"Testing a form","sidebarTitle":"Testing a form","href":"/mk/content/forms/testing-a-form"},{"title":"Adding a form to a page","sidebarTitle":"Adding a form to a page","href":"/mk/content/forms/adding-a-form-to-a-page"},{"title":"What protects a form","sidebarTitle":"What protects a form","href":"/mk/content/forms/what-protects-a-form"},{"title":"See how a form is performing","sidebarTitle":"Seeing performance","href":"/mk/content/forms/seeing-form-performance"},{"title":"Find where a form is used","sidebarTitle":"Finding where it's used","href":"/mk/content/forms/finding-where-a-form-is-used"},{"title":"Form not capturing submissions?","sidebarTitle":"Troubleshooting","href":"/mk/content/forms/troubleshooting"},{"title":"Forms FAQ","sidebarTitle":"FAQ","href":"/mk/content/forms/faq"},{"title":"Coming from Marketo or HubSpot: forms","sidebarTitle":"Coming from Marketo/HubSpot","href":"/mk/content/forms/coming-from-marketo-hubspot"}]},{"title":"Copy and variants","sidebarTitle":"Copy and Variants","href":"/mk/content/copy-and-variants"},{"title":"Publishing and versions","sidebarTitle":"Publishing and Versions","href":"/mk/content/approvals"},{"title":"Marketo to MK","icon":"arrow-right-left","href":"/mk/content/marketo-to-mk"}]},{"group":"Data Platform","pages":[{"title":"MK Data Platform","sidebarTitle":"Overview","href":"/mk/data/index"},{"title":"Data Sharing","sidebarTitle":"Data Sharing","href":"/mk/data/sharing"},{"title":"Data Architecture","href":"/mk/data/architecture"},{"title":"Orchestration","sidebarTitle":"Orchestration","href":"/mk/data/orchestration"}]},{"group":"Formulas","pages":[{"title":"Formulas in MK","sidebarTitle":"Overview","href":"/mk/formulas/index"},{"title":"What formulas are and when to use one","sidebarTitle":"What formulas are","href":"/mk/formulas/what-formulas-are"},{"title":"How formulas find your data","sidebarTitle":"How formulas find your data","href":"/mk/formulas/how-formulas-find-your-data"},{"title":"Filter a list with a formula","sidebarTitle":"Filter a list","href":"/mk/formulas/filter-a-list"},{"title":"Add a calculated column to a list","sidebarTitle":"Add a calculated column","href":"/mk/formulas/add-a-calculated-column"},{"title":"Handle blank and messy values in formulas","sidebarTitle":"Handle blank values","href":"/mk/formulas/handle-blank-values"},{"title":"Formula recipes","sidebarTitle":"Recipes","href":"/mk/formulas/recipes"},{"title":"Where you can use formulas in MK","sidebarTitle":"Where you can use formulas","href":"/mk/formulas/where-you-can-use-formulas"},{"title":"Formula reference: functions and operators","sidebarTitle":"Reference","href":"/mk/formulas/reference"},{"title":"Formula gives a blank, wrong, or error result","sidebarTitle":"Formula not working","href":"/mk/formulas/not-working"},{"title":"Formulas FAQ","sidebarTitle":"FAQ","href":"/mk/formulas/faq"},{"title":"Coming from Marketo: formulas in MK","sidebarTitle":"Coming from Marketo","href":"/mk/formulas/coming-from-marketo"}]},{"group":"Motions","pages":[{"title":"Motions","sidebarTitle":"Overview","href":"/mk/motions/index"},{"title":"Motion types","sidebarTitle":"Motion Types","href":"/mk/motions/motion-types"},{"title":"Gated content","sidebarTitle":"Gated Content","href":"/mk/motions/gated-content"},{"title":"Webinars","sidebarTitle":"Webinars","href":"/mk/motions/webinars"},{"title":"Launching a motion","sidebarTitle":"Launching","href":"/mk/motions/launching"}]},{"group":"Web Edge for developers","pages":[{"title":"Add Web Edge to your website","sidebarTitle":"Overview","href":"/mk/developer/web-edge/index"},{"group":"Add it to your website","pages":[{"title":"Create a form","sidebarTitle":"Create a Form","href":"/mk/developer/web-edge/create-a-form"},{"title":"Install the tag","sidebarTitle":"Install the Tag","href":"/mk/developer/web-edge/install-the-tag"},{"title":"Install with Google Tag Manager","sidebarTitle":"Install with GTM","href":"/mk/developer/web-edge/install-with-gtm"},{"title":"Capture a form","sidebarTitle":"Capture a Form","href":"/mk/developer/web-edge/capture-a-form"},{"title":"Identify and track","sidebarTitle":"Identify and Track","href":"/mk/developer/web-edge/identify-and-track"},{"title":"Track custom events on your website","sidebarTitle":"Track Custom Events","href":"/mk/developer/web-edge/track-custom-events"},{"title":"What consent gates","sidebarTitle":"Consent Behavior","href":"/mk/developer/web-edge/consent-behavior"},{"title":"A complete example page","sidebarTitle":"Worked Example","href":"/mk/developer/web-edge/worked-example"},{"title":"Test your setup","sidebarTitle":"Test Your Setup","href":"/mk/developer/web-edge/test-your-setup"},{"title":"Troubleshooting","sidebarTitle":"Troubleshooting","href":"/mk/developer/web-edge/troubleshooting"},{"title":"Coming from Marketo: Web Edge for developers","sidebarTitle":"Coming from Marketo","href":"/mk/developer/web-edge/from-marketo"}]},{"group":"Reference","pages":[{"title":"Form capture API","sidebarTitle":"Form Capture API","href":"/mk/developer/web-edge/reference/form-api"},{"title":"Event capture API","sidebarTitle":"Event Capture API","href":"/mk/developer/web-edge/reference/event-api"},{"title":"Endpoint reference","sidebarTitle":"Endpoints","href":"/mk/developer/web-edge/reference/endpoints"},{"title":"Reason codes","sidebarTitle":"Reason Codes","href":"/mk/developer/web-edge/reference/reason-codes"},{"title":"Settings reference","sidebarTitle":"Settings","href":"/mk/developer/web-edge/reference/settings"},{"title":"Glossary","sidebarTitle":"Glossary","href":"/mk/developer/web-edge/reference/glossary"}]}]}]},{"group":"Platform","pages":[{"group":"Integrations","pages":[{"title":"The Integrations screen","sidebarTitle":"Overview","href":"/mk/integrations/index"},{"title":"Add your Anthropic API key","sidebarTitle":"Anthropic","href":"/mk/integrations/anthropic"},{"title":"How allGood connects with your other marketing tools","href":"/mk/integrations/how-allgood-connects"},{"title":"Understanding incoming and outgoing webhooks","href":"/mk/integrations/webhooks"}]},{"group":"Email components for developers","pages":[{"title":"How MJML works","sidebarTitle":"How MJML works","href":"/mk/developer/email/how-mjml-works"},{"title":"Write an email component","sidebarTitle":"Writing components","href":"/mk/developer/email/how-to-write-email-components"},{"title":"Compare MJML with other email tools","sidebarTitle":"Compare MJML with other tools","href":"/mk/developer/email/compare-mjml-with-other-tools"},{"title":"Move your Marketo unsubscribes to allGood","sidebarTitle":"Move Marketo unsubscribes","href":"/mk/developer/email/move-your-marketo-unsubscribes"}]},{"group":"Landing pages for developers","pages":[{"title":"Write a landing page by hand","sidebarTitle":"Write a page by hand","href":"/mk/developer/landing-pages/write-a-landing-page"},{"title":"Retire your Marketo landing page subdomain","sidebarTitle":"Retire Marketo landing pages","href":"/mk/developer/landing-pages/retire-marketo-landing-pages"}]},{"group":"API and Webhooks","pages":[{"title":"API and Webhooks","sidebarTitle":"Overview","href":"/mk/developer/api/index"}]}]},{"group":"Enterprise","pages":[{"title":"Enterprise","sidebarTitle":"Overview","href":"/mk/enterprise/index"},{"title":"MCP usage","sidebarTitle":"MCP Usage","href":"/mk/enterprise/mcp-usage"},{"title":"Data privacy","sidebarTitle":"Data Privacy","href":"/mk/enterprise/data-privacy"}]},{"group":"Settings","pages":[{"group":"Web Edge","pages":[{"title":"Web Edge","sidebarTitle":"Overview","href":"/mk/settings/web-edge/index"},{"title":"How Web Edge keeps your domain secure","sidebarTitle":"How it works","href":"/mk/settings/web-edge/how-it-works"},{"title":"Connect a subdomain","sidebarTitle":"Connect a subdomain","href":"/mk/settings/web-edge/connect-a-subdomain"},{"title":"Set your allowed origins","sidebarTitle":"Allowed origins","href":"/mk/settings/web-edge/allowed-origins"},{"title":"Connect your consent platform","sidebarTitle":"Consent provider","href":"/mk/settings/web-edge/consent-provider"},{"title":"Set up Web Tracking","sidebarTitle":"Web Tracking","href":"/mk/settings/web-edge/tracking-setup"},{"title":"Turn on bot protection for a form","sidebarTitle":"Bot protection","href":"/mk/settings/web-edge/bot-protection"},{"title":"Review your form processing settings","sidebarTitle":"Form processing","href":"/mk/settings/web-edge/form-processing"},{"title":"Manage your landing page settings","sidebarTitle":"Landing page settings","href":"/mk/settings/web-edge/landing-page-settings"},{"title":"Saved vs live at the edge","sidebarTitle":"Saved vs live","href":"/mk/settings/web-edge/edge-sync"},{"title":"Web Edge setup checklist","sidebarTitle":"Setup checklist","href":"/mk/settings/web-edge/setup-checklist"},{"title":"Coming from Marketo: Web Edge for admins","sidebarTitle":"Coming from Marketo","href":"/mk/settings/web-edge/coming-from-marketo"},{"title":"Web Edge FAQ","sidebarTitle":"FAQ","href":"/mk/settings/web-edge/faq"}]},{"group":"Email","pages":[{"title":"Set up an email domain","href":"/mk/settings/email/domains-setup"},{"title":"Web Edge domain vs. email domain","href":"/mk/settings/email/domains-vs-web-edge"},{"title":"Authenticate your sending domain: SPF, DKIM, DMARC, BIMI, and VMC","href":"/mk/settings/email/authentication"},{"title":"Your sending IP: shared pool or dedicated","href":"/mk/settings/email/sending-ip"},{"title":"Set up your Subscription Center","sidebarTitle":"Subscription Center","href":"/mk/settings/email/subscription-center"},{"title":"Email Frequently Asked Questions","href":"/mk/settings/email/faq"}]}]}]}]},"basePath":"","title":"Component libraries - allGood Docs","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-NdetNziF.js","DynamicMarkdown-CD8713Yy.js","zoom-image-lightbox-DMoL6lHz.js","lightbox-handle-r17bVUz3.js"]}