Skip to content

Email Notifications ​

FundlyHub sends transactional email — receipts, campaign status changes, payout notices and so on — on its own schedule. Mail is queued and delivered in the background, usually within a few minutes of the event that caused it.

There is no public send endpoint

POST /emails/send does not exist. Application email is sent by FundlyHub when the event behind it happens — there is no route that lets a caller pick a template, a recipient and a payload. The way to trigger mail over HTTP is POST /donations/receipt/email: a donor mailing their own receipt, where every figure is read from the donation, not from the request. Tip receipts work the same way with POST /platform/tips/:id/receipt/email.

What FundlyHub sends ​

Each email is rendered in the recipient's language when a translation exists, and in English otherwise. The kinds of mail an account can receive include:

AreaExamples
DonationsThe donor's receipt; "you received a donation" for the creator; a reminder about an unfinished checkout; a refund notice
Platform tipsTip receipts and reminders
AmbassadorsInvitations, acceptance, and requests to promote a campaign
CampaignsPublished, pending review, rejected, goal reached, milestone reached, and updates on campaigns you follow or gave to
Payouts & fundsPayout initiated, paid or failed; payouts enabled or action required; funds released
OrganizationsApproved, rejected, suspended, reinstated
Accounts & digestsPassword reset, new follower, the weekly creator digest, a failed subscription payment, a fresh unsubscribe link

Choosing what you receive ​

Most mail is governed by the account's notify_* switches — GET /users/:id/preferences and PUT /users/:id/preferences; see Account (/me).

Every non-transactional email also carries a signed unsubscribe link that works without signing in, including for guest donors with no account:

EndpointPurpose
GET /unsubscribe/previewWhich (masked) address and which scope a link would silence. Changes nothing.
POST /unsubscribeStop mail for the link's scope, or for everything with all: true.
POST /unsubscribe/resubscribeUndo it.
POST /unsubscribe/requestMail a fresh unsubscribe link to an address. Always answers the same, so it cannot be used to test whether an address is known.

An unsubscribe applies to the email address, not the account, so a preference switch can read "on" while mail to that address is suppressed. The preferences response reports those scopes in suppressed_scopes.

Transactional mail — receipts and the like — cannot be unsubscribed from.

Built with VitePress