Beyond checking the config, my main troubleshooting tip is using a tool like dig to verify the propagation or checking the Authentication tab in the original email headers. Itβll tell you exactly where the SPF check failed.
Beyond checking the config, my main troubleshooting tip is using a tool like dig to verify the propagation or checking the Authentication tab in the original email headers. Itβll tell you exactly where the SPF check failed.
I've not dealt with clients on the issue, because either I've managed the DNS, or another department handled it. This is just as much for me (I've messed it up before and forgotten to add those TXT records haha!). Main thing is ensuring they're there.
Don't let a silent fail kill your launch. If your transactional emails (welcome links, password resets) are hitting spam, your SPF record is likely missing or misconfigured.
I wrote a 5-minute technical guide on how to fix it groovekit.io/blog/spf-rec...
#DNS #EmailMarketing #BuildInPublic #DevOps
Still using cURL? I've been using HTTPie for a few years now and I'll never go back to cURL. Nice, elegant, user-friendly one-liners. groovekit.io/blog/httpie
#terminal #backend #cli
Read the full post here: groovekit.io/blog/no-more...
#buildinpublic #dns #groovekit
New blog post on why I built DNS Record Validation into GrooveKit.
One typo in an SPF or TXT record can tank your email deliverability without you noticing. I built this so we never have to deal with that silent killer again. Set your expected values, and you'll get notified if anything drifts.
Public status page powered by GrooveKit
Introducing public status pages for all your GrooveKit monitors.
π°οΈ Give your users a real-time view of your uptime.
π§ Integrated "Subscribe to Updates" so they're the first to know when you're back in the groove.
Transparency builds trust. Build yours with GrooveKit.
groovekit.io #buildinpublic
DNS monitor details screenshot
π I just added DNS Monitoring to Encore. Now you can track A, CNAME, TXT records, and more.
π οΈ How it works: Set your expected values, and if your records drift or disappear, GrooveKit alerts you immediately via email, SMS, Slack, etc.
Keep your domain's rhythm steady.
groovekit.io #buildinpublic
Domain monitor screenshot
π Don't let your domain expire because of a missed email.
GrooveKit just added Domain Name monitoring to the Encore suite! πΈ
Track your domainβs expiry, registrar status, and renewal windows right alongside your SSL certs and API monitors.
groovekit.io
#buildinpublic #SaaS #devops
Dashboard displaying SSL monitor details
π¨ Silent API failures are bad. Expired SSL certs are pretty bad, too.
π I just added SSL monitoring to GrooveKit. Track expiry dates and cipher health before they become an incident.
groovekit.io #buildinpublic
Pretty simple adding it to your workflow:
π οΈ env GROOVEKIT_TOKEN=${{ secrets.GK_TOKEN }} groovekit monitors list --json | jq π οΈ
Give it a spin:
π οΈ brew install scookdev/groovekit/groovekit π οΈ
Let me know what you think!
#backend #softwareengineering #groovekit
Our Go-based CLI now prioritizes a secret token in your environment.
π Generate a token in your dashboard
π€ Add it to your GitHub Secrets
π Your pipeline is now "in the groove" automatically.
π¨ CI/CD just got a lot smoother for GrooveKit.
We all know the "200 OK is a lie" mantra, but catching those lies in production is too late. You need it in your pipeline. I rolled out long-lived tokens for groovekit-cli. No more interactive login hurdles in your runners. π§΅
#buildinpublic #devops
Terminal window showing the output of GrooveKit jobs list in a table with columns for ID, Name, Interval, Status, and Health.
Backend monitoring shouldn't just live in a browser tab. π οΈ
Working on a Go-powered CLI for GrooveKit. If you live in the terminal (kitty + neovim) like I do, checking cron health and API status directly from the terminal just feels right. ποΈ
groovekit.io
#buildinpublic #golang #backend #neovim
The data is technically in the network response, but the caching layer effectively hides it from your UI. This is why I'm obsessed with monitoring at the network level. If a response is missing a critical ID, I want an alert before it hits the browser and turns my fragments into black holes.
With Apollo, missing IDs are a silent killer. I've had a list query return flaky results where items overwrite each other or vanish. This happens because Apollo's "completeness check" fails. If the cache canβt find a unique ID, it often marks the whole fragment as incomplete and returns null.
Reminder for GraphQL devs: Your cache is only as smart as your query.
Forget the id field in a list? Say hello to silent normalization errors and "ghost" data. π»
Even if you don't need the ID for the UI, your cache needs it for its sanity.
#buildinpublic #backend
groovekit.io
Mostly just adding more edge case test coverage. Not really surprising, though.
No big GrooveKit feature shipped today - just tightening screws and fixing the stuff only I notice.
groovekit.io #buildinpublic
Just implemented so I'll see what kind of feedback I get. But for me, it's going beyond just an OK status - that kind of monitoring doesn't provide much value, so I like to know if the errors array has been populated.
I wrote a blog post on this GraphQL paradox last night: groovekit.io/blog/graphql...
TL;DR: Your monitor is green, but your API is returning errors. Hereβs how we fixed that in GrooveKit.
GraphQL famously returns 200 OK even when queries fail. π«
New from GrooveKit: Upright now monitors GraphQL & catches hidden errors in your query responses.
Check it out if you get a chance - I'd love for you to try it, feedback always welcomed groovekit.io
#buildinpublic #api #graphql #backend
By the way, I just finished a blog post on exactly those challenges of the "200 lie" and why I decided to go all-in on schema validation for Upright. I thought you might find it interesting. groovekit.io/blog/api-mon...
Looking forward to seeing what the early users find!
Since I just went live, I'm currently in the "early discovery" phase with users. However, even in beta, I've caught several "silent failures" where APIs were returning 200 OK but missing critical keys. That validated the entire reason I built Upright - proving that uptime is only half the battle.
A 200 OK status is a lie if your API is returning invalid data. π
I launched JSON schema validation for Upright. Catch "silent outages" where the server is up but the response is missing keys or has broken types.
Bulletproof your data integrity groovekit.io π
#buildinpublic #devops #api
A perfect use case is Webhook handlers (like Stripe). If an API version bump changes the payload structure and your schema validation fails, GrooveKit tells you before your database gets messy or your checkout breaks. 2/2
Great question! Most monitors only check if the response is a 200, but that's not always enough. I built it because Iβve been burned by 'silent outages' where an API drops a key or changes a data type. The server says it's fine, but the app is actually crashing. 1/2
API monitor stats
API monitoring detail page