> React app, transactional Postmark email, Customer.io for the lifecycle.

Source: https://plandalf.com/stacks/api-first

[Integrations](https://plandalf.com/integrations)

The API-First Product

**Tools in this stack**[React](https://plandalf.com/platforms/react-app)[Stripe](https://plandalf.com/platforms/stripe)[Postmark](https://plandalf.com/platforms/postmark)[Customer.io](https://plandalf.com/platforms/customer-io)

Builder resource

# The API-First Product

Add [Plandalf Offers](https://plandalf.com/products/checkouts) to a [React app](https://plandalf.com/docs/platforms/react-app), keep [Stripe](https://plandalf.com/platforms/stripe) as the processor, and send [purchase events](https://plandalf.com/docs/api/webhooks) into [Postmark](https://plandalf.com/platforms/postmark), [Customer.io](https://plandalf.com/platforms/customer-io), and the rest of your operating stack.

Use this as the builder map for an [API](https://plandalf.com/products/automations/webhooks)\-first implementation: when to create [products](https://plandalf.com/products/checkouts), how [prices](https://plandalf.com/products/checkouts/payment-options) attach to an [offer](https://plandalf.com/products/checkouts), where [checkout](https://plandalf.com/products/checkouts/hosted-checkout) belongs, and which [webhooks](https://plandalf.com/docs/api/webhooks) should drive access, receipts, and lifecycle work.

The goal is not another vague [integration](https://plandalf.com/integrations) page. This is a practical guide for using [Offers](https://plandalf.com/products/checkouts), [Automations](https://plandalf.com/products/automations), [invoices](https://plandalf.com/products/checkouts/invoices), [payment options](https://plandalf.com/products/checkouts/payment-options), and [integrations](https://plandalf.com/integrations) together inside a real [product](https://plandalf.com/products/checkouts) flow.

**Built for:** Dev tool startups, [API](https://plandalf.com/products/automations/webhooks) [products](https://plandalf.com/products/checkouts), B2B SaaS with a console

This page is the builder map: patterns, responsibilities, recipes, and [product](https://plandalf.com/products/checkouts) decisions for adding Plandalf to an [API](https://plandalf.com/products/automations/webhooks)\-first [product](https://plandalf.com/products/checkouts). Exact method signatures belong in the [SDK](https://plandalf.com/docs/sdk) [checkout](https://plandalf.com/products/checkouts/hosted-checkout) docs, [API](https://plandalf.com/products/automations/webhooks) reference, and [webhook](https://plandalf.com/docs/api/webhooks) docs.

[

![The Numi API Keys settings page used to create organization API keys.](https://plandalf.com/images/stacks/api-first/numi-api-keys.png)


](https://plandalf.com/products/automations/webhooks)

Create and manage organization [API](https://plandalf.com/products/automations/webhooks) keys in the Numi app before making protected [API](https://plandalf.com/products/automations/webhooks) requests.

[

![The Numi Developer API documentation with sidebar navigation and SDK method reference.](https://plandalf.com/images/stacks/api-first/numi-api-docs.png)


](https://plandalf.com/docs/sdk)

The dedicated docs surface owns exact [SDK](https://plandalf.com/docs/sdk) method reference. This stack page stays focused on what to build and where each responsibility lives.

## Architecture

Treat [Plandalf Offers](https://plandalf.com/products/checkouts) as the commerce layer between your [product](https://plandalf.com/products/checkouts) and the [payment processor](https://plandalf.com/products/checkouts/payment-options). Your application owns the [product](https://plandalf.com/products/checkouts) experience. Plandalf owns [offer configuration](https://plandalf.com/products/checkouts), [checkout state](https://plandalf.com/products/checkouts/hosted-checkout), [pricing rules](https://plandalf.com/products/checkouts/payment-options), [buyer identity](https://plandalf.com/docs/sdk/identity), [invoices](https://plandalf.com/products/checkouts/invoices), and the [events](https://plandalf.com/docs/api/webhooks) that drive fulfilment.

[Site**React**_Buyer clicks the CTA on your page._](https://plandalf.com/platforms/react-app)[Checkout**Plandalf**_Buyer opens the embedded checkout/modal._](https://plandalf.com/products/checkouts)[Payment**Stripe**_Buyer submits payment in Plandalf._](https://plandalf.com/platforms/stripe)[Email**Postmark**_The same Plandalf purchase event fires._](https://plandalf.com/platforms/postmark)[Automation**Customer.io**_The same Plandalf purchase event fires._](https://plandalf.com/platforms/customer-io)

StageSystemHandoff

Site[React](https://plandalf.com/platforms/react-app)Plandalf opens from that page with the selected [offer context](https://plandalf.com/products/checkouts).

Checkout[Plandalf](https://plandalf.com/products/checkouts)Plandalf validates the [offer](https://plandalf.com/products/checkouts), applies [pricing](https://plandalf.com/products/checkouts/payment-options) logic, and emits [checkout events](https://plandalf.com/docs/api/webhooks).

Payment[Stripe](https://plandalf.com/platforms/stripe)Plandalf sends the [payment request](https://plandalf.com/products/checkouts/payment-options) to [Stripe](https://plandalf.com/platforms/stripe), then records the completed [purchase event](https://plandalf.com/docs/api/webhooks).

Email[Postmark](https://plandalf.com/platforms/postmark)Plandalf [Automation](https://plandalf.com/products/automations/purchase-automations) sends the event and [customer](https://plandalf.com/docs/sdk/identity) fields to [Postmark](https://plandalf.com/platforms/postmark).

Automation[Customer.io](https://plandalf.com/platforms/customer-io)Plandalf [Automation](https://plandalf.com/products/automations/purchase-automations) sends the event payload to [Customer.io](https://plandalf.com/platforms/customer-io).

## How This Stack Makes The Sale Work

The [API](https://plandalf.com/products/automations/webhooks)\-First [Product](https://plandalf.com/products/checkouts) is useful when each tool has a clear job: the audience surface creates intent, Plandalf turns that intent into a configured [offer](https://plandalf.com/products/checkouts), [Stripe](https://plandalf.com/platforms/stripe) collects [payment](https://plandalf.com/products/checkouts/payment-options), and the follow-up tools receive the purchase context they need.

### Where the [buyer](https://plandalf.com/docs/sdk/identity) starts

[React](https://plandalf.com/platforms/react-app) owns the attention layer. Keep the editorial page, newsletter block, landing page, or [product](https://plandalf.com/products/checkouts) screen focused on why the [buyer](https://plandalf.com/docs/sdk/identity) should act, then hand the buying decision to [Plandalf Offers](https://plandalf.com/products/checkouts).

[React](https://plandalf.com/platforms/react-app)[Offers](https://plandalf.com/products/checkouts)[Buy button](https://plandalf.com/products/checkouts/hosted-checkout)

### What the [buyer](https://plandalf.com/docs/sdk/identity) is purchasing

Plandalf should own the [offer](https://plandalf.com/products/checkouts), [products](https://plandalf.com/products/checkouts), [prices](https://plandalf.com/products/checkouts/payment-options), [checkout](https://plandalf.com/products/checkouts/hosted-checkout) mode, [coupons](https://plandalf.com/products/checkouts/coupons), [order bumps](https://plandalf.com/products/checkouts/order-bumps), [upsells](https://plandalf.com/products/checkouts/upsells), [invoice](https://plandalf.com/products/checkouts/invoices) settings, and confirmation behavior so [Stripe](https://plandalf.com/platforms/stripe) is not the only durable record.

[Products](https://plandalf.com/products/checkouts)[Prices](https://plandalf.com/products/checkouts/payment-options)[Coupons](https://plandalf.com/products/checkouts/coupons)[Invoices](https://plandalf.com/products/checkouts/invoices)[Stripe](https://plandalf.com/platforms/stripe)

### What happens after [payment](https://plandalf.com/products/checkouts/payment-options)

The [purchase event](https://plandalf.com/docs/api/webhooks) should drive fulfilment, receipts, lifecycle email, CRM updates, [tax](https://plandalf.com/platforms/tax) context, and reporting. [Customer.io](https://plandalf.com/platforms/customer-io), [Postmark](https://plandalf.com/platforms/postmark) should receive commerce context instead of a bare form submission.

[Automations](https://plandalf.com/products/automations)[Sequences](https://plandalf.com/products/automations)[Customer.io](https://plandalf.com/platforms/customer-io)[Postmark](https://plandalf.com/platforms/postmark)

## Choose The Pattern

Start by deciding which business moment you are building. The technical implementation changes depending on whether [checkout](https://plandalf.com/products/checkouts/hosted-checkout) starts inside the [product](https://plandalf.com/products/checkouts) UI, from a public marketing page, or from your own catalog system.

### Launch an in-app upgrade flow

**Use when:** Your [product](https://plandalf.com/products/checkouts) already has an authenticated app and needs a [buyer](https://plandalf.com/docs/sdk/identity) to upgrade without leaving the [product](https://plandalf.com/products/checkouts).

**Build:** Create an [offer](https://plandalf.com/products/checkouts), mount the buying surface beside the upgrade CTA, identify the [buyer](https://plandalf.com/docs/sdk/identity), and grant access only after the [purchase event](https://plandalf.com/docs/api/webhooks).

[Offers](https://plandalf.com/products/checkouts)[Feature gates](https://plandalf.com/products/checkouts)[React app integration](https://plandalf.com/platforms/react-app)[SDK checkout](https://plandalf.com/docs/api/sdk-checkout)

### Sell from a marketing page

**Use when:** Your app has a public sales page and [checkout](https://plandalf.com/products/checkouts/hosted-checkout) should open from the [pricing](https://plandalf.com/products/checkouts/payment-options), [template](https://plandalf.com/templates), or [product](https://plandalf.com/products/checkouts) page.

**Build:** Use the [offer](https://plandalf.com/products/checkouts) as the commercial source of truth, keep the page copy in your site, and let Plandalf handle [checkout state](https://plandalf.com/products/checkouts/hosted-checkout), [payment handoff](https://plandalf.com/products/checkouts/payment-options), [invoices](https://plandalf.com/products/checkouts/invoices), and follow-up.

[Hosted checkout](https://plandalf.com/products/checkouts/hosted-checkout)[Checkout templates](https://plandalf.com/templates)[Coupons](https://plandalf.com/products/checkouts/coupons)[Invoices](https://plandalf.com/products/checkouts/invoices)

### Sync your own catalog

**Use when:** Your [product](https://plandalf.com/products/checkouts) system already creates plans, SKUs, packages, or entitlements.

**Build:** Push stable [product](https://plandalf.com/products/checkouts) and [price](https://plandalf.com/products/checkouts/payment-options) records into Plandalf, map them to [offers](https://plandalf.com/products/checkouts), then use [purchase events](https://plandalf.com/docs/api/webhooks) to reconcile access in your app.

[Products](https://plandalf.com/products/checkouts)[Prices](https://plandalf.com/products/checkouts/payment-options)[Offer products docs](https://plandalf.com/docs/offers/products)[Webhooks](https://plandalf.com/docs/api/webhooks)

## Build The Offer Layer

The [offer](https://plandalf.com/products/checkouts) is the commercial object your [product](https://plandalf.com/products/checkouts) points at. It should describe what the [buyer](https://plandalf.com/docs/sdk/identity) can purchase, how [checkout](https://plandalf.com/products/checkouts/hosted-checkout) appears, which [price](https://plandalf.com/products/checkouts/payment-options) rules apply, what [invoice](https://plandalf.com/products/checkouts/invoices) gets recorded, and what [automation](https://plandalf.com/products/automations/purchase-automations) happens after purchase.

-   Use a stable [offer](https://plandalf.com/products/checkouts) for each plan, [product](https://plandalf.com/products/checkouts), [template](https://plandalf.com/templates), package, or upgrade path.
-   Attach [products](https://plandalf.com/products/checkouts) and [prices](https://plandalf.com/products/checkouts/payment-options) before you wire the buying moment into the app.
-   Set [invoice](https://plandalf.com/products/checkouts/invoices), [automation](https://plandalf.com/products/automations/purchase-automations), [coupon](https://plandalf.com/products/checkouts/coupons), [bump](https://plandalf.com/products/checkouts/order-bumps), [upsell](https://plandalf.com/products/checkouts/upsells), and confirmation behavior where the seller can inspect it.

![The Numi offer editor with layout, product, theme, automation, invoice, and settings controls.](https://plandalf.com/images/stacks/api-first/numi-offer-editor.png)

The [offer](https://plandalf.com/products/checkouts) editor is where the [checkout surface](https://plandalf.com/products/checkouts/hosted-checkout), [products](https://plandalf.com/products/checkouts), [automation](https://plandalf.com/products/automations/purchase-automations), [invoices](https://plandalf.com/products/checkouts/invoices), and display mode come together.

## Configure The Controls Sellers Will Touch

An [API](https://plandalf.com/products/automations/webhooks)\-first build should not hide commercial controls in code. Sellers still need a place to adjust [automation](https://plandalf.com/products/automations/purchase-automations), [checkout templates](https://plandalf.com/templates), [order bumps](https://plandalf.com/products/checkouts/order-bumps), [upsells](https://plandalf.com/products/checkouts/upsells), [coupons](https://plandalf.com/products/checkouts/coupons), and the blocks that appear inside the [offer](https://plandalf.com/products/checkouts) before developers wire the [SDK](https://plandalf.com/docs/sdk) into the app.

![The Numi offer editor automation tab showing sequence controls beside the checkout canvas.](https://plandalf.com/images/features/automation/offer-editor-automation-tab-product.png)

[Automation](https://plandalf.com/products/automations/purchase-automations) is configured beside the [offer](https://plandalf.com/products/checkouts), so purchase-triggered [workflows](https://plandalf.com/workflows) stay attached to the buying surface. Link [sequences](https://plandalf.com/products/automations), [webhooks](https://plandalf.com/docs/api/webhooks), and post-[purchase automations](https://plandalf.com/products/automations/purchase-automations) from the same [product](https://plandalf.com/products/checkouts) surface.

![The Numi checkout element palette showing content, interactive, and selling blocks.](https://plandalf.com/images/features/checkout-templates/checkout-elements-palette-product.png)

[Checkout templates](https://plandalf.com/templates) expose reusable blocks for [product](https://plandalf.com/products/checkouts) lists, [product](https://plandalf.com/products/checkouts) cards, add-ons, buttons, forms, and [offer](https://plandalf.com/products/checkouts) content.

![The Numi selling blocks panel showing order bump controls.](https://plandalf.com/images/features/order-bumps/order-bumps-selling-blocks-product.png)

[Order bumps](https://plandalf.com/products/checkouts/order-bumps) are configured as selling blocks rather than one-off front-end code.

![The Numi selling blocks panel showing upsell controls.](https://plandalf.com/images/features/upsells/upsells-selling-blocks-product.png)

[Upsells](https://plandalf.com/products/checkouts/upsells) can be planned as part of the [offer](https://plandalf.com/products/checkouts) instead of bolted on after [checkout](https://plandalf.com/products/checkouts/hosted-checkout).

![The Numi coupon discount settings panel.](https://plandalf.com/images/features/coupons/coupon-discount-product.png)

[Coupons](https://plandalf.com/products/checkouts/coupons) keep discount behavior inspectable for sellers and reusable across [checkout](https://plandalf.com/products/checkouts/hosted-checkout) flows.

## Wire The Buying Moment

Your [product](https://plandalf.com/products/checkouts) should decide when the [buyer](https://plandalf.com/docs/sdk/identity) is ready. Plandalf should decide what the [checkout](https://plandalf.com/products/checkouts/hosted-checkout) means. Keep the [product](https://plandalf.com/products/checkouts) UI focused on the buying moment, then let the [offer](https://plandalf.com/products/checkouts) carry the [checkout](https://plandalf.com/products/checkouts/hosted-checkout) mode, [product](https://plandalf.com/products/checkouts), [price](https://plandalf.com/products/checkouts/payment-options), [invoice](https://plandalf.com/products/checkouts/invoices), and [automation](https://plandalf.com/products/automations/purchase-automations) context.

**Inside the app**Use for upgrades, seat expansion, feature [gates](https://plandalf.com/products/checkouts), [templates](https://plandalf.com/docs/offers/templates), credits, or [API](https://plandalf.com/products/automations/webhooks) plan changes.

**On a public page**Use for [pricing](https://plandalf.com/products/checkouts/payment-options) pages, [product](https://plandalf.com/products/checkouts) pages, launch pages, and [template](https://plandalf.com/templates) galleries.

**From backend state**Use when your system already knows the [product](https://plandalf.com/products/checkouts), [customer](https://plandalf.com/docs/sdk/identity), entitlement, or account context.

![The Numi API Keys settings page used to create organization API keys.](https://plandalf.com/images/stacks/api-first/numi-api-keys.png)

Create and manage organization [API](https://plandalf.com/products/automations/webhooks) keys in the Numi app before making protected [API](https://plandalf.com/products/automations/webhooks) requests.

## Plan The Data Contract

The useful part of an [API](https://plandalf.com/products/automations/webhooks)\-first [integration](https://plandalf.com/integrations) is not the button. It is the agreement between your app, Plandalf, the [payment processor](https://plandalf.com/products/checkouts/payment-options), and follow-up tools about which object owns each piece of commerce state.

ObjectPrimary ownerHow Plandalf uses it

[Customer](https://plandalf.com/docs/sdk/identity)Your appReceives identity and [buyer](https://plandalf.com/docs/sdk/identity) fields so [checkout](https://plandalf.com/products/checkouts/hosted-checkout) and follow-up stay attached to the right person.

[Offer](https://plandalf.com/products/checkouts)[Plandalf](https://plandalf.com/products/checkouts)Packages [products](https://plandalf.com/products/checkouts), [prices](https://plandalf.com/products/checkouts/payment-options), [checkout](https://plandalf.com/products/checkouts/hosted-checkout) mode, [invoices](https://plandalf.com/products/checkouts/invoices), [coupons](https://plandalf.com/products/checkouts/coupons), [bumps](https://plandalf.com/products/checkouts/order-bumps), [upsells](https://plandalf.com/products/checkouts/upsells), and confirmation state.

[Product and price](https://plandalf.com/products/checkouts)SharedUse stable keys so app entitlements, [invoices](https://plandalf.com/products/checkouts/invoices), and [automation](https://plandalf.com/products/automations/purchase-automations) [events](https://plandalf.com/docs/api/webhooks) point at the same commercial object.

[Payment](https://plandalf.com/products/checkouts/payment-options)[Stripe](https://plandalf.com/platforms/stripe)Plandalf keeps [checkout](https://plandalf.com/products/checkouts/hosted-checkout) and [invoice](https://plandalf.com/products/checkouts/invoices) context while the processor handles the charge.

[Purchase event](https://plandalf.com/docs/api/webhooks)[Plandalf](https://plandalf.com/products/automations)Starts fulfilment, CRM updates, lifecycle [sequences](https://plandalf.com/products/automations), receipts, and internal [notifications](https://plandalf.com/products/automations/purchase-automations).

## Actual Product Surfaces

These are the app surfaces a builder should expect to touch before the [SDK](https://plandalf.com/docs/sdk) install: [products](https://plandalf.com/products/checkouts) and [prices](https://plandalf.com/products/checkouts/payment-options), [integrations](https://plandalf.com/integrations), and [invoices](https://plandalf.com/products/checkouts/invoices). The screenshots are from the [product](https://plandalf.com/products/checkouts), so this section can explain where implementation decisions live instead of showing abstract mockups.

![The Numi products page showing a product, price, and Stripe connection status.](https://plandalf.com/images/stacks/api-first/numi-products.png)

[Products](https://plandalf.com/products/checkouts) and [prices](https://plandalf.com/products/checkouts/payment-options) are visible app records, not hidden implementation details. Start with [Products](https://plandalf.com/products/checkouts), [Prices](https://plandalf.com/products/checkouts/payment-options), and the [Stripe](https://plandalf.com/platforms/stripe) connection.

![The Numi integrations page showing Stripe, PayPal, Stripe test mode, and TaxJar connection options.](https://plandalf.com/images/stacks/api-first/numi-integrations.png)

[Payment](https://plandalf.com/products/checkouts/payment-options) and [tax](https://plandalf.com/platforms/tax) [integrations](https://plandalf.com/integrations) stay inspectable in the app before the [SDK](https://plandalf.com/docs/sdk) is wired into production. Keep [Stripe](https://plandalf.com/platforms/stripe), [PayPal](https://plandalf.com/platforms/paypal), [TaxJar](https://plandalf.com/platforms/taxjar), and [Avalara](https://plandalf.com/platforms/avalara) visible to operators.

![The Numi offer invoices page showing invoice status, customer, amount, and line item information.](https://plandalf.com/images/stacks/api-first/numi-offer-invoices.png)

[Invoices](https://plandalf.com/products/checkouts/invoices) preserve the commercial record after [checkout](https://plandalf.com/products/checkouts/hosted-checkout), including line items and status. Tie [checkout](https://plandalf.com/products/checkouts/hosted-checkout) back to [custom invoices](https://plandalf.com/products/checkouts/invoices), [PDF invoices](https://plandalf.com/products/checkouts/invoices), and [invoice email](https://plandalf.com/products/checkouts/invoices).

## Payment Configuration

[API](https://plandalf.com/products/automations/webhooks)\-first [checkout](https://plandalf.com/products/checkouts/hosted-checkout) still needs visible operator controls. Before a developer reaches for [SDK](https://plandalf.com/docs/sdk) [checkout](https://plandalf.com/products/checkouts/hosted-checkout) methods, the seller should be able to confirm the [payment](https://plandalf.com/products/checkouts/payment-options) processors, [payment options](https://plandalf.com/products/checkouts/payment-options), [tax](https://plandalf.com/platforms/tax) [integrations](https://plandalf.com/integrations), and sandbox routing that the [offer](https://plandalf.com/products/checkouts) will use.

![The Numi integrations settings page showing Stripe, PayPal, Stripe test mode, TaxJar, and Avalara connection options.](https://plandalf.com/images/stacks/api-first/numi-payment-processors.png)

[Payment](https://plandalf.com/products/checkouts/payment-options) processors and [tax](https://plandalf.com/platforms/tax) services are configured in the app before [checkout](https://plandalf.com/products/checkouts/hosted-checkout) traffic reaches production. Link [Stripe](https://plandalf.com/platforms/stripe), [PayPal](https://plandalf.com/platforms/paypal), [TaxJar](https://plandalf.com/platforms/taxjar), and [Avalara](https://plandalf.com/platforms/avalara) from the [integrations](https://plandalf.com/integrations) surface.

![The Numi Stripe payment methods settings page showing card, wallet, bank transfer, and buy now pay later options.](https://plandalf.com/images/stacks/api-first/numi-stripe-payment-methods.png)

[Stripe](https://plandalf.com/platforms/stripe) [payment](https://plandalf.com/products/checkouts/payment-options) methods let sellers choose which cards, wallets, bank transfers, and pay-later options appear in [checkout](https://plandalf.com/products/checkouts/hosted-checkout). This belongs with [payment options](https://plandalf.com/products/checkouts/payment-options), [hosted checkout](https://plandalf.com/docs/offers/hosted-checkout), and [Stripe docs](https://plandalf.com/docs/platforms/stripe).

## Compare The Pattern

An [API](https://plandalf.com/products/automations/webhooks)\-first build is different from using a processor-only [checkout](https://plandalf.com/products/checkouts/hosted-checkout) or a standalone funnel tool. Use these pages when a builder is deciding whether [Plandalf Offers](https://plandalf.com/products/checkouts) should sit inside the [product](https://plandalf.com/products/checkouts) stack or whether a narrower [checkout](https://plandalf.com/products/checkouts/hosted-checkout) [product](https://plandalf.com/products/checkouts) is enough.

### [Plandalf vs Gumroad](https://plandalf.com/alternatives/gumroad)

Compare with [Gumroad](https://plandalf.com/alternatives/gumroad). Use this when your [product](https://plandalf.com/products/checkouts) already has its own app, catalog, [customer identity](https://plandalf.com/docs/sdk/identity), and fulfilment path instead of needing a marketplace-style [checkout](https://plandalf.com/products/checkouts/hosted-checkout) [product](https://plandalf.com/products/checkouts).

[Products](https://plandalf.com/products/checkouts)[SDK checkout](https://plandalf.com/docs/api/sdk-checkout)[Webhooks](https://plandalf.com/docs/api/webhooks)

### [Plandalf vs SamCart](https://plandalf.com/comparisons/samcart-alternative)

Compare with [SamCart](https://plandalf.com/comparisons/samcart-alternative). Use this when [checkout](https://plandalf.com/products/checkouts/hosted-checkout) needs [offer](https://plandalf.com/products/checkouts) [automation](https://plandalf.com/products/automations/purchase-automations), [product](https://plandalf.com/products/checkouts) context, [invoices](https://plandalf.com/products/checkouts/invoices), and post-purchase [workflows](https://plandalf.com/workflows) rather than a separate funnel tool beside the business.

[Order bumps](https://plandalf.com/products/checkouts/order-bumps)[Upsells](https://plandalf.com/products/checkouts/upsells)[Automations](https://plandalf.com/products/automations)

[ThriveCart comparison](https://plandalf.com/comparisons/thrivecart-alternative)[ThriveCart alternatives](https://plandalf.com/comparisons/thrivecart-alternative)[ClickFunnels comparison](https://plandalf.com/alternatives/clickfunnels)[ClickFunnels alternatives](https://plandalf.com/alternatives/clickfunnels)[Kajabi comparison](https://plandalf.com/comparisons/kajabi-checkout)[Kajabi alternatives](https://plandalf.com/comparisons/kajabi-checkout)

## Implementation Recipes

Use these recipes the way a developer would use [product](https://plandalf.com/products/checkouts)\-specific [SDK](https://plandalf.com/docs/sdk) docs: choose the job, confirm the [product](https://plandalf.com/products/checkouts) surface, then move into [API](https://plandalf.com/products/automations/webhooks) reference, [SDK](https://plandalf.com/docs/sdk) [checkout](https://plandalf.com/products/checkouts/hosted-checkout), [webhooks](https://plandalf.com/docs/api/webhooks), [events](https://plandalf.com/docs/api/webhooks), and [integration](https://plandalf.com/integrations) docs only when the implementation shape is clear.

### Mount [checkout](https://plandalf.com/products/checkouts/hosted-checkout) inside a [React](https://plandalf.com/platforms/react-app) upgrade CTA

**Use when:** Use this when the [buyer](https://plandalf.com/docs/sdk/identity) is already signed in and the upgrade should happen inside your [product](https://plandalf.com/products/checkouts) rather than on a separate [pricing](https://plandalf.com/products/checkouts/payment-options) page.

1.  Create the [offer](https://plandalf.com/products/checkouts) with [products](https://plandalf.com/products/checkouts), [prices](https://plandalf.com/products/checkouts/payment-options), [checkout templates](https://plandalf.com/templates), [coupons](https://plandalf.com/products/checkouts/coupons), [order bumps](https://plandalf.com/products/checkouts/order-bumps), and [upsells](https://plandalf.com/products/checkouts/upsells) already configured.
2.  [Install the SDK](https://plandalf.com/docs/sdk/install) in the [React app](https://plandalf.com/docs/platforms/react-app) and pass [buyer identity](https://plandalf.com/docs/sdk/identity) before opening [checkout](https://plandalf.com/products/checkouts/hosted-checkout).
3.  Open the [hosted checkout](https://plandalf.com/docs/offers/hosted-checkout) or embedded [checkout surface](https://plandalf.com/products/checkouts/hosted-checkout) only after the [buyer](https://plandalf.com/docs/sdk/identity) clicks the upgrade CTA.
4.  Listen for the [purchase event](https://plandalf.com/docs/api/webhooks) or [webhook](https://plandalf.com/docs/api/webhooks) before granting access to the account, workspace, or feature gate.

[React integration](https://plandalf.com/platforms/react-app)[SDK install](https://plandalf.com/docs/sdk/install)[SDK checkout](https://plandalf.com/docs/api/sdk-checkout)[Identify customers](https://plandalf.com/docs/sdk/identity)[Feature gates](https://plandalf.com/products/checkouts)

### Publish a [product](https://plandalf.com/products/checkouts)\-backed [offer](https://plandalf.com/products/checkouts) from your catalog

**Use when:** Use this when your app already has plans, packages, credits, [templates](https://plandalf.com/docs/offers/templates), seats, or subscriptions and Plandalf should own the buying surface.

1.  Map your catalog object to Plandalf [products](https://plandalf.com/products/checkouts) and stable [prices](https://plandalf.com/products/checkouts/payment-options) before launch.
2.  Attach the [products](https://plandalf.com/products/checkouts) and [prices](https://plandalf.com/products/checkouts/payment-options) to an [offer](https://plandalf.com/products/checkouts) instead of improvising a one-off [payment](https://plandalf.com/products/checkouts/payment-options) link.
3.  Preview the [checkout](https://plandalf.com/products/checkouts/hosted-checkout) [template](https://plandalf.com/templates), [payment options](https://plandalf.com/products/checkouts/payment-options), [coupons](https://plandalf.com/products/checkouts/coupons), [order bumps](https://plandalf.com/products/checkouts/order-bumps), and [upsells](https://plandalf.com/products/checkouts/upsells) before sending production traffic.
4.  Use the [API](https://plandalf.com/products/automations/webhooks) reference and [SDK](https://plandalf.com/docs/sdk) docs only for implementation details after the commercial object is clear.

[Products](https://plandalf.com/products/checkouts)[Prices](https://plandalf.com/products/checkouts/payment-options)[Offer products docs](https://plandalf.com/docs/offers/products)[Pricing docs](https://plandalf.com/docs/offers/pricing)[API reference](https://plandalf.com/docs/api/reference)

### Fan [purchase events](https://plandalf.com/docs/api/webhooks) into fulfilment tools

**Use when:** Use this when the same completed [checkout](https://plandalf.com/products/checkouts/hosted-checkout) needs to update access, send a receipt, notify a team, and start lifecycle messages.

1.  Treat the [purchase event](https://plandalf.com/docs/api/webhooks) as the source of truth, not the front-end success screen.
2.  Send [invoice](https://plandalf.com/products/checkouts/invoices) and receipt work to the transactional email [integration](https://plandalf.com/integrations) while lifecycle messaging goes to [Customer.io](https://plandalf.com/platforms/customer-io) or another CRM/email tool.
3.  Route the [webhook](https://plandalf.com/docs/api/webhooks) payload to your [custom API](https://plandalf.com/platforms/custom-api) for entitlement, [analytics](https://plandalf.com/products/checkouts), reporting, or fulfilment.
4.  Keep [invoices](https://plandalf.com/products/checkouts/invoices), line items, [payment state](https://plandalf.com/products/checkouts/payment-options), [customer identity](https://plandalf.com/docs/sdk/identity), and [coupon](https://plandalf.com/products/checkouts/coupons) context attached to the event.

[Webhooks](https://plandalf.com/docs/api/webhooks)[SDK events](https://plandalf.com/docs/sdk/events)[Postmark](https://plandalf.com/platforms/postmark)[Customer.io](https://plandalf.com/platforms/customer-io)[Purchase event fanout](https://plandalf.com/products/automations)

### Verify [payment](https://plandalf.com/products/checkouts/payment-options), [tax](https://plandalf.com/platforms/tax), and [invoice](https://plandalf.com/products/checkouts/invoices) records before launch

**Use when:** Use this when the [checkout](https://plandalf.com/products/checkouts/hosted-checkout) is technically wired but the business record still needs to survive refunds, support tickets, and reporting.

1.  Confirm [Stripe](https://plandalf.com/platforms/stripe), [PayPal](https://plandalf.com/platforms/paypal), [Stripe](https://plandalf.com/platforms/stripe) test mode, [TaxJar](https://plandalf.com/platforms/taxjar), and [Avalara](https://plandalf.com/platforms/avalara) are connected or deliberately left off.
2.  Choose the [payment](https://plandalf.com/products/checkouts/payment-options) methods that should appear in [checkout](https://plandalf.com/products/checkouts/hosted-checkout), including cards, wallets, bank transfers, and pay-later options.
3.  Run the [hosted checkout](https://plandalf.com/docs/offers/hosted-checkout) flow with test [payment](https://plandalf.com/products/checkouts/payment-options) settings and verify [invoice](https://plandalf.com/products/checkouts/invoices) records are created with the expected line items.
4.  Check that [payment state](https://plandalf.com/products/checkouts/payment-options), [tax](https://plandalf.com/platforms/tax) context, [invoice email](https://plandalf.com/products/checkouts/invoices), [PDF invoices](https://plandalf.com/products/checkouts/invoices), and [customer](https://plandalf.com/docs/sdk/identity) fields are available after purchase.

[Stripe](https://plandalf.com/platforms/stripe)[PayPal](https://plandalf.com/platforms/paypal)[Payment options](https://plandalf.com/products/checkouts/payment-options)[Tax](https://plandalf.com/platforms/tax)[Invoices](https://plandalf.com/products/checkouts/invoices)

## Linked Implementation Map

Use this map when The [API](https://plandalf.com/products/automations/webhooks)\-First [Product](https://plandalf.com/products/checkouts) turns from an idea into implementation work. Every linked feature, [integration](https://plandalf.com/integrations), docs page, [workflow](https://plandalf.com/workflows), comparison, [template](https://plandalf.com/templates), and tool is a next step a builder or agent can follow from this stack.

### Product surfaces

Configure these Plandalf features before sending buyers into the stack.

[**API**Developer/_API_](https://plandalf.com/products/automations/webhooks)[**SDK**Developer/_API_](https://plandalf.com/docs/sdk)[**Integrations**_Automation_](https://plandalf.com/integrations)[**Automation**_Automation_](https://plandalf.com/products/automations/purchase-automations)[**Purchase automations**_Automation_](https://plandalf.com/products/automations/purchase-automations)[**Sequences with multiple similar triggers and any set of actions**_Automation_](https://plandalf.com/products/automations/purchase-automations)[**Notifications**_Notifications_](https://plandalf.com/products/automations/purchase-automations)[**Analytics**_Analytics_](https://plandalf.com/products/checkouts)[**Metadata**Data](https://plandalf.com/products/automations/webhooks)[**Customer identify**Data](https://plandalf.com/docs/sdk/identify)[**Form data**Data](https://plandalf.com/products/checkouts/sales-flows)[**Stripe integration**_Payments_](https://plandalf.com/platforms/stripe)[**Payment options**_Payments_](https://plandalf.com/products/checkouts/payment-options)[**Buy button**_Checkout_](https://plandalf.com/products/checkouts/hosted-checkout)[**Modality**Developer/_API_](https://plandalf.com/products/checkouts/hosted-checkout)[**Totally custom checkout layouts**_Checkout_](https://plandalf.com/products/checkouts/custom-layouts)[**Custom styles and themes**_Checkout_](https://plandalf.com/products/checkouts/custom-layouts)[**Preview sessions**Sessions](https://plandalf.com/products/checkouts/sales-flows)[**Test sessions**Sessions](https://plandalf.com/products/checkouts/sales-flows)

### Integrations

The tools that own the audience, [payment](https://plandalf.com/products/checkouts/payment-options), delivery, [tax](https://plandalf.com/platforms/tax), CRM, or follow-up path.

[**React**](https://plandalf.com/platforms/react-app)[**Stripe**Take cards, wallets and subscriptions through your own _Stripe_ account on every Plandalf _checkout_.](https://plandalf.com/platforms/stripe)[**Postmark**Send receipts and purchase emails through your own _Postmark_ account and _templates_.](https://plandalf.com/platforms/postmark)[**Customer.io**Put a countdown in _Customer.io_ campaigns and enrol people with an HTTP Request action. Sales reach it through _Zapier_; there's no built-in sync.](https://plandalf.com/platforms/customer-io)

### Docs handoff

Move from stack planning into exact setup, [SDK](https://plandalf.com/docs/sdk), [API](https://plandalf.com/products/automations/webhooks), and [webhook](https://plandalf.com/docs/api/webhooks) reference pages.

[**Offers overview**Understand _Plandalf Offers_: _hosted checkout pages_, embedded _checkout_ flows, _products_, _prices_, add-ons, _order bumps_, _upsells_, _save offers_, and purchase context.](https://plandalf.com/docs/offers/overview)[**Products**Attach _products_ and _prices_ to _offers_ so _checkout_ sessions, _invoices_, and _integrations_ carry clean catalog context.](https://plandalf.com/docs/offers/products)[**Pricing models**Model _one-time prices_, subscriptions, tiered _pricing_, volume _pricing_, trials, discounts, and promo-driven _price_ changes.](https://plandalf.com/docs/offers/pricing)[**Hosted checkout**Plandalf's _hosted checkout_ — managed URL, theme-able down to fonts and layout, with test and _preview sessions_.](https://plandalf.com/docs/offers/hosted-checkout)[**Save offers**Present a discount, plan switch, pause, or deadline-bound _offer_ when a subscriber starts a cancellation path.](https://plandalf.com/docs/offers/save-offers)[**Stripe**Connect _Stripe_ as the _payment_ account behind _Plandalf offers_, then test _checkout_, _products_, _prices_, and payout behavior before _going live_.](https://plandalf.com/docs/platforms/stripe)[**Developer API reference**A compact map of _SDK_ methods, public client routes, and security boundaries.](https://plandalf.com/docs/api/reference)[**Webhooks**Start _Plandalf automations_ from generated catch URLs or send outbound HTTP requests from _automation_ actions.](https://plandalf.com/docs/api/webhooks)[**SDK checkout API**Understand _checkout_ internals without confusing _buyer_\-facing routes with _payment_ verification.](https://plandalf.com/docs/api/sdk-checkout)[**Install the SDK**Load the Plandalf browser _SDK_ on any site, app, page builder, or framework route.](https://plandalf.com/docs/sdk/install)[**React SDK**Build a concise upgrade button with the _React_ provider, promise results, and explicit backend props. Add _live events_ only when needed.](https://plandalf.com/docs/sdk/react)[**Live events**Use FlowHandle _events_ and DOM _events_ to observe _checkout_ starts, purchases, completions, and cancellations.](https://plandalf.com/docs/sdk/events)[**Identify customers**_Customer_ JWT claims, signing keys, validation, and browser identity lifecycle.](https://plandalf.com/docs/sdk/identity)[**Configure the SDK**Configure frame style, test mode, size, _promos_, identity, _session continuity_, _metadata_, properties, and close behavior.](https://plandalf.com/docs/sdk/configure)

### Recipes and sequences

Use these when the sale needs fulfilment, lifecycle, [webhook](https://plandalf.com/docs/api/webhooks), or [automation](https://plandalf.com/products/automations/purchase-automations) depth.

[**Purchase event webhook fanout**Fan a single _purchase event_ out to custom APIs, _SDK_\-built apps, email systems, _analytics_, and fulfillment services.](https://plandalf.com/products/automations)[**Sell a Webflow product with Stripe Checkout**Wire a Plandalf _hosted checkout_ into a _Webflow_ site, accept _Stripe_ _payments_, and fulfill on completion.](https://plandalf.com/workflows/sell-webflow-product-with-stripe-checkout)[**Stripe to Mailchimp: tag your buyers**Add every Plandalf and _Stripe_ _buyer_ to a _Mailchimp_ audience with a purchase tag, using a Send _Webhook_ action after _checkout_ completes.](https://plandalf.com/workflows/stripe-to-mailchimp-after-checkout)

### Comparisons

Decision pages for buyers choosing between Plandalf and narrower [checkout](https://plandalf.com/products/checkouts/hosted-checkout), funnel, storefront, or [automation](https://plandalf.com/products/automations/purchase-automations) tools.

[**Plandalf vs Gumroad**Use this when your _product_ already has its own app, catalog, _customer identity_, and fulfilment path instead of needing a marketplace-style _checkout_ _product_.](https://plandalf.com/alternatives/gumroad)[**Plandalf vs SamCart**Use this when _checkout_ needs _offer_ _automation_, _product_ context, _invoices_, and post-purchase _workflows_ rather than a separate funnel tool beside the business.](https://plandalf.com/comparisons/samcart-alternative)[**ThriveCart alternatives**Compare Plandalf with ThriveCart when this stack overlaps with a funnel, course, or _checkout_ tool and the _buyer_ is evaluating replacement options.](https://plandalf.com/comparisons/thrivecart-alternative)[**ClickFunnels alternatives**Compare Plandalf with _ClickFunnels_ when this stack overlaps with a funnel, course, or _checkout_ tool and the _buyer_ is evaluating replacement options.](https://plandalf.com/alternatives/clickfunnels)[**Kajabi alternatives**Compare Plandalf with _Kajabi_ when this stack overlaps with a funnel, course, or _checkout_ tool and the _buyer_ is evaluating replacement options.](https://plandalf.com/comparisons/kajabi-checkout)

### Templates and tools

Adjacent pages that help turn the stack into an implementation plan.

[**Webflow + Stripe Checkout**A ready-to-clone Plandalf _checkout_ _template_ designed for _Webflow_ sites paying via _Stripe_.](https://plandalf.com/templates/webflow-stripe-checkout)[**Writers & creators**Drop a _buy button_ inside the post. Sell the upgrade in the same scroll.](https://plandalf.com/products/checkouts)

## Operational Recipes

These are the practical recipes a builder usually needs after the [checkout](https://plandalf.com/products/checkouts/hosted-checkout) opens. They are intentionally [product](https://plandalf.com/products/checkouts)\-level: the [SDK](https://plandalf.com/docs/sdk) docs can own function names, while this page explains the [workflow](https://plandalf.com/workflows) you are trying to implement.

![The Numi offer editor automation tab showing sequence controls beside the checkout canvas.](https://plandalf.com/images/features/automation/offer-editor-automation-tab-product.png)

[Automation](https://plandalf.com/products/automations/purchase-automations) is configured beside the [offer](https://plandalf.com/products/checkouts), so purchase-triggered [workflows](https://plandalf.com/workflows) stay attached to the buying surface.

### Grant access after purchase

**Trigger:** [Checkout](https://plandalf.com/products/checkouts/hosted-checkout) completed

**Action:** Mark the workspace, account, seat, course, [template](https://plandalf.com/templates), or [API](https://plandalf.com/products/automations/webhooks) plan as active in your [product](https://plandalf.com/products/checkouts) database.

[Webhooks](https://plandalf.com/docs/api/webhooks)[SDK events](https://plandalf.com/docs/sdk/events)[Feature gates](https://plandalf.com/products/checkouts)

![The Numi offer invoices page showing invoice status, customer, amount, and line item information.](https://plandalf.com/images/stacks/api-first/numi-offer-invoices.png)

[Invoices](https://plandalf.com/products/checkouts/invoices) preserve the commercial record after [checkout](https://plandalf.com/products/checkouts/hosted-checkout), including line items and status.

### Send transactional receipts separately from lifecycle email

**Trigger:** [Invoice](https://plandalf.com/products/checkouts/invoices) or purchase recorded

**Action:** [Postmark](https://plandalf.com/platforms/postmark) handles receipts, while lifecycle tools handle onboarding and expansion.

[Invoices](https://plandalf.com/products/checkouts/invoices)[Emailing invoices](https://plandalf.com/products/checkouts/invoices)[Postmark](https://plandalf.com/platforms/postmark)[Customer.io](https://plandalf.com/platforms/customer-io)

![The Numi sequences screen showing automated workflow configuration.](https://plandalf.com/images/features/automation/sequences-desktop.jpg)

[Sequences](https://plandalf.com/products/automations) turn the [purchase event](https://plandalf.com/docs/api/webhooks) into onboarding, fulfilment, alerts, and lifecycle follow-up.

### Start a [customer](https://plandalf.com/docs/sdk/identity) lifecycle [sequence](https://plandalf.com/products/automations)

**Trigger:** [Purchase event](https://plandalf.com/docs/api/webhooks) carries [product](https://plandalf.com/products/checkouts), [price](https://plandalf.com/products/checkouts/payment-options), [offer](https://plandalf.com/products/checkouts), [buyer](https://plandalf.com/docs/sdk/identity), and [coupon](https://plandalf.com/products/checkouts/coupons) context

**Action:** Send onboarding, activation, renewal, save-[offer](https://plandalf.com/products/checkouts), or expansion messages without treating the [checkout](https://plandalf.com/products/checkouts/hosted-checkout) as a generic form submit.

[Sequences](https://plandalf.com/products/automations)[Automations](https://plandalf.com/products/automations)[Coupons](https://plandalf.com/products/checkouts/coupons)[Postmark](https://plandalf.com/platforms/postmark)

![The Numi offer invoices records view showing customer invoice rows and payment status.](https://plandalf.com/images/features/invoices/offer-invoices-records-product.png)

[Invoice](https://plandalf.com/products/checkouts/invoices) records preserve the [buyer](https://plandalf.com/docs/sdk/identity), line item, [payment state](https://plandalf.com/products/checkouts/payment-options), and support context after purchase.

### Keep support and finance records useful

**Trigger:** [Invoice](https://plandalf.com/products/checkouts/invoices) created or [payment state](https://plandalf.com/products/checkouts/payment-options) changes

**Action:** Store [invoice](https://plandalf.com/products/checkouts/invoices) identifiers, line items, [tax](https://plandalf.com/platforms/tax) context, and [customer](https://plandalf.com/docs/sdk/identity) fields so refunds, support questions, and reporting have a durable record.

[Custom invoices](https://plandalf.com/products/checkouts/invoices)[PDF invoices](https://plandalf.com/products/checkouts/invoices)[TaxJar](https://plandalf.com/platforms/taxjar)[Avalara](https://plandalf.com/platforms/avalara)

## Hand Off To SDK Docs

This stack resource should not become the [SDK](https://plandalf.com/docs/sdk) reference. The [SDK](https://plandalf.com/docs/sdk) docs should own method signatures, auth headers, payload examples, error states, and versioned install instructions. Link to them when a builder is ready to implement.

**Future docs handoff**Use this page to choose the [integration](https://plandalf.com/integrations) shape. Use the [React SDK docs](https://plandalf.com/docs/sdk/react) for browser methods, protected [API](https://plandalf.com/products/automations/webhooks) routes, [webhooks](https://plandalf.com/docs/api/webhooks), and copy-paste examples.

![The Numi Developer API documentation with sidebar navigation and SDK method reference.](https://plandalf.com/images/stacks/api-first/numi-api-docs.png)

The dedicated docs surface owns exact [SDK](https://plandalf.com/docs/sdk) method reference. This stack page stays focused on what to build and where each responsibility lives.

## Builder Checklist

Before shipping the [integration](https://plandalf.com/integrations), verify these decisions. If one is unclear, the [checkout](https://plandalf.com/products/checkouts/hosted-checkout) may open, but the business [workflow](https://plandalf.com/workflows) after purchase will still be brittle.

`01`**[Offer selected](https://plandalf.com/products/checkouts)**Every buying moment points to a clear [offer](https://plandalf.com/products/checkouts), not an improvised [payment](https://plandalf.com/products/checkouts/payment-options) link.

`02`**[Identity mapped](https://plandalf.com/docs/sdk/identity)**Your [product](https://plandalf.com/products/checkouts) can reconcile the [buyer](https://plandalf.com/docs/sdk/identity), [customer](https://plandalf.com/docs/sdk/identity), workspace, account, or entitlement after purchase.

`03`**[Event path chosen](https://plandalf.com/docs/api/webhooks)**Fulfilment starts from a [purchase event](https://plandalf.com/docs/api/webhooks) or [sequence](https://plandalf.com/products/automations), not from a front-end success screen alone.

`04`**[Records preserved](https://plandalf.com/products/checkouts/invoices)**[Invoices](https://plandalf.com/products/checkouts/invoices), line items, [payment state](https://plandalf.com/products/checkouts/payment-options), and [customer](https://plandalf.com/docs/sdk/identity) fields are available for support and reporting.

## Next Steps

### [Developer Webhook Stack](https://plandalf.com/stacks/developer-webhook-stack)

Move from embedded [checkout](https://plandalf.com/products/checkouts/hosted-checkout) into custom APIs, [webhooks](https://plandalf.com/docs/api/webhooks), [SDK](https://plandalf.com/docs/sdk) [events](https://plandalf.com/docs/api/webhooks), and fulfilment services.

[Webhooks](https://plandalf.com/docs/api/webhooks)[SDK events](https://plandalf.com/docs/sdk/events)[API reference](https://plandalf.com/docs/api/reference)

### [Invoice Records Ops Stack](https://plandalf.com/stacks/invoice-records-ops)

Turn purchases into [invoices](https://plandalf.com/products/checkouts/invoices), records, line items, receipts, support context, and reporting.

[Invoices](https://plandalf.com/products/checkouts/invoices)[PDF invoices](https://plandalf.com/products/checkouts/invoices)[Emailing invoices](https://plandalf.com/products/checkouts/invoices)

### [Global SaaS Stack](https://plandalf.com/stacks/tax-compliant-saas)

Add [tax](https://plandalf.com/platforms/tax) decisions, [Stripe](https://plandalf.com/platforms/stripe), [PayPal](https://plandalf.com/platforms/paypal), [TaxJar](https://plandalf.com/platforms/taxjar), [Avalara](https://plandalf.com/platforms/avalara), and [payment options](https://plandalf.com/products/checkouts/payment-options) to a software [checkout](https://plandalf.com/products/checkouts/hosted-checkout).

[Tax](https://plandalf.com/platforms/tax)[TaxJar](https://plandalf.com/platforms/taxjar)[Avalara](https://plandalf.com/platforms/avalara)

### [Checkout Optimization Lab](https://plandalf.com/stacks/checkout-optimization-lab)

Test [checkout templates](https://plandalf.com/templates), [coupons](https://plandalf.com/products/checkouts/coupons), [order bumps](https://plandalf.com/products/checkouts/order-bumps), [upsells](https://plandalf.com/products/checkouts/upsells), [save offers](https://plandalf.com/docs/offers/save-offers), and conversion controls.

[Checkout templates](https://plandalf.com/templates)[Coupons](https://plandalf.com/products/checkouts/coupons)[Upsells](https://plandalf.com/products/checkouts/upsells)

### [Pricing Packaging Lab](https://plandalf.com/stacks/pricing-packaging-lab)

Work through [products](https://plandalf.com/products/checkouts), [prices](https://plandalf.com/products/checkouts/payment-options), packages, subscriptions, and [offer](https://plandalf.com/products/checkouts) structure before implementation.

[Products](https://plandalf.com/products/checkouts)[Prices](https://plandalf.com/products/checkouts/payment-options)[Pricing docs](https://plandalf.com/docs/offers/pricing)

### [Coupon Deadline Funnel](https://plandalf.com/stacks/coupon-deadline-funnel)

Connect [coupons](https://plandalf.com/products/checkouts/coupons), Timers, [checkout](https://plandalf.com/products/checkouts/hosted-checkout), lifecycle messages, and urgency-backed follow-up.

[Promos](https://plandalf.com/products/promos)[Coupons](https://plandalf.com/products/checkouts/coupons)[Sequences](https://plandalf.com/products/automations)

### [Substack Shop](https://plandalf.com/stacks/substack-shop)

Sell a [template](https://plandalf.com/templates), report, workshop, membership, or paid download from a Substack post while Plandalf owns the [offer](https://plandalf.com/products/checkouts), [checkout](https://plandalf.com/products/checkouts/hosted-checkout), [invoice](https://plandalf.com/products/checkouts/invoices), and [purchase event](https://plandalf.com/docs/api/webhooks).

[Stripe](https://plandalf.com/platforms/stripe)[Buy button](https://plandalf.com/products/checkouts/hosted-checkout)[Payment options](https://plandalf.com/products/checkouts/payment-options)[Purchase automations](https://plandalf.com/products/automations/purchase-automations)

### [The Indie SaaS](https://plandalf.com/stacks/indie-saas)

Run the entire trial-to-paid lifecycle without writing a single email [template](https://plandalf.com/templates) in code.

[Stripe](https://plandalf.com/platforms/stripe)[Customer.io](https://plandalf.com/platforms/customer-io)[Modality](https://plandalf.com/products/checkouts/hosted-checkout)[Preview sessions](https://plandalf.com/products/checkouts/sales-flows)[Test sessions](https://plandalf.com/products/checkouts/sales-flows)

### Automation sequences

[**Purchase event webhook fanout**Fan a single purchase event out to custom APIs, SDK-built apps, email systems, analytics, and fulfillment services.](https://plandalf.com/products/automations)[**Checkout started to abandonment recovery**Recover a checkout that opened but did not complete by sending the buyer and offer context to the email or automation tool.](https://plandalf.com/products/automations)

### Templates

[**Webflow + Stripe Checkout**A ready-to-clone Plandalf checkout template designed for Webflow sites paying via Stripe.](https://plandalf.com/templates/webflow-stripe-checkout)

### Use cases

[**Writers & creators**Drop a buy button inside the post. Sell the upgrade in the same scroll.](https://plandalf.com/products/checkouts)[**Career coaches & advisors**Sell sessions, packages, and cohort programs on a checkout that matches your coaching practice.](https://plandalf.com/products/checkouts)[**Growth & checkout teams**When the checkout is the product. A surface designed to convert, not configure.](https://plandalf.com/products/checkouts)[**Event organizers**Ticket tiers, early-bird timers, group rates, without renting a ticketing platform that owns your audience.](https://plandalf.com/products/checkouts)[**Studios, coaches, trainers**Sell memberships, class packs, and drops without renting another membership app every month.](https://plandalf.com/products/checkouts)

### Features and docs

[**Offers product**Checkout pages, embedded offers, products, prices, coupons, bumps, upsells, and invoices.](https://plandalf.com/products/checkouts)[**Automations product**Purchase-triggered workflows for CRM, email, fulfilment, records, and handoff.](https://plandalf.com/products/automations)[**Sequences**Events that fire after checkout, payment, subscription, and lifecycle changes.](https://plandalf.com/products/automations)[**Payment integrations**Stripe, PayPal, payment options, invoices, and payment event routing.](https://plandalf.com/platforms/payment)[**Offers docs**How Offers packages products, prices, checkout layouts, and conversion elements.](https://plandalf.com/docs/offers/overview)[**Hosted checkout docs**Hosted and embedded checkout setup, test sessions, and preview sessions.](https://plandalf.com/docs/offers/hosted-checkout)[**Stripe docs**How Stripe connects and what events Plandalf listens for.](https://plandalf.com/docs/platforms/stripe)[**Webhook docs**Checkout, payment, and subscription events for custom automations.](https://plandalf.com/docs/api/webhooks)[**API**Developer/API](https://plandalf.com/products/automations/webhooks)[**SDK**Developer/API](https://plandalf.com/docs/sdk)[**Integrations**Automation](https://plandalf.com/integrations)[**Automation**Automation](https://plandalf.com/products/automations/purchase-automations)
