I do finance and operations at a nine-person company and taught myself enough cloud pricing to challenge our bills. I can usually tell you which SKU is eating your money before the engineers can.
If you do not want another service in the stack: a job_runs table with one row per successful completion, and /health/jobs returning 500 when max(finished_at) < now() - interval '26 hours'.
You almost certainly already have an uptime monitor screaming at you when an endpoint returns 500. Now it screams about cron too, and you added one table and one route.
The fee is around $15 in the US and yes, it lands on won and lost alike in most cases. The number that gets you attention is disputes over transactions on a rolling window: with 41 charges and 6 disputes you are at roughly 14%. That is not "flagged eventually", that is "someone reads your account this week". Get ahead of it and leave a note explaining the shutdown.
And keep the raw output after it's fixed. When the same thing recurs three months later, having the previous incident's data is what turns "intermittent and unreproducible" into "this is the third occurrence, here are all three with dates".
There is one genuine difference between the two if you want to chase it in a capture.
The echo request that finally lands on the destination during a traceroute arrives with a tiny TTL, because it was set to exactly the hop count on the way out. A normal ping arrives with whatever is left of 128. If some device in the path, or in front of your firewall, makes a decision based on that field, it would treat the two differently.
I wouldn't lead with this - it's uncommon, but checking costs one line. In your HQ capture, look at the IP TTL on the tracert probes you can see. If they land with a TTL of 1 and nothing at all from that source arrives otherwise, you've got something concrete and unusual to point at rather than a hunch.
It is genuinely not enough and it never was. Transaction.updates delivers while your process is alive. A renewal at 03:00 on a phone in a drawer has nowhere to be delivered to.
That listener exists for transactions that complete outside your normal purchase flow - a Family Sharing grant, an interrupted purchase resuming, a purchase that finished while you were backgrounded. It is not a renewal feed and treating it as one is the single most common subscription bug I see.
Two things are the answer:
App Store Server Notifications to an endpoint you own. That is your source of truth for renewals, billing retry, grace period, refunds and cancellations. It arrives whether or not the app has ever been opened again.
On every launch, read Transaction.currentEntitlements and reconcile. That is exactly what fixed itself while she was watching.
Practical note on universal links: test the cold-start case specifically. Link arriving while the app is already running is easy. Link arriving as the process launches, before your root view has appeared, is where you find the ordering bug - you set the path and something resets it during initial layout. Buffer the incoming route until the root is ready.
Seconding "delete the import". Every one of these products has one feature responsible for most of the support load, it is nearly always an importer or an integration, and removing it churns two customers and buys back half your year.
3.1.1 is a big bucket - missing restore, purchases routed outside the store, unlocking content bought elsewhere, and yes sometimes missing links. The rejection text says which one, and theirs says restore.
Adding the links is a good idea because you need them anyway, but telling someone on their third rejection that the guideline "always" means the one thing it does not mean here is how people end up on their fourth.
Weekly cash for discretionary spending, one withdrawal, and when it is gone it is gone. Crude, effective, and it works precisely because a card makes every small amount feel like the same amount.
Also worth pricing in the repair economy. Washing machines are largely disposable at year eight; a decent espresso machine has a parts diagram, and a shop will rebuild the group and replace the boiler seals for a fraction of a new machine. Some of that premium is that you are buying into a serviceable product rather than a sealed one, which is not nothing when you compare cost per year rather than sticker.
Separate "record that it happened" from "do the thing".
Handler one writes the fact in a transaction and nothing else. A second step - an outbox row picked up by another job - sends the email. Then a mail provider outage does not re-run your accounting, and a constraint violation in accounting does not send anything at all.
It is one more moving part and it is worth it the first time your email provider has a bad afternoon.
Both are true and they operate on different timescales. Housing decisions come round every year or two; the daily habit is something you can change tonight. Waiting for the big lever is how people do nothing for eighteen months.
Terse: yes, the rear one earns its place if you get hit from behind, which you have twice. Spend the money on the install quality rather than on the headline resolution.
Before anything else, check the mechanics where you live, because they may make the plan impossible. In the US, if you are placing four or more day trades within five business days in a margin account you get flagged as a pattern day trader and have to keep $25,000 of equity in the account, and below that the broker restricts you. So a $6,000 account making daily trades is not a smaller version of the same activity, it is a different and more constrained thing. Rules change and other countries differ, so confirm with the broker rather than a thread.
Pushing back on the reassurance a bit. Two weeks of use and then nothing is a real signal, and it is not about pricing. People who churn out of a free tool at week two did not have the problem badly enough for it to be worth a habit, which usually means the audience is slightly wrong rather than the product. Before you spend another five months, go and find out what the users who lasted longest have in common, because that group is your actual market and it may not be who you built it for.
Fair, and it would have been the first thing anyone modelled.
Nobody is buying your MRR. They are buying the probability of that MRR existing next year. One customer with no contract, on a stale price, who has never been asked to re-sign anything, is a coin flip - and if they leave, the multiple you applied to the remaining $1,550 was wrong too, because the remainder has to carry all the fixed costs on its own.
Two things worth more than any listing copy: get that account onto a twelve month term before you list again, and disclose the concentration on page one next time. You burned fourteen days of somebody's diligence budget and that gets remembered in a small market.
Fit in the flat pattern before you fit on the body, and most of the solo problem disappears. Take a garment you already own that fits well across the back, measure it flat - back width at the armhole, across the shoulders, the depth of the armhole: and compare those numbers to the finished measurements of your pattern rather than to your body measurements. Nine times out of ten the discrepancy is sitting there in centimetres before you have cut anything.
payment processor accounts do not transfer between legal entities. New account on their side, and customers either re-enter payment methods or you go through the provider's documented migration process, which takes weeks
domain, DNS, and the email sending domain, which has reputation attached to it that does not move
every API key in a .env you have not looked at since 2022
Work out the value of your points balance in pounds, then divide it by the hours you spent earning it. Mine came out at an hourly rate I would not get out of bed for, and that ended the debate in about four minutes.