Angie reported that donors stopped receiving emailed tax receipts, and staff stopped receiving copies, from 15 Aug 2026. She confirmed it with a test gift on the live site. She asked whether it coincided with the new site going live.
It is not the website. donate.html has not changed since 31 Jul;
the BBOX form ID 82adc758-cd1c-42f0-981c-36c79eaabd08 has not changed since 6 Jul; no commit between
10–21 Aug touches bbox at all. Structurally it could not be: BBOX renders Blackbaud's form and
Blackbaud's servers send the acknowledgement. The embedding page has no role in delivery.
What the DNS actually says (queried 25 Aug against 8.8.8.8):
SPF "v=spf1 include:spf.protection.outlook.com -all" ← Microsoft only, hard fail, no Blackbaud DKIM selector1/selector2 → …onmicrosoft.com ← Microsoft only; no Blackbaud selector DMARC "v=DMARC1; p=none; rua=mailto:DMARC@…"
So Blackbaud is not authorised to send as lutheranindianministries.org and never has been
— the SPF is identical to the pre-cutover capture in plan/dns-cutover-checklist-2026-08-03.md, so the
cutover did not cause it. The gap is long-standing; what changed is enforcement. Blackbaud's documentation indicates they
now decline to send for domains without DKIM configured (reported enforcement from 1 Jul 2026). That fits a hard stop on a
fixed date with nothing changed in Blackbaud.
Fix: Angie requests the per-account DKIM records and the SPF include from Blackbaud support
(their KB gives +include:outboundmail.blackbaud.net for Online Express); add them at Network Solutions
alongside the Microsoft records — do not replace the existing SPF, merge into it; one SPF record only. Then make
a real test gift and confirm the receipt lands, and ask Blackbaud to re-send acknowledgements for gifts since 15 Aug.
This guide explains how to replace the current Netlify form logic with Blackbaud's BBOX (Blackbaud Checkout) script so that donations sync directly to Raiser's Edge / Blackbaud CRM.
Before you start: Log into your Blackbaud Merchant Services or Raiser's Edge portal and add the production domain to the Approved Domains list. The form will silently fail on unapproved domains.
Replaces the internal fields of the current modal with the official Blackbaud form. Ensures 100% PCI compliance and connects directly to your Blackbaud merchant account. Recommended for most deployments.
Step 1 — Update the Modal HTML in index.htmlFind the <div id="m-donate"> section and replace the <form> and its contents with the Blackbaud root div.
Remove:
<form id="don-form" ...>
<!-- all form fields -->
</form>
Replace with:
<div id="bbox-root"></div>
Add this script just before the closing </body> tag in index.html:
<script type="text/javascript">
window.bboxInit = function () {
// Replace with your actual Blackbaud Form ID
bbox.showForm('82adc758-cd1c-42f0-981c-36c79eaabd08');
};
(function () {
var e = document.createElement('script');
e.async = true;
e.src = 'https://bbox.blackbaudhosting.com/webforms/bbox-min.js';
document.getElementsByTagName('head')[0].appendChild(e);
}());
</script>
Keeps the custom yellow preset-amount buttons and frequency toggle, and only hands off to Blackbaud when the user clicks "Give Now." The selected amount and frequency are passed as parameters.
Update donSubmit() in the script block of index.htmlfunction donSubmit(e) {
e.preventDefault();
const amount = document.getElementById('don-amt-val').value;
const frequency = document.getElementById('don-freq-val').value;
// frequency value is 'one-time' or 'monthly'
bbox.showForm({
formId: '82adc758-cd1c-42f0-981c-36c79eaabd08',
amount: amount,
recurring: frequency === 'monthly'
});
}
You will still need to add the Blackbaud loader script from Option 1 Step 2 for this approach to work.
You want the simplest, most compliant path and are OK with Blackbaud rendering the form fields.
You want to preserve the custom preset amounts and frequency toggle before handing off to Blackbaud's payment screen.
← Back to Site · LIM Developer Documentation · Restricted Access