Meetaly
HomeServiziProgettiClienti
Chi siamoBlogContatti
Parliamo
Meetaly

Software, Marketing e Design per far crescere il tuo business. Trasformiamo le tue idee in soluzioni digitali.

Link Rapidi

  • Servizi
  • Progetti
  • Clienti
  • Chi Siamo
  • Blog
  • Contatti

Contatti

  • admin@meetaly.agency
  • Via Croce del Papa 27/29
    80035 Nola (NA), Italia

Newsletter

Ricevi aggiornamenti su novità e articoli del blog.

© 2026 Meetaly Agency. Tutti i diritti riservati.

Privacy PolicyCookie Policy
Tech & Development7 min di lettura
Aggiornamento del progetto: MeetFlow

Webhook Instagram "messages" che non arriva mai (ma "comments" sì): ci abbiamo perso settimane, ecco la causa vera

M
Meetaly Team
12 settembre 2026
Webhook Instagram "messages" che non arriva mai (ma "comments" sì): ci abbiamo perso settimane, ecco la causa vera
Comments arrivano al webhook, i DM Instagram no, stesso setup, stessi permessi. La causa reale (Standard Access, ruolo tester su chi scrive) e come verificarla in 5 minuti.

Ok, se sei qui è perché hai già googlato mezzo internet, hai riletto la documentazione Meta tre volte, hai ricreato la Login Configuration da zero almeno una volta, e sei sul punto di mettere in dubbio la tua sanità mentale. Respira. Ci siamo passati anche noi, per settimane, e alla fine la causa era una cosa che nessuno scrive da nessuna parte in un modo comprensibile. Te la spieghiamo per intero, così tu ci metti cinque minuti invece che tre settimane.

Se hai fretta, è questa

In Standard Access, Instagram manda il webhook messages solo se chi scrive il DM ha un ruolo di Instagram Tester sulla tua app — non l'account business che lo riceve. Sì, hai letto bene: non serve che ce l'abbia il tuo account, serve che ce l'abbia il cliente/tester che ti sta scrivendo. Vai sull'account che sta mandando i messaggi di test → Impostazioni → App e siti web → Inviti dei tester → accetta l'invito per la tua app. Se l'invito non esiste: Meta for Developers → la tua app → Ruoli → Ruoli Instagram Tester → aggiungi proprio quell'account, quello che scrive, non quello che riceve. Poi riprova a mandare un DM. Buona fortuna, ne avevamo bisogno anche noi.

Il sintomo che ti fa dubitare di te stesso

I commenti Instagram arrivano al webhook che è una meraviglia. Stesso URL, stessa app, stesso identico oggetto instagram nel payload. I DM no. Zero. Non un errore, non un log, non uno straccio di richiesta HTTP che arrivi da qualche parte. Per settimane. E la parte peggiore: pages_messaging di Messenger, sullo stesso identico livello di accesso, funziona benissimo anche con persone a caso da fuori.

Ed è proprio questo che ti manda fuori strada, perché il ragionamento sembra ovvio: "se Messenger funziona e Instagram no, con lo stesso Standard Access, allora ho sbagliato qualcosa nella configurazione". Ci abbiamo creduto anche noi per giorni. Non è così. Sono due prodotti con regole di accesso completamente diverse a questo livello, e l'asimmetria da sola non significa niente — è solo una trappola mentale molto convincente.

Tutto quello che abbiamo provato e NON ha funzionato (rispàrmiatelo)

Prima di arrivare alla causa vera abbiamo controllato, uno per uno, con calma sempre più fragile, questi punti — tutti puliti, tutti a posto, tutti inutili:

  • Iscrizione ai campi webhook a livello app — il Registro attività confermava messages attivo già dal giorno prima
  • Iscrizione a livello Pagina (/subscribed_apps) — messages c'era, presente e corretto
  • Rifare da zero la sottoscrizione webhook — tutti e 8 i campi accettati, zero errori di permesso
  • Scope della Login Configuration — instagram_manage_messages era lì, tranquillo
  • Il toggle "Consenti accesso ai messaggi" su Instagram → Messaggi → Strumenti collegati — già acceso
  • Il messaggio finito dentro "Richieste" invece che in chat normale — accettarlo non ha cambiato assolutamente niente
  • Conversation Routing / Handover su Business Suite — un'app partner fantasma con tutto spento, totalmente irrilevante
  • Il prodotto "Instagram Business Login" mai configurato — webhook vuoto, zero account, un vicolo cieco totale
  • Il pulsante "Test" di Meta per l'evento messages nella dashboard webhook — non ha mandato letteralmente nulla al server (per pura sfortuna, nello stesso istante è arrivato un mentions reale e scollegato che per un attimo ci ha fatto pensare di avercela fatta)

Bonus trappola, gratis: la Pagina può vivere sotto il portfolio Business Suite del cliente, non quello della tua agenzia. Se controlli "App collegate" dal portfolio sbagliato, vedi un elenco di permessi più corto e diverso — e giureresti che sia lì il problema. Non lo è, hai solo guardato nel posto sbagliato.

