Keeping a Meta Integration Alive: Rate Limits and Reading the Changelog Before It Breaks
A Meta integration that works perfectly today can stop working next month without a single line of your code changing, and that's not a bug, it's how the platform is deliberately built. Two things cause most of this, quietly and independently: rate limits that move based on your own account's behavior, and API version deprecation that happens on a schedule nobody's watching.
Rate limits move with your number's quality rating, not your code
For WhatsApp specifically, rate limits scale with your phone number's quality rating and messaging tier, which moves up or down based on how recipients actually respond to your messages. A number in good standing gets a higher daily conversation limit than a new or flagged one. This creates a specific trap: the same code, tested carefully and working fine, can start failing in production not because anything broke, but because your message volume crossed a threshold your account's current standing hasn't earned yet. The failure looks like a code problem. The fix is a messaging-quality problem, and no amount of debugging the integration itself will find it.
The practical lesson isn't to memorize a specific ceiling (Meta adjusts these and doesn't commit to fixed numbers), it's to build sending logic that checks its actual current limit through the API rather than hardcoding an assumption, and treat any sudden rejection at scale as a signal to check the account's status first.
Version deprecation gives no warning until the day it breaks
Meta versions its Graph API, and each version gets a runway, typically around two years, before Meta stops serving it entirely. An integration built once and never revisited eventually calls an endpoint on a version that's been fully retired, and the failure shows up as a sudden, unexplained error in code that used to completely work.
Meta publishes this well in advance on its own developer changelog. The problem isn't secrecy, it's visibility: almost nobody checks a changelog for a tool that currently works fine, because there's no obvious reason to look until something's already broken.
One habit fixes both risks
Check the provider's own published status and schedule before assuming your code is the problem, and don't wait for a failure to prompt you to look. Put a recurring reminder on the calendar, once a quarter is enough for most integrations, specifically to open the developer changelog and check which API version you're actually running and how much runway it has left. It costs a few minutes. Waiting until it breaks in production costs a debugging session, an outage your customers may notice, and a migration scramble under pressure instead of on your own schedule.
Test in a sandbox before touching the production number
Keep a separate test number and a sandbox app configuration that mirrors production, and run any significant change, a new API version, a new message type, a new automation flow, against that test environment first. Skipping this to save time is exactly how a routine version migration turns into a production incident instead of a non-event nobody notices.
Why this matters if nobody's watching your integration's clock
An integration nobody revisits is running on a clock nobody's watching, whether or not anyone's paying attention to it. LeadOro treats quarterly changelog and quality-tier checks as a standing part of running a client's Meta integration, not a one-time setup task, so a version deprecation or a quality-tier drop gets caught on a calendar reminder, not a customer complaint.
Don't Want to Build This Yourself?
This series shows you exactly how the AI phone and messaging stack goes together, piece by piece. If you'd rather have it built, tuned, and maintained for you, that's what LeadOro does.