Lutheran Indian Ministries — Home Developer Docs
Ad Attribution & ROI

Feathr Conversion Tracking

Meyer Partners runs LIM's Feathr display/retargeting ad campaigns. The ads are driving traffic, but we currently can't tell which donations came from people who saw an ad. This page documents the email thread, the conversion pixel Feathr provided, and exactly how to close the loop — on the current Squarespace site and on the new site.

Status: Pixel received — not yet installed Conversion ID: 6a0bb2f14647de16ae5b1ccb Owner: Gary (impl) · John (Feathr/GTM) · Angie (Blackbaud) · Robert (sponsor)

The one thing that matters: the conversion pixel must fire on the page a donor sees immediately after a successful gift, and it must pass the donation amount. Because the donation form is a Blackbaud embed, that confirmation page is the tricky part — see Section 4.

Update — 22 Jun 2026: The live Squarespace site already runs Google Tag Manager (GTM-TD3Z4XNG, installed by John/Meyer 10/6/2025). So the install path is through GTM, not raw Code Injection. The Blackbaud contact is Angie. See Sections 5–6. Tag spec: plan/feathr-gtm-tag-and-trigger-spec-22jun2026.md.

Angie's reply + form inspection — 22 Jun 2026: The form is the older Online Express (OLX), embedded via BBOX webforms (bbox.showForm('82adc758-…') / bbox-min.js) on /donate. OLX has no native GTM/GA and cannot auto-redirect — so Option A is dead. But the form renders inline in our page DOM, and its confirmation appears as #bboxdonation_divThanks — so we fire Feathr on /donate via a MutationObserver watching that element, capturing the amount from the form. No further Blackbaud changes needed from Angie. Only remaining blocker: the Feathr base pixel + account ID from John.

194,000
Ad impressions
655
Site visits
$1,700
Budget used
$2.64
Cost per click
1
Background — The Email Thread

Summary of the conversation that led to this work, oldest to newest:

Robert Heffle → Gary, John, JayleneApr 8, 2026

Just met with Meyer Partners. The Feathr ads are doing well and people are responding, but we can't tell if they give because of the ad they viewed. Gary mentioned he had ideas — connecting everyone.

Gary Ricke → RobertApr 8, 2026

Good news on performance. Because the Blackbaud donation form is embedded directly on our site at /donate, we're well positioned to track conversions. To close the loop we just need the donation "success" event reported back to Feathr. Asked John for the Feathr Conversion Pixel code; once received I'll embed it on the Thank-You/Confirmation step. If we can get a revenue-tracking version, we can pass the exact gift amount and see real-time ROAS.

John Payne (Meyer Partners) → GaryMay 19, 2026

Got the conversion pixel. Shared Feathr's developer install guide:
help.feathr.co — Conversion Pixel Developer Guide

Robert Heffle → Gary, JohnMay 28, 2026

Campaign recap: 194,000 people saw an LIM ad, 655 visited the site, $1,700 spent at $2.64/click. Per John, there's a way to capture how many of those 655 gave. Asked Gary & John to connect and get this closed out.

Check-in call — Gary, Jaylene, RobertaJun 8, 2026

Reviewed this doc on the call. Settled the plan: when a gift completes, Blackbaud sends the donor to a thank-you page we control, and the Feathr pixel fires there (Option A). Identified Angie as the most knowledgeable Blackbaud admin (she holds the contract and pulls the reports; a donor-relations specialist is yet to be hired). Blackbaud is mid-upgrade and is taking credit-card gifts, but Jaylene wasn't sure how they flow through — Angie to confirm. Gary to send a separate, plain-language email of exactly what's needed on the Blackbaud side. This conversion data also feeds Robert's August board fundraising report.

Where it stands (22 Jun 2026): Conversion ID delivered (6a0bb2f14647de16ae5b1ccb, see LIM Conversion Pixel.txt). The site already has GTM, so install goes through the container. Two emails drafted and ready to send — plan/feathr-email-to-john-meyer-22jun2026.txt (Feathr account ID + GTM status) and plan/feathr-email-to-jaylene-blackbaud-22jun2026.txt (Blackbaud redirect + amount param). Still not installed; the GTM tag is specced and waiting on those two answers.

2
How Feathr Conversion Tracking Works

