Welcome Bonus Spend Tracker
An integration spec that watches your card transactions against an open welcome-bonus spend threshold and tells you, in plain dollars-per-day terms, whether you're actually on pace to earn it before…
Welcome-Bonus Spend Tracker
An integration spec that watches your card transactions against an open welcome-bonus spend threshold and tells you, in plain dollars-per-day terms, whether you're actually on pace to earn it before the clock runs out.
Date: 2026-08-25 Type: Integration Theme: Rewards Status: Idea
What it is
A design for a background service that sits between Plaid's transaction feed and a Google Sheet. You tell it which card, what the minimum-spend threshold is, and when the window closes; it pulls every posted purchase on that card, adds them up, and writes back a status — on pace, behind pace, earned, or missed — plus the exact daily spend you'd need for the rest of the window to still catch up.
Who it serves
Someone juggling more than one card-opening welcome bonus at once and trying to remember, three weeks in, whether the $5,000-in-90-days card is actually going to clear or whether they've been quietly under-spending on it while routing purchases elsewhere out of habit.
The money problem it addresses
Welcome bonuses are all-or-nothing: the Chase Sapphire Preferred currently pays 100,000 points after $5,000 in purchases within the first three months, and the Amex Gold pays up to 100,000 points after $8,000 within six — miss the threshold by even a dollar when the window closes and the bonus doesn't partially credit, it just doesn't happen. Nobody adds up their exact spend on a specific card every few days against a specific deadline; they eyeball it, assume they're fine because they're "spending a lot lately," and sometimes find out in month three that a slow month put them behind. This service does the arithmetic continuously instead of once, right before it's too late to fix.
How it works
- A Plaid
SYNC_UPDATES_AVAILABLEwebhook fires when a new transaction posts to a tracked account, and the service pulls it via/transactions/sync. - The service reads a
Bonusestab in a Google Sheet the user maintains — one row per open bonus, naming the card's account ID, the spend threshold, and the window's start and end dates. - For each tracked account, it sums positive transaction amounts inside the window to get cumulative spend, then compares the actual daily pace of that spend to the pace required to hit the threshold by the deadline.
- It writes the result to a
Progresstab: cumulative spend so far, days remaining, and a status ofON_PACE,BEHIND_PACE,EARNED, orMISSED. When behind, it also writes the exact daily spend needed for the rest of the window to still make it. - A failsafe daily sync covers any card that hasn't fired a webhook in 24 hours, so a dropped webhook delivery doesn't silently stall the tracker.
What's in this folder
README.md— this filecover-image.png— cover card image for the web appmetadata.md— workflow metadata sidecarintegration-spec.md— the full contract: systems, auth model, endpoint and payload shapes for Plaid and Google Sheets, the pace-calculation logic, error model, sequencing guarantees, and operational limitssequence.md— an on-pace walkthrough, a behind-pace walkthrough with the catch-up math, and two failure cases: a Plaid pagination interruption and a Google Sheets quota hitsample-request.json— an example/transactions/syncrequest against Plaidsample-response.json— the matching response, showing the transaction from the behind-pace scenario insequence.md
How to run / read it
Read integration-spec.md first for the full contract, then sequence.md for the call-by-call walkthrough of both the on-pace and behind-pace cases, then sample-request.json and sample-response.json together to see the exact payload shape.
Estimated impact
Worked from a real, current offer: the Chase Sapphire Preferred's 100,000-point bonus is worth about $2,050 at The Points Guy's August 2026 valuation of Chase Ultimate Rewards points (2.05 cents each). Miss the $5,000-in-three-months threshold and that entire $2,050 is forfeited — not prorated, not partially credited. Catching a behind-pace trend with even a month left to fix it, instead of finding out on day 89, is the difference between adjusting where you route routine spending and losing the bonus outright.
Good to know
This is a spend-tracking and pace-flagging tool, not a recommendation to open any specific card or chase any specific bonus — welcome-bonus terms, spend thresholds, and deadlines change and vary by issuer, and some issuers apply exclusions (cash advances, balance transfers, sometimes gift cards) that don't count toward the threshold even though they post as transactions. Always check your card's actual terms and conditions, not this tracker, for what counts. It also isn't a substitute for reading the fine print on annual fees or whether opening a new card affects your credit application strategy.
Sources
https://plaid.com/docs/api/products/transactions/—/transactions/syncrequest/response shape, sign convention, pagination, and error codeshttps://plaid.com/docs/transactions/webhooks/—SYNC_UPDATES_AVAILABLEwebhook behavior and Plaid's default sync frequencyhttps://developers.google.com/workspace/sheets/api/limits— Google Sheets API default read/write quotashttps://thepointsguy.com/credit-cards/amex-gold-sapphire-preferred-pairing-together/— current Chase Sapphire Preferred (100,000 points / $5,000 in 3 months) and Amex Gold (up to 100,000 points / $8,000 in 6 months) welcome-bonus termshttps://thepointsguy.com/loyalty-programs/monthly-valuations/— TPG's August 2026 point valuations, including Chase Ultimate Rewards at 2.05 cents per point
More from Financial Ideas