Skip to content

Security

Security architecture and Meta permissions

Which scopes Doorman requests on Instagram and Facebook and why each one is needed, how webhook signatures are verified, how access tokens sit encrypted with AES-256-GCM, and what happens when a token expires.

Published · September 3, 2026 · Tim Urbutt · 9 min read

  • Sicherheit
  • Meta Graph API
  • Verschlüsselung
  • Webhooks
  • Instagram
  • Facebook

Every permission needs a reason.

When you connect a channel, Meta shows you a list of permissions. Most tools do not explain them, and the list is not self-explanatory. So here is what each scope is for - and what would not work without it.

Instagram Business

ScopeWhat for
instagram_business_basicIdentify the connected account and its posts, so a comment can be attributed to the right post and the right channel.
instagram_business_manage_commentsRead, hide, unhide and reply to comments. This is the moderation itself.

Facebook Pages

Facebook does not run through a scope list but through a Login for Business configuration. The difference is not cosmetic: a configuration always renders the same dialog with asset selection, instead of letting Meta choose which consent UI to show. That is what makes it reliable to see which pages you are granting.

PermissionWhat for
pages_show_listList the pages you administer so you can pick one.
pages_read_engagementRead the page's posts and comments - the context a comment is judged in.
pages_read_user_contentRead user-generated content on the page, which is the comments themselves.
pages_manage_engagementHide, unhide and reply to comments.
pages_manage_metadataSubscribe to the page's comment notifications. Without that subscription there is no event to react to.
business_managementOnly on the Business Portfolio path, so Meta can grant the app a system user inside the portfolio.

What is not requested

  • Publishing, editing or deleting posts
  • Reading or sending direct messages
  • Ad accounts, budgets or campaigns
  • Changing profile or page settings
The only write access Doorman ever exercises is hiding comments and - where you switched replies on - replying to them.

How an inbound event is verified.

Processing is event-driven: Meta delivers as soon as somebody comments. A publicly reachable endpoint that triggers moderation decisions on request is, without verification, an invitation. That is why the signature check comes before anything else.

  • Every inbound event from Meta carries a signature over the raw request body. It is verified against exactly that raw body - not against re-serialised JSON, which need not be byte-identical.
  • The comparison runs in constant time. A comparison that stops at the first differing character leaks, through its runtime, how far a guess got.
  • The same rule applies to events from the payment provider. A forged payment event would be a subscription nobody paid for.
  • An event that fails verification never reaches processing. It is discarded, not queued.

Where your channel credentials live.

A Meta access token is the key to your channel. It is therefore not stored in clear text but encrypted with AES-256-GCM. GCM is not a detail for cryptographers here: the mode provides integrity as well as confidentiality - a tampered record does not decrypt into something else, it does not decrypt at all.

  • The key does not live in the database. Anyone holding a copy of the database would hold no usable tokens.
  • Both places that need tokens - the application and the background worker - encrypt and decrypt with the same scheme, so no format exists that only one side understands.
  • Every connection runs over HTTPS, including those between our own services.
  • Backups are encrypted and are not kept longer than the data inside them.
  • Sign-in supports a second factor, and deleting the account asks for it again.

When a token expires

Tokens expire, and a tool moderating around the clock must not lose access because somebody changed a password. The state of every connected channel is therefore monitored: if a token expires or is revoked, the channel is marked as disconnected and you are notified. What does not happen is quiet continuation on a dead credential - moderation that has stopped working without saying so is worse than moderation that pauses.

What is logged, and what is not.

For every comment checked, the record holds when it was judged, how it was judged and which of your rules matched. That is the basis for two things at once: your own traceability, and the answer you have to be able to give a data subject.

Once the retention window has passed, what is left of that record is the history without text and without names. Your analytics build on it. Because nobody can be reconstructed from it, that remainder is no longer processing of personal data.

Frequent questions.

Can Doorman publish posts on my behalf?

No. The permissions requested cover reading posts, reading, hiding and replying to comments, and subscribing to comment notifications. Publishing, editing and deleting posts is not among them, and neither are direct messages or ad accounts.

What happens when I disconnect a channel?

The stored access token is removed and processing for that channel stops immediately. You can disconnect and clean up a single channel without giving up the account; deleting the account removes every personal record along with uploaded files and stored channel access.

How are forged webhook requests detected?

Every inbound event from Meta and from the payment provider carries a signature, verified against the raw request body and in constant time. If verification fails the event is discarded and never reaches processing.

Do you store my Instagram credentials?

No - Doorman never sees your password. The connection runs through Meta's own login dialog, which ends in an access token. That token is what we store, encrypted with AES-256-GCM, and the key does not live in the database.

Read on.

Last reviewed: 3 September 2026. Permissions change when Meta changes its APIs; this article is updated along with them.

Security · 10 min

GDPR in automated comment moderation

Who is the controller and who the processor, which legal basis carries the moderation of other people's comments, what belongs in the processing agreement, and why minimising the data before the model call is the technical step that matters most.

Read article

Security · 11 min

The EU AI Act and automated comment moderation

Which deadlines apply, why comment moderation is not a high-risk system, what Article 50 actually requires, and what human oversight under Article 14 looks like inside a moderation tool. The deep dive behind the trust overview.

Read article

Security · 8 min

EU inference and the provider split

Why moderation and triage run at Mistral in the EU, what fraction of comments ever triggers a draft, how third-country transfers are covered under Chapter V GDPR - and why "servers in the EU" on its own says nothing.

Read article

Still one question open?

Write to us — we are happy to help with a concrete answer.

Contact usRead the privacy policy

Nordify UG (haftungsbeschränkt), Hamburg