How-To Guides6 min read

How to Add a Donation Form to Shopify

Shopify is built to sell products, not to take donations. If you run a nonprofit or social enterprise on it, you have a few native options that mostly disappoint and one that actually gives you a real donation form. Here is the honest map.

KindLumen TeamJuly 15, 2025Updated July 15, 2025

Quick answer

  • Shopify natively treats a donation as a product or a checkout round-up.
  • Those options are limited: no custom amounts, no recurring, no records.
  • Embedding a real donation form on a page is the flexible route.

You run a Shopify store. Maybe you are a nonprofit selling merch to fund the mission, maybe a social enterprise that wants to let customers chip in beyond their purchase. Either way you go looking for the "donations" feature and discover Shopify does not really have one.

That is not an oversight, it is what Shopify is. It is an ecommerce platform. Its entire model is products, carts, and checkout. A donation, with a custom amount and maybe a monthly option, does not fit that mold cleanly, so the native workarounds all bend a product-shaped tool into a donation-shaped job.

There are a few ways to take donations on Shopify, and they are genuinely not equal. Here is what each one actually does, where it breaks, and how to get a real donation form onto your store when you need one.

website planning notes and campaign materials on a desk for How to Add a Donation Form to Shopify

The native options (and where they fall short)

Shopify gives you two broad ways to take money that look like donations if you squint.

The "donation product"

You create a product called "Donation" and either set a fixed price or use a few price variants (10, 25, 50 dollars). Customers add it to the cart and check out like any other item. It works, and it costs nothing extra. But it inherits every limit of being a product: no true custom amount field, the donor goes through a cart-and-checkout flow built for shipping physical goods, and there is no native recurring option. It also lands in your order reports as a sale, not a gift, which your bookkeeper will eventually have feelings about.

Round-up apps at checkout

These apps add a "round up to the nearest dollar for charity" or "add 2 dollars to support our cause" prompt during checkout. They are excellent for what they are, capturing small add-on gifts from people already buying. But they only fire at checkout, so a visitor who is not buying anything has no way to give, and the amounts are small by design.

Both are fine as supplements. Neither is a real donation form, and neither gives you a clean donor record or recurring giving.

The approaches, side by side

Here is the honest comparison so you can match the method to what you actually need.

ApproachCustom amount?Recurring?Best for
Donation product (variants)No, fixed tiersNo (without extra apps)Quick "buy a donation" with merch
Checkout round-up appRound-up onlyNoSmall add-on gifts from buyers
Embedded donation form (on a page)YesYesA real, standalone "Donate" page
Stripe Payment Link buttonYesYes, but hosted/off-brandBare-minimum, do-not-care-about-design

If all you want is to let buyers toss in a few extra dollars, a round-up app is the right tool and you can stop reading. If you want a dedicated donate page where anyone can give any amount, optionally monthly, and you want the gift recorded as a donation, you want the embedded form. That is the rest of this guide.

Embedding a real donation form on a Shopify page

The flexible route is to put an actual donation form on a Shopify page, separate from the store checkout. Shopify lets you do this; you just need to know where the code goes. There are two main paths.

Path 1: a custom Liquid section or page

Shopify themes support custom Liquid, and most let you add a custom HTML/Liquid section to a page. You create a page (say, /pages/donate), drop in your donation tool's embed snippet, and the form renders there. On Online Store 2.0 themes you can add a "Custom Liquid" block through the theme editor without touching theme files directly, which is the cleanest way in.

Path 2: the page editor's HTML mode

For a simpler embed, open the page in the Shopify admin, switch the content editor to HTML mode (the </> button), and paste your snippet there. This is the fastest route for a single line of embed code, though the rich-text editor can occasionally mangle complex markup, so the Custom Liquid block is more reliable for anything beyond one tag.

Either way, the snippet comes from your donation tool, not from Shopify. You build and brand the form in that tool, copy the embed, and paste it in once.

Why bother, if a donation product "works"?

Fair question. If the donation product checks out and the money arrives, why add a separate form?

Because the product route quietly costs you the things that make donations work. There is no real custom amount, so a donor who wants to give 73 dollars cannot. There is no clean recurring option, which means you leave the most valuable kind of giving on the table, and recurring is where the real money is, as covered in adding recurring donations to your website. The donor goes through a shipping-oriented checkout that asks for an address it does not need. And every gift shows up as a sale, muddying your reporting and your receipts.

A purpose-built donation form fixes all of that, custom amounts, suggested tiers, a monthly toggle, a donation-flavored receipt, and a record that reads as a gift. It is the difference between bending Shopify into doing donations and just doing donations next to your Shopify store.

Keeping it on-brand and on-site

Whatever you embed, the goal is the same as anywhere else: the donor finishes giving on your store, on a form that looks like your store, with the money landing in your own account.

Watch out for embeds that are really redirects in disguise, a button that ships the donor off to a hosted page on someone else's domain undercuts the trust your store has built. An inline form that renders right on your /pages/donate page keeps everything coherent. KindLumen's embed works this way, it drops a branded, mobile-first form onto a Shopify page with one snippet, supports custom amounts and monthly giving, and routes funds to your own Stripe. You can see how the embed is structured on the features page.

One last practical note: test the donate page on a phone. A large share of Shopify traffic is mobile, and a donation form that overflows a small screen costs you exactly the gifts you set this up to capture.

Frequently asked questions

Does Shopify have a built-in donation feature?

Not really. Shopify is built around selling products, so the closest native options are creating a "donation product" with fixed price tiers or using a checkout round-up app. Neither offers true custom amounts, recurring giving, or a clean donor record, so most organizations embed a dedicated donation form for that.

How do I add a real donation form to a Shopify page?

Create a page like /pages/donate and add your donation tool’s embed snippet to it, either through a Custom Liquid block in the theme editor on Online Store 2.0 themes, or by switching the page content editor to HTML mode and pasting the snippet. The form comes from your donation tool, not from Shopify.

What is wrong with using a donation product?

It works for quick fixed-amount gifts, but it inherits product limits: no real custom amount, no native recurring option, a shipping-oriented checkout, and every gift recorded as a sale rather than a donation. For a dedicated donate page, an embedded donation form handles all of that properly.

Should I use a checkout round-up app or a donation form?

Both, if you can. A round-up app is great for capturing small add-on gifts from people already buying, but it only fires at checkout. An embedded donation form gives non-buyers a way to give any amount, optionally monthly. They serve different moments, so many stores run both.

Product links

Use the research, then choose the right donation setup.

Compare your options, then move into a donation setup your team can launch and maintain with confidence.

Related reading