Analytics Data - 30 Days
What: All parsed and raw analytics data (profile analytics, post analytics, and their raw counterparts). Retention: 30 days from the date the analytics record was created. After 30 days, the data is gone. Permanently. No backups. No “can you please recover it?”. No.What You Should Do
If you need analytics history beyond 30 days (and you probably do if you’re building dashboards or reports), set up a daily sync. Here’s a battle-tested approach:Why 30 days? We updated our cleanup/deletion methodology and now run a tighter, more consistent retention policy. If you need longer history, sync daily and store it on your side.
Webhook Events - 7 Days
What: All webhook event records (delivery attempts, payloads, responses). Retention: 7 days from the date the event was created. If you need to debug a webhook delivery from last week, you have 7 days. After that, the record is gone.What You Should Do
Log webhook payloads on your end when you receive them. This is standard practice for any webhook integration. If you’re not logging incoming webhooks, you’re living dangerously.Deleted Uploads - 2 Days
What: Files you’ve deleted (images, videos) and their database records. Retention: 2 days after an upload is soft-deleted (by you, or by the stale-upload rule below). When an upload is deleted, we don’t immediately nuke the file. We keep it around for 2 days in case you change your mind. After 2 days:- If the upload was used in a post: we remove the main file from storage but keep the database record, thumbnail and icon (so post history still shows a preview). The upload’s
urlstops working. - If the upload was never used: the files and the database record are all deleted.
Stale Uploads - 14 Days
Uploads are cleaned up automatically on a sliding 14-day window:- An upload stays alive as long as any post using it is still a draft, scheduled or publishing.
- Once that’s no longer true, it’s soft-deleted 14 days after the later of: when it was uploaded, or when the last post using it reached
POSTED,ERRORorDELETED. - An upload that is never attached to a post is soft-deleted 14 days after upload.
Imported Posts - 30 Days
What: Posts imported via the Post History Import feature. Retention: 30 days from the date of import. Imported posts are meant to populate your dashboard quickly - not to serve as a permanent archive. After 30 days, they’re deleted (along with their analytics, via cascade).Monthly Import Counter Reset
Your import quota resets on the 1st of every month. So if you hit your monthly limit, just wait for the calendar to flip.Direct Messages And Automation Logs - 30 Days
What: Direct messages, conversations, and automation execution logs (every run and every step). Retention: at least 30 days from when each message or run was created.- Messages are deleted one by one as they turn 30 days old, so an ongoing conversation keeps its recent part.
- A conversation itself disappears once it has had no activity for 30 days and all of its messages are gone.
- Automation runs and their step logs go 30 days after the run. The same goes for records of button, quick reply and menu taps. Your flows, their versions, and your ice breakers and menus are not affected.
Why
DMs are private conversations between your users and the people who write to them. We keep them only as long as the inbox and your automations need them, in line with Meta’s platform rules. We’d rather not sit on other people’s private messages.What You Should Do
If you need a longer history (support records, CRM, compliance), store messages on your side as they arrive. Every message reaches you as aconversation.message.created webhook, and edits, unsends and status changes as conversation.message.updated. Saving those payloads is all it takes.