La cosa che ci ha davvero salvato: il log dell'nginx, non un pannello Meta

Dopo aver bruciato tutte le ipotesi sopra, a un certo punto la domanda giusta è cambiata: non più "cosa ho sbagliato nella configurazione" ma "questa richiesta arriva DAVVERO al mio server?". E la risposta non stava in nessuna dashboard Meta — stava nel log del reverse proxy:

grep 'POST /api/webhooks/meta-messaging' /var/log/nginx/access.log
# 46 richieste POST da Meta quel giorno, tutte 200
# NESSUNA agli orari dei nostri test DM
# comments/leadgen invece combaciavano perfettamente

Quella riga di grep vale più di due settimane di dashboard Meta aperte in venti tab diverse. Prova, senza possibilità di dubbio, che Meta non stava nemmeno tentando di mandarci quei webhook. Non un problema di routing nostro, non un bug nel codice, non un token scaduto — la richiesta non arrivava proprio, punto. Se vuoi un consiglio spassionato: controlla il log del proxy PRIMA di toccare sottoscrizioni, token o instradamento. Ci avrebbe risparmiato la metà del tempo perso.

E finalmente, la causa vera

In Standard Access, Instagram consegna i webhook messages solo quando è la persona che scrive il DM ad avere un ruolo sull'app — non l'account business che lo riceve. La doc Meta dice, testuale, che "i webhook vengono inviati solo se la persona che usa la tua app ha un ruolo sull'app" — una frase che sembra parlare del tuo team, e che invece per la messaggistica parla del cliente che ti sta scrivendo. Geniale, no?

Aggiungere l'account business come Instagram Tester: zero effetto, niente di niente. Aggiungere l'account personale che stava fisicamente scrivendo i DM di test come Instagram Tester, e accettare l'invito da quell'account: al messaggio successivo è arrivato tutto. E GET /{page-id}/conversations?platform=instagram, che per tutto il giorno ci aveva risposto con un desolante data: [], all'improvviso ci ha restituito l'intera conversazione — messaggi vecchi compresi, quelli che fino a un minuto prima erano semplicemente invisibili.

Perché i commenti non hanno mai avuto questo problema: sono dati del business stesso, non serve nessun tester per leggere i propri contenuti. Messenger invece consegna da chiunque anche a Standard Access — motivo per cui quella famosa asimmetria "Messenger sì, Instagram no" non prova affatto un bug, prova solo che sono due prodotti con regole diverse. Ci siamo fatti fregare da questo per giorni.

Cosa fare, in pratica, adesso

  1. Controlla il log del reverse proxy per l'orario esatto del tuo test DM. Zero richieste da Meta? Il problema è a monte, non nel tuo codice — smetti di debuggare l'app.
  2. Vai sull'account Instagram che sta scrivendo i test (non quello business che riceve) → Impostazioni → App e siti web → Inviti dei tester.
  3. Accetta l'invito da tester per la tua app da quell'account. Se l'invito non c'è ancora: Meta for Developers → la tua app → Ruoli → Ruoli Instagram Tester → aggiungi proprio quell'account.
  4. Manda un DM nuovo dall'account appena aggiunto e ricontrolla subito il log del proxy — dovrebbe comparire in pochi secondi.
  5. Per clienti veri in produzione questo vale solo a Standard Access: la soluzione definitiva resta l'Advanced Access per instagram_manage_messages via App Review, dove sparisce questa restrizione assurda.

Perché ce lo scriviamo da soli, tanto per noi

Niente di tutto questo è scritto da Meta in un posto che lo renda trovabile. Lo scopri solo testando dal vivo, escludendo un'ipotesi alla volta, con la pazienza di chi non ha più opzioni. Se stai leggendo fin qui probabilmente hai lo stesso identico problema — comments sì, DM no — quindi saltati tutti i vicoli ciechi qui sopra e vai dritto al log del proxy. Ti abbiamo tenuto un posto, benvenuto nel club.

M
Scritto da
Meetaly Team

Continua a leggere

Altri articoli dalla stessa categoria.

Vedi tutti gli aggiornamenti →
Il sito rallentava nei picchi di pubblicazione: la diagnosi prima di comprare un server più potente
Tech & Development
12 settembre 2026

Il sito rallentava nei picchi di pubblicazione: la diagnosi prima di comprare un server più potente

Come abbiamo diagnosticato un rallentamento sotto carico su un portale editoriale — e perché la soluzione non era un server più potente, ma tre cause reali trovate misurando.

M
Meetaly Team
Da app Flutter a sito Next.js: perché abbiamo ricostruito Prezzo Gomme
Tech & Development
7 settembre 2026

Da app Flutter a sito Next.js: perché abbiamo ricostruito Prezzo Gomme

Perché un e-commerce di pneumatici non può vivere come un'app Flutter Web, e cosa cambia davvero passando a Next.js: SEO, tempi di caricamento, ricerca prodotti e pagamenti.

M
Meetaly Team

Ti è piaciuto l'articolo?

Iscriviti alla nostra newsletter o contattaci per realizzare il tuo prossimo progetto.

Contattaci