Connect Instagram DMs
Wassla connects to Instagram through Meta's Messenger Platform via OAuth. You sign in once with Facebook, pick the Business account and Page linked to your Instagram, and Wassla auto-discovers the Instagram User ID, exchanges a long-lived Page access token, and registers the webhook on your behalf. No manual app secret, verify token, or callback URL configuration is required.
Prerequisites
Three things must be true on the Meta side before the connection will succeed. If any one of them is missing, the OAuth callback will land you back on the Channels page with an error.
1. Convert Instagram to a Business or Creator account
Personal accounts cannot receive messages through the API. In the Instagram mobile app open Settings and privacy, then Account type and tools, then Switch to professional account. Pick Business (Creator also works but Business is the standard for customer service). This step takes about one minute and does not change anything visible on your public profile.
2. Link your Instagram account to a Facebook Page
The Messenger Platform delivers Instagram DMs through the Facebook Page connection — your Instagram account itself is not the webhook target. From your Facebook Page, open Settings, then Linked accounts, then Instagram, and connect the Instagram Business account. You must be a Page admin to do this. If you do not yet have a Page, create one from facebook.com first; a single throwaway Page with your brand name is sufficient.
3. Be an admin of the Meta Business account
Only Page admins and Business Manager admins can grant the messaging permissions Wassla needs. If you signed in to Facebook with a personal account that has no admin role on the Page, the OAuth screen will not list it. Confirm your role in Meta Business Suite under Settings, People before starting.
Connect from the Wassla portal
Once the prerequisites are in place, the in-app flow takes about thirty seconds.
- Open the Wassla portal at app.wassla.io and select the workspace you want to connect the channel to.
- In the left sidebar click Channels.
- Find the Instagram card and click Connect.
- A Meta OAuth popup opens. Sign in with the Facebook account that admins the Page linked to your Instagram Business account.
- Pick the Business account and Page on the consent screen. Leave all requested permissions checked —
instagram_basic,instagram_manage_messages,instagram_manage_comments,pages_messaging,pages_show_list, andpages_read_engagementare all required for full DM and story-reply coverage. - Click Continue. The popup closes and you return to the Channels page with a green confirmation banner.
Behind the scenes, the meta-oauth edge function exchanges the short-lived OAuth code for a long-lived token, calls me/accounts and me/businesses on the Graph API to discover the Instagram User ID linked to your Page, and writes one row into the agent_channels table for your tenant. The webhook subscription is automatic — Wassla's app is already pre-registered with Meta, so no https://... callback URL or verify token ever touches your hands.
Bind the channel to an agent
A connected channel is dormant until you point it at an agent. If you have only one agent in the workspace, Wassla auto-binds it. If you have several, pick which one answers Instagram DMs.
- From Channels, click on the connected Instagram card.
- Under Assigned agent, pick the agent from the dropdown.
- Click Save.
The agent's persona, language, and knowledge base now drive every reply on Instagram. You can change the binding at any time without re-doing the OAuth flow.
Verify the channel is live
Send your Instagram account a DM from a teammate's phone, or from a personal account that is not the connected Business account. You should see:
- A typing indicator within two seconds (Wassla fires
mark_seenandtyping_onimmediately). - An AI reply within five to fifteen seconds, depending on response length and your LLM provider.
- The conversation appearing under Inbox in the portal, with the sender's display name fetched from the Graph API where available.
If nothing happens, see channel troubleshooting — the most common cause is sending the test DM from the same account you connected, which Meta silently ignores.
What Wassla handles automatically
Several things commonly stumble teams who have integrated Instagram by hand. Wassla does them for you:
- Long-lived Page access token. The OAuth callback exchanges your short-lived user token for a long-lived Page token and stores it encrypted in your channel config.
- Webhook subscription. Wassla's Meta app is already subscribed to the
messages,messaging_postbacks, andmentionsfields. Your Page is auto-subscribed when the channel is created. - HMAC signature verification. Every inbound webhook is verified with
X-Hub-Signature-256against the Meta app secret before any processing happens. This is enforced server-side and is not optional. - Voice-note transcription. If a customer sends a voice DM, Wassla downloads the audio, transcribes it with Groq or OpenAI Whisper, and feeds the text to your agent. Transcription minutes are metered separately from outbound messages.
- Image and document attachments. Inbound media is mirrored into private storage and shown in the inbox alongside the message thread.
Disconnecting
If you need to revoke access, go to Channels, click the Instagram card, and click Disconnect. This deletes the agent_channels row and severs Wassla's ability to send or receive on that account. The Meta app permission on your Page remains until you revoke it under Facebook Settings, Business integrations, which is a useful belt-and-braces step if you are off-boarding entirely.