Everything on this page is real code in a real GitHub repo, not pseudo-snippets.
Clone it, run pnpm dev, read the source, swap the branding, or ship it verbatim.
github.com/TagadaPay/plugins
All five examples live in a single monorepo under the MIT license. Star it, fork it, send PRs.
Before you fork anything, make sure you’re looking at the right tool for the job:
Plugin SDK (this page)
@tagadapay/plugin-sdk/v2 — a full React framework for building hosted checkout, upsell, and thank-you pages that TagadaPay serves from your own domain. Handles sessions, funnel state, payments, pixels, i18n, drafts, build mode, etc.Use when you want a full checkout experience we host and route for you.
Headless SDK
@tagadapay/headless-sdk — framework-agnostic TypeScript client for calling the TagadaPay API from your own storefront (Shopify theme, Next.js app, Nuxt, etc.).Use when you already have a frontend and just need to create checkouts, fetch orders, or track pixels.
The five examples below all target the Plugin SDK. Each is a complete, deployable TagadaPay plugin.
Same behavior, same SDK hooks, same plugin.manifest.json structure — only the visual system changes.
Use them as starting points to understand how far the Plugin SDK’s theming layer lets you push a single checkout design.
Editorial
Neon
Luxe Boutique
Solar Zine
Retro Arcade / Y2K
Source →simple-checkout-style-editorialClean magazine aesthetic — generous whitespace, restrained typography, editorial hierarchy.
Best starting point if you want a neutral, trustworthy checkout.
Desktop 1440 × 900
Thank-you page
Source →simple-checkout-style-neonBold neon-on-black aesthetic — high-contrast UI, fluorescent accents, uppercase display type.
Good fit for streetwear, apparel, and youth-targeted DTC.
Desktop 1440 × 900
Thank-you page
Source →simple-checkout-style-luxeQuiet-luxury aesthetic — ivory cream background, serif display, amber-gold accents, gentle motion.
Designed for beauty, skincare, and premium lifestyle brands.
Desktop 1440 × 900
Thank-you page
Source →simple-checkout-style-solarSunny zine energy — warm butter and peach palette, tight display type, playful but functional.
Works for food, wellness, home goods, and indie brands.
Desktop 1440 × 900
Thank-you page
Source →simple-checkout-style-arcadeCandy-Y2K nostalgia — lilac pastels, gradient divider lines, pulsing LIVE chip, chunky mono type.
Tailored to gaming, digital collectibles, and early-web revival brands.
Desktop 1440 × 900
Thank-you page
Every variant implements the exact same checkout and thank-you behavior (mirroring our native native-checkout template). The only thing that changes between them is the design token layer: CSS variables, fonts, shadows, radii, motion — all driven through src/index.css and a few signature components (TopBar, Button, SectionHeader).
Yes. The entire TagadaPay/plugins repo is MIT-licensed.
You can fork, modify, rebrand, and deploy it commercially with zero attribution required
(attribution is always appreciated though).
Why five variants instead of one 'themed' plugin?
Because real brands need more than palette swaps. Each variant rewires motion curves,
typographic rhythm, TopBar behavior, order-summary density, and micro-copy —
the things that make a checkout feel on-brand vs generic-with-custom-colors.Having five distinct aesthetics gives you five working references instead of one design +
four theoretical alternatives.
Can I contribute a sixth variant?
Absolutely — PRs welcome. The contribution guide is in the repo’s root README.md.
If your variant targets an underserved vertical (gaming, B2B, SaaS checkout, donation forms),
we’ll likely feature it here.
How is this different from the Headless SDK examples?
The Headless SDK examples target a different
use case: calling TagadaPay from your own frontend (Shopify theme, Next.js site, etc.).
The Plugin SDK examples on this page are full hosted experiences — TagadaPay serves
them on the customer’s checkout URL; you own the code.If you already have a storefront and just need checkout creation + pixels → Headless SDK.
If you want a new custom checkout/upsell/thank-you flow → Plugin SDK (these examples).
Are screenshots up to date?
Yes — every image on this page is served from the repo’s screenshots/ folder via
raw.githubusercontent.com. When a maintainer updates a variant, the image here updates too.
Step-by-step walkthrough if you want to build from scratch instead of forking.
Plugin manifest reference
Full reference for plugin.manifest.json — pages, features, requirements.
SDK API reference
Every hook exposed by @tagadapay/plugin-sdk/v2.
Deploy with Plugin CLI
tgd deploy, environments, and release channels.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TagadaPay Documentation","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/tagadapay/dAEln3JcPtxwff8y/logo/tagadalogo.png?fit=max\u0026auto=format\u0026n=dAEln3JcPtxwff8y\u0026q=85\u0026s=4dc2eb4eff0b0ba948b28de0226b7c95","dark":"https://mintcdn.com/tagadapay/dAEln3JcPtxwff8y/logo/tagadalogo.png?fit=max\u0026auto=format\u0026n=dAEln3JcPtxwff8y\u0026q=85\u0026s=4dc2eb4eff0b0ba948b28de0226b7c95"},"favicon":"https://mintcdn.com/tagadapay/Ps9CiAHh3vY6Nvlu/favicon.svg?fit=max\u0026auto=format\u0026n=Ps9CiAHh3vY6Nvlu\u0026q=85\u0026s=efbc04eeaada7549e650570bcfc8ce6d","api":{"playground":{}},"navbar":{"links":[{"href":"https://help.tagada.io","label":"Help Center"},{"href":"https://feedback.tagada.io/roadmap","label":"Roadmap"},{"href":"https://feedback.tagada.io/changelog","label":"Changelog"},{"href":"mailto:api-support@tagadapay.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://crm.tagadapay.com"}},"footer":{"socials":{"website":"https://tagadapay.com","github":"https://github.com/tagadapay"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Help Center","icon":"book-open","href":"https://help.tagada.io"},{"anchor":"Roadmap","icon":"map","href":"https://feedback.tagada.io/roadmap"},{"anchor":"Changelog","icon":"list","href":"https://feedback.tagada.io/changelog"},{"anchor":"Dashboard","icon":"chart-line","href":"https://crm.tagadapay.com"},{"anchor":"Support","icon":"life-ring","href":"mailto:api-support@tagadapay.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tagadapay","hasAudioNarration":false,"actualSubdomain":"tagadapay","customDomains":["docs.tagada.io"],"gitSource":{"type":"gitlab","owner":"tagadapay","repo":"tagadapay-app","deployBranch":"main","contentDirectory":"mintlify","isPrivate":true,"projectId":61148103,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0a8dab558859ea6ffe276","collectionId":"af31532b-312b-4676-82f0-f0337c95ee45","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0a8dab558859ea6ffe276"},"entitlements":{},"buildId":"6ae0a8dab558859ea6ffe276","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Commerce API (V2)","count":192},{"language":"default","tag":"Developer Tools","count":97},{"language":"default","tag":"Payments API (V3)","count":64},{"language":"default","tag":"plugins-v2","count":31},{"language":"default","tag":"portal","count":22},{"language":"default","tag":"Node SDK","count":18},{"language":"default","tag":"Headless SDK","count":14},{"language":"default","tag":"Tagada Rx","count":14},{"language":"default","tag":"Plugin SDK","count":12},{"language":"default","tag":"plugins","count":11}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"developer-tools/sdk/open-source-examples","slug":"/developer-tools/sdk/open-source-examples","pageMetadata":{"title":"Open-Source Plugin Examples","description":"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.","icon":"github","href":"/developer-tools/sdk/open-source-examples"},"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: \"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.\"\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`,code:`code`,em:`em`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,Info,OptimizedImage,Step,Steps,Tab,Tabs,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`open-source-plugin-examples`,children:`Open-Source Plugin Examples`}),`\n`,_jsxs(Info,{children:[_jsxs(_components.p,{children:[`Everything on this page is `,_jsx(_components.strong,{children:`real code in a real GitHub repo`}),`, not pseudo-snippets.\nClone it, run `,_jsx(_components.code,{children:`pnpm dev`}),`, read the source, swap the branding, or ship it verbatim.`]}),_jsx(CardGroup,{cols:1,children:_jsx(Card,{title:`github.com/TagadaPay/plugins`,icon:`github`,href:`https://github.com/TagadaPay/plugins`,children:_jsx(_components.p,{children:`All five examples live in a single monorepo under the MIT license. Star it, fork it, send PRs.`})})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`plugin-sdk-vs-headless-sdk-—-quick-primer`,children:`Plugin SDK vs. Headless SDK — quick primer`}),`\n`,_jsx(_components.p,{children:`Before you fork anything, make sure you’re looking at the right tool for the job:`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsxs(Card,{title:`Plugin SDK (this page)`,icon:`react`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`@tagadapay/plugin-sdk/v2`})}),` — a full React framework for building `,_jsx(_components.strong,{children:`hosted checkout, upsell, and thank-you pages`}),` that TagadaPay serves from your own domain. Handles sessions, funnel state, payments, pixels, i18n, drafts, build mode, etc.`]}),_jsxs(_components.p,{children:[`Use when you want a `,_jsx(_components.strong,{children:`full checkout experience`}),` we host and route for you.`]})]}),_jsxs(Card,{title:`Headless SDK`,icon:`terminal`,href:`/developer-tools/headless-sdk/introduction`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`@tagadapay/headless-sdk`})}),` — framework-agnostic TypeScript client for calling the TagadaPay API from `,_jsx(_components.strong,{children:`your own storefront`}),` (Shopify theme, Next.js app, Nuxt, etc.).`]}),_jsx(_components.p,{children:`Use when you already have a frontend and just need to create checkouts, fetch orders, or track pixels.`})]})]}),`\n`,_jsxs(_components.p,{children:[`The five examples below all target the `,_jsx(_components.strong,{children:`Plugin SDK`}),`. Each is a complete, deployable TagadaPay plugin.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`the-five-style-variants`,children:`The Five Style Variants`}),`\n`,_jsxs(_components.p,{children:[`Same behavior, same SDK hooks, same `,_jsx(_components.code,{children:`plugin.manifest.json`}),` structure — only the `,_jsx(_components.strong,{children:`visual system`}),` changes.\nUse them as starting points to understand how far the Plugin SDK’s theming layer lets you push a single checkout design.`]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Editorial`,id:`editorial`,children:[_jsx(_components.p,{children:_jsxs(_components.a,{href:`https://github.com/TagadaPay/plugins/tree/main/simple-checkout-style-editorial`,children:[_jsx(_components.strong,{children:`Source →`}),` `,_jsx(_components.code,{children:`simple-checkout-style-editorial`})]})}),_jsx(_components.p,{children:`Clean magazine aesthetic — generous whitespace, restrained typography, editorial hierarchy.\nBest starting point if you want a neutral, trustworthy checkout.`}),_jsx(Frame,{caption:`Desktop 1440 × 900`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-editorial/screenshots/editorial-desktop.png`,alt:`Editorial checkout — desktop`})}),_jsx(Frame,{caption:`Thank-you page`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-editorial/screenshots/editorial-thankyou-desktop.png`,alt:`Editorial thank-you — desktop`})})]}),_jsxs(Tab,{title:`Neon`,id:`neon`,children:[_jsx(_components.p,{children:_jsxs(_components.a,{href:`https://github.com/TagadaPay/plugins/tree/main/simple-checkout-style-neon`,children:[_jsx(_components.strong,{children:`Source →`}),` `,_jsx(_components.code,{children:`simple-checkout-style-neon`})]})}),_jsx(_components.p,{children:`Bold neon-on-black aesthetic — high-contrast UI, fluorescent accents, uppercase display type.\nGood fit for streetwear, apparel, and youth-targeted DTC.`}),_jsx(Frame,{caption:`Desktop 1440 × 900`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-neon/screenshots/neon-desktop.png`,alt:`Neon checkout — desktop`})}),_jsx(Frame,{caption:`Thank-you page`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-neon/screenshots/neon-thankyou-desktop.png`,alt:`Neon thank-you — desktop`})})]}),_jsxs(Tab,{title:`Luxe Boutique`,id:`luxe-boutique`,children:[_jsx(_components.p,{children:_jsxs(_components.a,{href:`https://github.com/TagadaPay/plugins/tree/main/simple-checkout-style-luxe`,children:[_jsx(_components.strong,{children:`Source →`}),` `,_jsx(_components.code,{children:`simple-checkout-style-luxe`})]})}),_jsx(_components.p,{children:`Quiet-luxury aesthetic — ivory cream background, serif display, amber-gold accents, gentle motion.\nDesigned for beauty, skincare, and premium lifestyle brands.`}),_jsx(Frame,{caption:`Desktop 1440 × 900`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-luxe/screenshots/luxe-desktop.png`,alt:`Luxe checkout — desktop`})}),_jsx(Frame,{caption:`Thank-you page`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-luxe/screenshots/luxe-thankyou-desktop.png`,alt:`Luxe thank-you — desktop`})})]}),_jsxs(Tab,{title:`Solar Zine`,id:`solar-zine`,children:[_jsx(_components.p,{children:_jsxs(_components.a,{href:`https://github.com/TagadaPay/plugins/tree/main/simple-checkout-style-solar`,children:[_jsx(_components.strong,{children:`Source →`}),` `,_jsx(_components.code,{children:`simple-checkout-style-solar`})]})}),_jsx(_components.p,{children:`Sunny zine energy — warm butter and peach palette, tight display type, playful but functional.\nWorks for food, wellness, home goods, and indie brands.`}),_jsx(Frame,{caption:`Desktop 1440 × 900`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-solar/screenshots/solar-desktop.png`,alt:`Solar checkout — desktop`})}),_jsx(Frame,{caption:`Thank-you page`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-solar/screenshots/solar-thankyou-desktop.png`,alt:`Solar thank-you — desktop`})})]}),_jsxs(Tab,{title:`Retro Arcade / Y2K`,id:`retro-arcade-%2F-y2k`,children:[_jsx(_components.p,{children:_jsxs(_components.a,{href:`https://github.com/TagadaPay/plugins/tree/main/simple-checkout-style-arcade`,children:[_jsx(_components.strong,{children:`Source →`}),` `,_jsx(_components.code,{children:`simple-checkout-style-arcade`})]})}),_jsx(_components.p,{children:`Candy-Y2K nostalgia — lilac pastels, gradient divider lines, pulsing LIVE chip, chunky mono type.\nTailored to gaming, digital collectibles, and early-web revival brands.`}),_jsx(Frame,{caption:`Desktop 1440 × 900`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-arcade/screenshots/arcade-desktop.png`,alt:`Arcade checkout — desktop`})}),_jsx(Frame,{caption:`Thank-you page`,children:_jsx(OptimizedImage,{src:`https://raw.githubusercontent.com/TagadaPay/plugins/main/simple-checkout-style-arcade/screenshots/arcade-thankyou-desktop.png`,alt:`Arcade thank-you — desktop`})})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Every variant implements the `,_jsx(_components.strong,{children:`exact same checkout and thank-you behavior`}),` (mirroring our native `,_jsx(_components.code,{children:`native-checkout`}),` template). The only thing that changes between them is the design token layer: CSS variables, fonts, shadows, radii, motion — all driven through `,_jsx(_components.code,{children:`src/index.css`}),` and a few signature components (`,_jsx(_components.code,{children:`TopBar`}),`, `,_jsx(_components.code,{children:`Button`}),`, `,_jsx(_components.code,{children:`SectionHeader`}),`).`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`anatomy-of-a-plugin-shared-across-all-five`,children:`Anatomy of a Plugin (shared across all five)`}),`\n`,_jsx(_components.p,{children:`Every example follows the same skeleton, so once you understand one, you understand all five:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`24`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`24`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`simple-checkout-style-\u003cvariant>/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`├─ plugin.manifest.json # pages, features, requirements`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`├─ config/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ ├─ schema.json # strongly-typed config shape`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ └─ default.config.json # defaults merchants can override`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`├─ src/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ ├─ App.tsx # wouter routing + SDK matchRoute`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ ├─ pages/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ ├─ CheckoutPage.tsx # uses \u003cSingleStepCheckout />`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ └─ ThankYouPage.tsx # routes to the full ThankYou tree`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ ├─ components/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ ├─ SingleStepCheckout.tsx # orchestrates address/payment/summary`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ ├─ ThankYouPage.tsx # full thank-you UI (mirrors native-checkout)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ ├─ ThankYouHeader.tsx`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ ├─ TopBar.tsx # ← signature per-variant`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ ├─ OrderSummary.tsx`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ └─ ui/ # shadcn primitives (button, input, etc.)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ ├─ data/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ └─ mockOrder.ts # drives /thankyou/preview in local dev`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ ├─ hooks/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ │ └─ usePageMetadata.ts # title, favicon, OpenGraph per page`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ └─ index.css # ← variant-specific design tokens`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`└─ README.md`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Accordion,{title:`What ships in the shared SDK (not duplicated in the plugin)`,id:`what-ships-in-the-shared-sdk-not-duplicated-in-the-plugin`,children:[_jsxs(_components.p,{children:[`All five plugins import these from `,_jsx(_components.code,{children:`@tagadapay/plugin-sdk/v2`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Routing / funnel`}),` — `,_jsx(_components.code,{children:`matchRoute`}),`, `,_jsx(_components.code,{children:`useFunnel`}),`, `,_jsx(_components.code,{children:`isDraftMode`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Data hooks`}),` — `,_jsx(_components.code,{children:`useCheckout`}),`, `,_jsx(_components.code,{children:`useOrder`}),`, `,_jsx(_components.code,{children:`useCurrency`}),`, `,_jsx(_components.code,{children:`useISOData`}),`, `,_jsx(_components.code,{children:`usePluginConfig`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Payment`}),` — Stripe/Airwallex/HiPay/NMI method renderers, 3DS flow, Zelle/custom-payment handlers`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Tracking`}),` — `,_jsx(_components.code,{children:`usePixelTracking`}),` (Meta, TikTok, GA, etc.)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`i18n`}),` — `,_jsx(_components.code,{children:`useTranslation`}),` with merchant-supplied locales`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Preview`}),` — Draft-mode rendering for the CRM’s live preview iframe`]}),`\n`]}),_jsxs(_components.p,{children:[`In other words: the plugin owns `,_jsx(_components.strong,{children:`the UI and the story`}),` — the SDK owns the wiring.`]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-use-these-examples`,children:`How to Use These Examples`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Clone the repo`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/TagadaPay/plugins.git`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` plugins`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`})]}),`\n`]})})})}),_jsxs(Step,{title:`Pick a variant`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` simple-checkout-style-luxe`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # or editorial / neon / solar / arcade`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dev`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Vite boots on `,_jsx(_components.code,{children:`http://localhost:5173/checkout`}),` by default.\nNavigate to `,_jsx(_components.code,{children:`/thankyou/preview`}),` to see the thank-you page with mock data.`]})]}),_jsxs(Step,{title:`Rebrand`,children:[_jsxs(_components.p,{children:[`Most brand adjustments happen in `,_jsx(_components.strong,{children:`two files`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`src/index.css`}),` — design tokens (colors, radii, fonts, motion)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`src/components/TopBar.tsx`}),` — the signature header strip`]}),`\n`]}),_jsx(_components.p,{children:`A minimal rebrand (swap palette + logo) is typically \u003c100 lines of diff.`})]}),_jsxs(Step,{title:`Deploy`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` build`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`tgd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deploy`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # via @tagadapay/plugin-cli`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/developer-tools/cli/introduction`,children:`Plugin CLI docs`}),` for credentials and deploy targets.`]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Is this really MIT? Can I ship it unchanged?`,icon:`scale-balanced`,id:`is-this-really-mit-can-i-ship-it-unchanged`,children:_jsxs(_components.p,{children:[`Yes. The entire `,_jsx(_components.a,{href:`https://github.com/TagadaPay/plugins`,children:_jsx(_components.code,{children:`TagadaPay/plugins`})}),` repo is MIT-licensed.\nYou can fork, modify, rebrand, and deploy it commercially with zero attribution required\n(attribution is always appreciated though).`]})}),_jsxs(Accordion,{title:`Why five variants instead of one 'themed' plugin?`,icon:`palette`,id:`why-five-variants-instead-of-one-themed-plugin`,children:[_jsxs(_components.p,{children:[`Because real brands need more than palette swaps. Each variant rewires motion curves,\ntypographic rhythm, TopBar behavior, order-summary density, and micro-copy —\nthe things that make a checkout feel `,_jsx(_components.em,{children:`on-brand`}),` vs `,_jsx(_components.em,{children:`generic-with-custom-colors`}),`.`]}),_jsx(_components.p,{children:`Having five distinct aesthetics gives you five working references instead of one design +\nfour theoretical alternatives.`})]}),_jsx(Accordion,{title:`Can I contribute a sixth variant?`,icon:`hand-holding-heart`,id:`can-i-contribute-a-sixth-variant`,children:_jsxs(_components.p,{children:[`Absolutely — PRs welcome. The contribution guide is in the repo’s root `,_jsx(_components.code,{children:`README.md`}),`.\nIf your variant targets an underserved vertical (gaming, B2B, SaaS checkout, donation forms),\nwe’ll likely feature it here.`]})}),_jsxs(Accordion,{title:`How is this different from the Headless SDK examples?`,icon:`circle-question`,id:`how-is-this-different-from-the-headless-sdk-examples`,children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`https://github.com/TagadaPay/examples`,children:`Headless SDK examples`}),` target a different\nuse case: calling TagadaPay from `,_jsx(_components.strong,{children:`your own frontend`}),` (Shopify theme, Next.js site, etc.).\nThe Plugin SDK examples on this page are `,_jsx(_components.strong,{children:`full hosted experiences`}),` — TagadaPay serves\nthem on the customer’s checkout URL; you own the code.`]}),_jsx(_components.p,{children:`If you already have a storefront and just need checkout creation + pixels → Headless SDK.\nIf you want a new custom checkout/upsell/thank-you flow → Plugin SDK (these examples).`})]}),_jsx(Accordion,{title:`Are screenshots up to date?`,icon:`camera`,id:`are-screenshots-up-to-date`,children:_jsxs(_components.p,{children:[`Yes — every image on this page is served from the repo’s `,_jsx(_components.code,{children:`screenshots/`}),` folder via\n`,_jsx(_components.code,{children:`raw.githubusercontent.com`}),`. When a maintainer updates a variant, the image here updates too.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Build your first funnel`,icon:`graduation-cap`,href:`/developer-tools/sdk/tutorial`,children:_jsx(_components.p,{children:`Step-by-step walkthrough if you want to build from scratch instead of forking.`})}),_jsx(Card,{title:`Plugin manifest reference`,icon:`file-lines`,href:`/developer-tools/sdk/manifest`,children:_jsxs(_components.p,{children:[`Full reference for `,_jsx(_components.code,{children:`plugin.manifest.json`}),` — pages, features, requirements.`]})}),_jsx(Card,{title:`SDK API reference`,icon:`book`,href:`/developer-tools/sdk/api`,children:_jsxs(_components.p,{children:[`Every hook exposed by `,_jsx(_components.code,{children:`@tagadapay/plugin-sdk/v2`}),`.`]})}),_jsx(Card,{title:`Deploy with Plugin CLI`,icon:`rocket`,href:`/developer-tools/cli/introduction`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`tgd deploy`}),`, environments, and release channels.`]})})]})]})}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":"Open-Source Plugin Examples","description":"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.","icon":"github","href":"/developer-tools/sdk/open-source-examples"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Open-Source Plugin Examples","slug":"open-source-plugin-examples","depth":1,"children":[]},{"title":"Plugin SDK vs. Headless SDK — quick primer","slug":"plugin-sdk-vs-headless-sdk-—-quick-primer","depth":2,"children":[]},{"title":"The Five Style Variants","slug":"the-five-style-variants","depth":2,"children":[]},{"title":"Anatomy of a Plugin (shared across all five)","slug":"anatomy-of-a-plugin-shared-across-all-five","depth":2,"children":[]},{"title":"How to Use These Examples","slug":"how-to-use-these-examples","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/tagadapay/81c11c0e163f81a7/utm-forward.js","/_mintlify/custom/tagadapay/d423b707fd32127b/x-pixel.js"],"subdomain":"tagadapay","siteName":"TagadaPay Documentation","title":"Open-Source Plugin Examples - TagadaPay Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T13:36:55.584Z","originalFileLocation":"developer-tools/sdk/open-source-examples.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=\"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TagadaPay Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tagadapay/0wRzSlWnlFmgp7vD/_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/tagadapay/0wRzSlWnlFmgp7vD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tagadapay/0wRzSlWnlFmgp7vD/_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/tagadapay/0wRzSlWnlFmgp7vD/_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/tagadapay/0wRzSlWnlFmgp7vD/_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/tagadapay/0wRzSlWnlFmgp7vD/_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/tagadapay/0wRzSlWnlFmgp7vD/_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/tagadapay/0wRzSlWnlFmgp7vD/_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/tagadapay/0wRzSlWnlFmgp7vD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Open-Source Plugin Examples - TagadaPay Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TagadaPay Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tagada.io/developer-tools/sdk/open-source-examples\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tagadapay.mintlify.app/_mintlify/api/og/v2?division=Plugin+SDK\u0026amp;title=Open-Source+Plugin+Examples\u0026amp;description=Five+production-ready+checkout+plugins+%E2%80%94+fork%2C+study%2C+or+ship+as-is.+100%25+MIT.\u0026amp;theme=4a795dedb4e93ebd54a8d8c9\u0026amp;signature=3541b9abf546e920cbc60c345b0bc0ff0e26f17842ed29274e568ecca955c24e\">\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=\"Open-Source Plugin Examples - TagadaPay Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tagadapay.mintlify.app/_mintlify/api/og/v2?division=Plugin+SDK\u0026amp;title=Open-Source+Plugin+Examples\u0026amp;description=Five+production-ready+checkout+plugins+%E2%80%94+fork%2C+study%2C+or+ship+as-is.+100%25+MIT.\u0026amp;theme=4a795dedb4e93ebd54a8d8c9\u0026amp;signature=3541b9abf546e920cbc60c345b0bc0ff0e26f17842ed29274e568ecca955c24e\">\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/tagadapay/0wRzSlWnlFmgp7vD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TagadaPay Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tagada.io/developer-tools/sdk/open-source-examples\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/developer-tools/sdk/open-source-examples.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tagada.io/#organization\",\"name\":\"TagadaPay Documentation\",\"url\":\"https://docs.tagada.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tagadapay/dAEln3JcPtxwff8y/logo/tagadalogo.png?fit=max\u0026auto=format\u0026n=dAEln3JcPtxwff8y\u0026q=85\u0026s=4dc2eb4eff0b0ba948b28de0226b7c95\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tagada.io#website\",\"name\":\"TagadaPay Documentation\",\"url\":\"https://docs.tagada.io\",\"publisher\":{\"@id\":\"https://docs.tagada.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples#webpage\",\"url\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples\",\"name\":\"Open-Source Plugin Examples\",\"description\":\"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.\",\"dateModified\":\"2026-10-27T13:36:55.584Z\",\"isPartOf\":{\"@id\":\"https://docs.tagada.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Plugin SDK\",\"item\":\"https://docs.tagada.io/developer-tools/sdk/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open-Source Plugin Examples\",\"item\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples#article\",\"headline\":\"Open-Source Plugin Examples\",\"name\":\"Open-Source Plugin Examples\",\"description\":\"Five production-ready checkout plugins — fork, study, or ship as-is. 100% MIT.\",\"url\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tagada.io/developer-tools/sdk/open-source-examples#webpage\"},\"dateModified\":\"2026-10-27T13:36:55.584Z\",\"publisher\":{\"@id\":\"https://docs.tagada.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tagada.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TagadaPay Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"TagadaPay Documentation","nav":{"global":{"anchors":[{"anchor":"Help Center","icon":"book-open","href":"https://help.tagada.io"},{"anchor":"Roadmap","icon":"map","href":"https://feedback.tagada.io/roadmap"},{"anchor":"Changelog","icon":"list","href":"https://feedback.tagada.io/changelog"},{"anchor":"Dashboard","icon":"chart-line","href":"https://crm.tagadapay.com"},{"anchor":"Support","icon":"life-ring","href":"mailto:api-support@tagadapay.com"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"Developer Tools","groups":[{"group":"Overview","pages":[{"title":"Developer Tools Overview","icon":"code","href":"/developer-tools"},{"title":"SDKs at a glance","icon":"compass","href":"/developer-tools/sdks-at-a-glance"},{"title":"SDK versions","icon":"tags","href":"/developer-tools/sdk-versions"},{"title":"API hosts and base URLs","sidebarTitle":"API hosts","icon":"globe","href":"/developer-tools/api-hosts"}]},{"group":"Payments (V2)","pages":[{"title":"Choose how you accept payments","icon":"signs-post","href":"/developer-tools/payments/choose-your-integration"},{"title":"Payment method support matrix","icon":"table","href":"/developer-tools/payments/support-matrix"},{"title":"Processors","icon":"plug","href":"/developer-tools/payments/processors"},{"title":"Alternative payment methods","icon":"building-columns","href":"/developer-tools/payments/alternative-payment-methods"},{"title":"Apple Pay \u0026 Google Pay","icon":"wallet","href":"/developer-tools/payments/wallets"},{"title":"Using payment methods from the SDKs","icon":"code","href":"/developer-tools/payments/sdk-usage"},{"title":"Accept a payment with your own cart","icon":"credit-card","href":"/developer-tools/payments/core-js-payments"}]},{"group":"Web Integration","pages":[{"title":"Trigger a Checkout from Your Website","icon":"browser","href":"/developer-tools/web-integration/trigger-checkout-from-website"},{"title":"External Page Tracker","icon":"radar","href":"/developer-tools/web-integration/external-page-tracker"}]},{"group":"Tracking \u0026 Attribution","pages":[{"title":"Tracking \u0026 Attribution","icon":"crosshairs","href":"/developer-tools/tracking/overview"},{"title":"ClickFlare","icon":"bullseye-arrow","href":"/developer-tools/tracking/clickflare"},{"title":"Voluum","icon":"chart-line","href":"/developer-tools/tracking/voluum"},{"title":"Binom","icon":"bolt","href":"/developer-tools/tracking/binom"},{"title":"RedTrack","icon":"signal","href":"/developer-tools/tracking/redtrack"},{"title":"ClickMagick","icon":"link","href":"/developer-tools/tracking/clickmagick"},{"title":"Hyros","icon":"user-shield","href":"/developer-tools/tracking/hyros"},{"title":"Wetracked","icon":"shop","href":"/developer-tools/tracking/wetracked"}]},{"group":"Node SDK","pages":[{"title":"Get an API key from code","icon":"key","href":"/developer-tools/node-sdk/get-api-key"},{"title":"Node SDK Quick Start","icon":"node-js","href":"/developer-tools/node-sdk/quick-start"},{"title":"Merchant Quick Start","icon":"rocket","href":"/developer-tools/node-sdk/merchant-quickstart"},{"title":"Apply for TagadaPay Processing","icon":"file-signature","href":"/developer-tools/node-sdk/processing-applications"},{"title":"Checkout Sessions","icon":"link","href":"/developer-tools/node-sdk/checkout-sessions"},{"title":"Customer Management","icon":"users","href":"/developer-tools/node-sdk/customers"},{"title":"Block Rules \u0026 Fraud Prevention","icon":"shield-halved","href":"/developer-tools/node-sdk/block-rules"},{"title":"Processor Credentials","icon":"key","href":"/developer-tools/node-sdk/processor-credentials"},{"title":"Sandbox Testing","icon":"flask-vial","href":"/developer-tools/node-sdk/sandbox-testing"},{"title":"Funnel Pages","icon":"paintbrush","href":"/developer-tools/node-sdk/custom-checkout"},{"title":"Promotions \u0026 Discount Codes","icon":"tags","href":"/developer-tools/node-sdk/promotions"},{"title":"Upsell \u0026 Downsell Funnel","icon":"arrow-up-right-dots","href":"/developer-tools/node-sdk/upsell-downsell-funnel"},{"title":"Order Bumps","icon":"cart-plus","href":"/developer-tools/node-sdk/order-bumps"},{"title":"Multi-PSP Routing \u0026 Vault","icon":"route","href":"/developer-tools/node-sdk/multi-stripe-routing"},{"title":"Subscriptions \u0026 Rebilling","icon":"rotate","href":"/developer-tools/node-sdk/subscriptions"},{"title":"Webhooks \u0026 Events","icon":"bell","href":"/developer-tools/node-sdk/webhooks-events"},{"title":"Scripts \u0026 Pixels per Step","icon":"chart-mixed","href":"/developer-tools/node-sdk/step-config-guide"},{"title":"External Steps","icon":"signal","href":"/developer-tools/node-sdk/external-steps"}]},{"group":"Funnels","pages":[{"title":"Funnel Canvas","icon":"sitemap","href":"/developer-tools/funnels/canvas"},{"title":"Funnel Orchestrator","icon":"diagram-project","href":"/developer-tools/funnels/funnel-orchestrator"},{"title":"Funnel Lifecycle: Save, Publish \u0026 Go-Live","icon":"rocket","href":"/developer-tools/funnels/funnel-lifecycle"}]},{"group":"Funnel demos","pages":[{"title":"Funnel demos","icon":"layer-group","href":"/developer-tools/funnel-demos/introduction"},{"title":"Basic post-purchase","icon":"shirt","href":"/developer-tools/funnel-demos/basic-post-purchase"},{"title":"Geo-based offers","icon":"earth-americas","href":"/developer-tools/funnel-demos/geo-offers"},{"title":"VIP tag offers","icon":"star","href":"/developer-tools/funnel-demos/vip-tag-offers"},{"title":"Cart-value upsell","icon":"basket-shopping","href":"/developer-tools/funnel-demos/cart-value-upsell"}]},{"group":"Examples","pages":[{"title":"Examples","icon":"boxes-stacked","href":"/developer-tools/examples/introduction"},{"title":"Checkout in plain HTML","icon":"html5","href":"/developer-tools/examples/headless-vanilla"},{"title":"Card tokenization \u0026 3DS","icon":"credit-card","href":"/developer-tools/examples/card-tokenization"},{"title":"Wallet tokenization example","icon":"wallet","href":"/developer-tools/examples/apple-google-pay"}]},{"group":"Shopify","pages":[{"title":"Shopify Checkout Script","icon":"shopify","href":"/developer-tools/shopify/checkout-script"}]},{"group":"WooCommerce","pages":[{"title":"WooCommerce checkout plugins","icon":"wordpress","href":"/developer-tools/woocommerce/checkout-plugins"}]},{"group":"SaaS Billing","pages":[{"title":"SaaS Billing with TagadaPay","icon":"repeat","href":"/developer-tools/saas-billing/introduction"},{"title":"SaaS Billing Quick Start","icon":"rocket","href":"/developer-tools/saas-billing/quick-start"},{"title":"Payment Flows for SaaS","icon":"route","href":"/developer-tools/saas-billing/payment-flows"},{"title":"Migrate from Stripe Billing","icon":"arrow-right-arrow-left","href":"/developer-tools/saas-billing/migrate-from-stripe"}]},{"group":"Headless SDK","pages":[{"title":"Headless SDK","icon":"plug","href":"/developer-tools/headless-sdk/introduction"},{"title":"Build a Store with AI + TagadaPay","icon":"wand-magic-sparkles","href":"/developer-tools/headless-sdk/build-store-with-ai"},{"title":"Payment Setup","icon":"credit-card","href":"/developer-tools/headless-sdk/payment-setup"},{"title":"Checkout Flow","icon":"cart-shopping","href":"/developer-tools/headless-sdk/checkout-flow"},{"title":"Funnel Navigation","icon":"route","href":"/developer-tools/headless-sdk/funnel-navigation"},{"title":"Emails","icon":"envelope","href":"/developer-tools/headless-sdk/emails"},{"title":"Pixels","icon":"bullseye-pointer","href":"/developer-tools/headless-sdk/pixels"},{"title":"Coded Funnels","icon":"code-branch","href":"/developer-tools/headless-sdk/coded-funnels"},{"title":"SDK Health","icon":"stethoscope","href":"/developer-tools/headless-sdk/sdk-health"},{"title":"Content-Security-Policy","icon":"shield-halved","href":"/developer-tools/headless-sdk/csp"},{"title":"Upsells \u0026 Offers","icon":"arrow-up-right-dots","href":"/developer-tools/headless-sdk/offers"},{"title":"Catalog","icon":"store","href":"/developer-tools/headless-sdk/catalog"},{"title":"Customer","icon":"user","href":"/developer-tools/headless-sdk/customer"},{"title":"Customer Portal","icon":"id-card","href":"/developer-tools/headless-sdk/customer-portal"}]},{"group":"Plugin SDK","pages":[{"title":"Plugin SDK","icon":"react","href":"/developer-tools/sdk/introduction"},{"title":"Quick Start Guide","description":"Build and deploy your first TagadaPay plugin in 15 minutes","icon":"rocket","href":"/developer-tools/sdk/quick-start"},{"title":"Open-Source Plugin Examples","icon":"github","href":"/developer-tools/sdk/open-source-examples"},{"title":"Initialize Checkout with Items","description":"How to programmatically create a checkout session with line items","icon":"cart-plus","href":"/developer-tools/sdk/init-checkout-example"},{"title":"Build Your First Funnel","icon":"graduation-cap","href":"/developer-tools/sdk/tutorial"},{"title":"Plugin Manifest","href":"/developer-tools/sdk/manifest"},{"title":"Funnel Resources System","icon":"database","href":"/developer-tools/sdk/funnel-resources"},{"title":"SDK API Reference (React)","icon":"code","href":"/developer-tools/sdk/api"},{"title":"Plugin Examples","icon":"code","href":"/developer-tools/sdk/examples"},{"title":"SDK Best Practices","icon":"star","href":"/developer-tools/sdk/best-practices"},{"title":"Vanilla JavaScript Guide","icon":"js","href":"/developer-tools/sdk/standalone-guide"},{"title":"Path Remapping (React)","icon":"route","href":"/developer-tools/sdk/path-remapping"}]},{"group":"Plugin CLI","pages":[{"title":"Plugin CLI","icon":"terminal","href":"/developer-tools/cli/introduction"},{"title":"CLI Quick Start","icon":"play","href":"/developer-tools/cli/quick-start"},{"title":"CLI Configuration","icon":"settings","href":"/developer-tools/cli/configuration"}]},{"group":"Tagada MCP (CRM V3)","pages":[{"title":"Connect your AI","icon":"plug","href":"/developer-tools/mcp-v3/connect-your-ai"}]},{"group":"Studio MCP (AI Agents)","pages":[{"title":"Studio MCP Server","icon":"robot","href":"/developer-tools/studio-mcp/introduction"},{"title":"Quick Start","icon":"rocket","href":"/developer-tools/studio-mcp/quick-start"},{"title":"Tools Reference","icon":"wrench","href":"/developer-tools/studio-mcp/tools-reference"},{"title":"Examples","icon":"lightbulb","href":"/developer-tools/studio-mcp/examples"}]},{"group":"Config MCP (AI Agents)","pages":[{"title":"Get Started","icon":"plug","href":"/developer-tools/crm-mcp/introduction"},{"title":"Prompt Library","icon":"lightbulb","href":"/developer-tools/crm-mcp/examples"},{"title":"Tools Reference","icon":"wrench","href":"/developer-tools/crm-mcp/tools-reference"}]},{"group":"Hosting \u0026 A/B Testing","pages":[{"title":"Host \u0026 A/B Test Any Page","icon":"flask-vial","href":"/developer-tools/hosting/deploy-and-ab-test"}]},{"group":"Internal","pages":[{"title":"Chargeback Provider Integration","icon":"code","href":"/internal/chargeback-provider-integration"},{"title":"Internal Developer Knowledge","icon":"book","href":"/internal/developer-knowledge"}]}]},{"tab":"Partners","hidden":true,"pages":[{"title":"Partners","href":"/developer-tools/partners/introduction"}]},{"tab":"Tagada Rx","pages":[{"title":"Tagada Rx","href":"/developer-tools/rx/introduction"}]},{"tab":"Payments API (V3)","pages":[{"title":"Payments API (V3)","href":"/payments-api/overview"}]},{"tab":"Commerce API (V2)","pages":[{"title":"Commerce API (V2)","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Open-Source Plugin Examples - TagadaPay Documentation","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-Bpq2Z6jK.js","DynamicMarkdown-D5M2At0B.js","zoom-image-lightbox-DL4wrF0w.js","lightbox-handle-r17bVUz3.js"]}