Fundraising progress, embedded anywhere
Your donation form collects the gift. These widgets show the momentum —
campaign thermometers, a full campaign block with a live donor feed, and
event capacity bars. Drop any of them onto your own site with a
one-line <script>
tag. Every widget below updates in real time over SSE.
One campaign, three thermometer styles
Fragment widget. A thermometer has no page of its own, so embedding is the only way to show it — unlike a giving page, there is no link to share.
Pick the shape that fits the placement. All three read the same
FundraisingCampaign
data and update live as gifts arrive — only the presentation differs.
Set the style once in the campaign settings; the embed follows.
Annual Giving 2026
The compact default — a progress bar with raised / goal and donor count. Ideal inline above a donate button or in a sidebar.
Building Expansion (1:1 match)
The literal thermometer — mercury rises toward the goal. This capital campaign runs a 1:1 match, so the widget doubles as a match-urgency cue.
Ramadan Giving (goal exceeded)
A circular gauge that reads past 100% when a campaign overshoots — this one closed above goal, so the gauge shows the over-performance.
"250,000 meals" — your mission, embedded live
Fragment widget. Impact tiles have no page of their own — they exist to be embedded on a page you already have.
Thermometers show dollars toward a goal. This widget shows the outcome — meals served, families supported, volunteer hours, funds raised — as clean tiles you publish on your homepage. Turn a metric on, and it appears here; the numbers stay live, no code and no manual updates.
- Self-service. Pick which numbers go public from Settings → Impact Widgets. Nothing is public until you publish it.
- Aggregate-only. Just published totals — no donor names, no internal IDs, no PII ever leaves the tenant.
- Always live. Manual counters and platform metrics both refresh automatically — the tile updates without a redeploy.
Live embed of the real muin-demo impact metrics — aggregate totals, published from the tenant's Impact Widgets settings.
Thermometer + donate + a live donor feed
Fragment widget. The campaign block is scoped to one campaign and has no standalone page — embedding is how it reaches donors.
When you want the whole story in one embed: the progress thermometer, a donate button, and a recent-donor feed that streams new gifts in real time over Server-Sent Events. No refresh — a gift made on the donation page appears here within a second.
- Real-time. Connects to the campaign SSE stream — the donor list and thermometer both animate on each new gift.
- Match-aware. This campaign runs a 1:1 match, surfaced in the copy so donors know their gift doubles.
- Localized. The embed renders in English,
Spanish, or Arabic (RTL) via
?locale=.
Live embed of the real muin-demo campaign. Open a donation form in another tab and watch a new gift appear in the donor feed.
"48 of 60 spots" — capacity as urgency
Fragment widget. This is the event progress bar, not the event page — it has no address of its own. The full event page (with signup) is a full surface you can also share as a link.
The same progress mechanic, applied to seats instead of dollars. Drop it beside an event registration form to show how full an event is filling — a clean nudge for the last open spots. Reads a volunteer event's registered count against its capacity.
Live embed of a real muin-demo volunteer event.
More embed & public options
Zakat calculators, donate blocks, donation forms in seven placement shapes, a public events calendar, and full donor/vendor/board portals — every public surface Muin publishes.