Feathr attribution has two parts. Both must be present for a conversion to be counted and attributed to an ad.

Part A — The base Feathr pixel (site-wide)

A small loader script that defines the global feathr() function and tracks page views. It belongs on every page of the site. Meyer Partners / Feathr supply this (it may already be live on the Squarespace site, since the ads are retargeting visitors — that retargeting requires the base pixel to be present). Confirm it before doing anything else.

JavaScript — base pixel (representative)
<script>
  // Feathr Super Pixel — get the exact snippet from Feathr / Meyer Partners.
  // This defines the global feathr() function used below.
  (function(f,e,a,t,h,r){
    f.feathr=h=function(){h.q.push(arguments)};h.q=[];
    r=e.createElement(a);r.async=1;r.src=t;
    e.getElementsByTagName('head')[0].appendChild(r);
  })(window,document,'script','https://cdn.feathr.co/js/feathr.min.js');

  feathr('init', '<YOUR_FEATHR_ACCOUNT_ID>');
  feathr('sprinkle');  // fires the page-view breadcrumb
</script>

Part B — The conversion call (donation confirmation only)

This is the snippet John delivered. It fires once, on the donation "success / thank you" page, and reports the gift back to Feathr — with the dollar amount for ROAS. This is the exact code from LIM Conversion Pixel.txt:

JavaScript — conversion pixel (LIM)
// Provide your own means of deriving the gift amount.
let shoppingCartValue = getShoppingCartValue();

feathr(
  'convert',
  '6a0bb2f14647de16ae5b1ccb',   // LIM conversion ID
  {
    amount:   shoppingCartValue,   // number, required
    currency: 'USD',           // optional, defaults to 'USD'
    category: 'Conversion'     // optional, defaults to 'Conversion'
  }
);

getShoppingCartValue() is a placeholder — we have to supply the real donation amount. How we get it depends on the confirmation method (Section 4).

3
The Catch — A Blackbaud-Hosted Confirmation

The donation form is a Blackbaud embed. After a successful gift, Blackbaud typically shows its own confirmation screen, rendered inside Blackbaud's iframe / on a Blackbaud-hosted domain. We cannot inject our JavaScript into that page. That's the whole reason this isn't a one-line copy-paste.

So the pixel can't simply "sit on the thank-you page." We need a confirmation surface we control, or an event from Blackbaud we can hook. Section 4 covers both, in order of preference.

