Customer email delivery
Flint emails your buyers about receipts, deliveries, subscriptions, failed payments, Returns, and invoices. You can take any of those over.
This is one setting per family, not one setting for everything. Most merchants who want their own receipts are happy to let Flint keep sending dunning, and there is no reason to make that an all-or-nothing trade.
The six families#
Each field on customer_email_delivery takes flint_sends, the default, or merchant_sends.
curl -X PATCH https://api.withflintpay.com/v1/settings \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_email_delivery": {
"order_receipts": "merchant_sends",
"fulfillment_updates": "merchant_sends"
}
}'
| Family | Flint stops sending |
|---|---|
order_receipts | Purchase receipts |
fulfillment_updates | Shipment and delivery notices |
subscription_lifecycle | Renewals, pauses, cancellations, trial endings |
dunning | Failed payment and past-due notices |
returns | Return approvals, labels, and resolutions |
invoices | Invoice delivery and reminders |
customer_email_delivery is merchant-scoped. Setting it at an organization, location, or device scope returns CUSTOMER_SETTINGS_REQUIRE_MERCHANT_SCOPE.
The events keep firing#
Turning a family off stops Flint's mail and nothing else. The webhook events behind it are unchanged, which is the whole mechanism: you subscribe to what Flint would have written about, and write it yourself.
| Family | Subscribe to |
|---|---|
order_receipts | order.paid |
fulfillment_updates | order.fulfillment.status_changed, order.fulfillment.event.created, order.fulfillment.shipment.created, order.fulfillment.shipment.updated, order.fulfillment.package.created, order.fulfillment.package.updated |
subscription_lifecycle | subscription.created, subscription.activated, subscription.canceled, subscription.paused, subscription.resumed, subscription.payment_succeeded |
dunning | subscription.payment_failed, subscription.past_due |
returns | return.created, return.updated, return.decision_recorded, return.canceled, return.completed, return.reopened |
invoices | invoice.created, invoice.opened, invoice.sent, invoice.updated, invoice.payment_failed, invoice.paid, invoice.voided |
Not every event in a family deserves an email. fulfillment_updates fires six ways because a parcel changes state more often than a buyer wants to hear about it; Flint's own version does not send one message per event either. Pick the transitions your buyers care about. See choosing the right event.
Set up delivery before you switch
Between flipping a family to merchant_sends and your handler going live, that family sends nothing at all. There is no queue and no catch-up.
Subscribe, verify you are receiving the events, and confirm your own send works. Then flip the setting.
Templates#
Flint does not currently support editing its email templates.
branding controls how Flint's email looks: colors, typography, and your logo. To control what it says, set that family to merchant_sends and send it from the events above.
Account links still work#
Buyer email that Flint sends contains account links resolved at click time against your customer account settings. That is a separate decision from this one.
If you only want Flint's email to point at your own account pages, set customer_account.mode and leave customer_email_delivery alone. Repointing links is not the same as owning the mail, and it is much less work.
Next steps#
- Webhooks for signatures, retries, and exactly-once processing
- Webhook events catalog for every payload above
- Customer accounts to repoint links without taking over delivery