Resolved 22 Jun: for this form it turned out better than feared — the OLX/BBOX donation form and its confirmation render inline in our /donate DOM (only the card-entry Checkout step is a secure iframe). So we can run our own JS on the page and fire on the inline confirmation (#bboxdonation_divThanks). See the green note at the top and the tag spec.

4
Implementation Options

Custom redirect to a LIM thank-you page

In the Blackbaud form settings, set a confirmation redirect URL to a thank-you page we own (e.g. /thank-you). Blackbaud appends the gift details to that URL as query parameters; we read the amount from the URL and fire the conversion. This is the cleanest, most reliable approach.

JavaScript — on /thank-you
<script>
  // Blackbaud passes the gift amount on the redirect, e.g. ?amount=50.00
  var params = new URLSearchParams(window.location.search);
  var amount = parseFloat(params.get('amount')) || 0;

  feathr('convert', '6a0bb2f14647de16ae5b1ccb', {
    amount: amount,
    currency: 'USD',
    category: 'Donation'
  });
</script>
  • Confirm the exact parameter name Blackbaud sends (it may be amount, TransactionAmount, etc.) and adjust the code to match.
  • Make sure the base Feathr pixel (Part A) also loads on /thank-you, or feathr() won't be defined.
  • Guard against double-counting on refresh (e.g. set a sessionStorage flag once fired).

Option B

Blackbaud BBOX completion event

If we use the Blackbaud Checkout (BBOX) script and keep the donor on our page, BBOX emits client-side events. Fire the conversion from the success callback and read the amount from the event payload. This avoids a redirect but depends on the embed exposing a usable event.

JavaScript — BBOX callback (verify event API)
// Pseudocode — confirm the actual BBOX event/payload in Blackbaud docs.
bbox.onComplete(function(result){
  feathr('convert', '6a0bb2f14647de16ae5b1ccb', {
    amount: result.amount,
    currency: 'USD',
    category: 'Donation'
  });
});

See the Blackbaud integration doc for how the BBOX form is wired on the new site.


Option C — fallback

Fire on submit click (no amount accuracy)

If neither a redirect nor an event is available, fire the conversion when the donor clicks "Give Now." This counts the conversion but cannot guarantee the gift actually completed and the amount may be the selected rather than charged value. Use only as a last resort — it inflates the count and weakens ROAS data.

5
Current Squarespace Site vs. New Site

Current — Squarespace (live)

This is where the ads point today, so it's the priority. The site already runs GTM (GTM-TD3Z4XNG) — so add both the base pixel (if not already a GTM tag) and the conversion tag inside GTM, not via Code Injection. Conversion fires on the /thank-you redirect (Option A). Full tag + trigger spec: plan/feathr-gtm-tag-and-trigger-spec-22jun2026.md.

New site (this repo)

Same two parts. Add the base pixel before </head> on every page; add the conversion call to the thank-you page / BBOX callback. Keep the same conversion ID so reporting is continuous across the migration.

Do both sites with the same conversion ID. Feathr attributes by ID, not by URL, so a single ID across both sites gives Meyer Partners one continuous conversion total through the cutover.

6
Next Steps — Action Checklist
  • 1.
    Send the John/Meyer emailSENT 22 Jun 2026, in the "Re: Feathr Ads LIM" thread. Asked: is the base pixel already in GTM, what's the Feathr account ID, is 6a0bb2f14647de16ae5b1ccb the conversion (not campaign) ID. Follow-up SENT 6 Jul 2026 — a simpler 30-second version (two yes/no questions, or offer him container access so Gary sets it up); draft at plan/feathr-followup-to-john-2026-07-06.html. Awaiting reply.Gary → John
  • 2.
    Send the Blackbaud emailSENT 22 Jun 2026 to Jaylene + Angie. Guides Angie to Settings → Google tracking + the redirect option, with Blackbaud doc links. Awaiting reply: which form, is Google tracking on, and can it redirect to /thank-you with the amount.Gary → Jaylene / Angie
  • 3.
    Hand John the conversion tag + trigger to publish in GTM per plan/feathr-gtm-tag-and-trigger-spec-22jun2026.md once the account ID + amount param are known (Gary supplies the tag, John publishes — he owns the container). Adjust the param name if it isn't amount.Gary → John
  • 4.
    Blackbaud confirmation method — RESOLVED 22 Jun. OLX can't redirect; instead fire on /donate when the inline BBOX confirmation (#bboxdonation_divThanks) appears. No Blackbaud-side change needed. Verify the amount-field selector in GTM Preview during the test gift.Gary
  • 5.
    Test end-to-end in GTM Preview, then with a real (or $1 test) gift. Confirm the conversion + amount appear in the Feathr dashboard and it doesn't double-fire on refresh.Gary / John
  • 6.
    Report ROAS back to Robert — of the 655 visitors, how many gave and how much, attributed to the ads. Fold into the August board fundraising report.Gary → Robert
  • 7.
    Replicate on the new site at migration using the same conversion ID (build thank-you.html with the snippet from the spec doc).Gary
7
Open Questions to Resolve
  • For John / Feathr (emailed 22 Jun): What is the Feathr account/init ID, and is the base pixel already firing via GTM GTM-TD3Z4XNG? Is 6a0bb2f14647de16ae5b1ccb a conversion-specific ID or the campaign ID?
  • Angie / Blackbaud — ANSWERED 22 Jun: form is Online Express (OLX) via BBOX; no native GTM/GA; cannot auto-redirect (only a manual link in the confirmation). Path is now the inline #bboxdonation_divThanks MutationObserver on /donate — no Blackbaud change required.
  • Resolved Jun 8 — confirmation method: Option A (LIM-controlled /thank-you redirect).
  • Resolved Jun 8 — Blackbaud owner: Angie (via Jaylene).
  • For Robert: What reporting cadence does Meyer Partners want once tracking is live (one-time recap vs. ongoing ROAS)? Initial recap targets the August board fundraising report.

← Back to Site  ·  Blackbaud Integration Doc  ·  LIM Developer Documentation  ·  Restricted Access