# Connect Instagram to Social Quack

> Schedule posts to your own Instagram account — no Facebook page, no App Review, a few minutes you only spend once.

Instagram will not let a scheduling tool post on your behalf unless that tool belongs to you. So the one-off job is to create a small, free developer app of your own on Meta's site and paste two values from it into Social Quack. Those values are stored encrypted on your own Mac, and because the developer app is yours, Instagram's posting limits are yours alone — there is no shared pool of other people's accounts to get rate-limited or banned in.

Work with Social Quack and your browser side by side: Meta's developer site in the browser, the app next to it. Every value you have to paste into Meta's site has a copy button next to it in the app.

## 1. Your Instagram account must be Professional

Social Quack posts to a **Professional** account — Business or Creator. In the Instagram app on your phone: **Settings → Account type**. A personal account cannot post through Instagram's publishing tools at all, so this is worth checking before anything else.

You do **not** need a Facebook page, and the account does not have to be linked to one.

## 2. Open the keys window in Social Quack

In the app, click **Channels** in the sidebar, find **Instagram** under *Add a channel*, and click **Set up app keys**.

Leave that window open. It holds three things you need in a moment:

- the same steps as this page, in short form;
- the **redirect URL** — the address Instagram sends you back to after you log in. Social Quack works out the right one for your setup and shows it with a copy button, so always take it from there rather than typing something that looks right;
- the two boxes you will paste into: **`Instagram App ID`** and **`Instagram App Secret`**.

## 3. Add the Instagram use case to a Meta app

1. Go to **https://developers.facebook.com** and sign in with your Facebook account.
2. Open your app. If you already made one to connect Threads, that same app works — you do not need a second one.
3. Never made one? **My Apps → Create app**, give it any name, pick the use case **"Manage messaging & content on Instagram"** when Meta asks what your app should do, and attach or create a **business portfolio** when it asks for one.
4. In the app, choose **Add use case** → **"Manage messaging & content on Instagram"** — unless you just picked it while creating the app, in which case it is already there.

> That use case used to be called *Instagram API with Instagram Login*. Same thing, renamed — if you see the old name in an older article, you are in the right place.

## 4. Tell the app where to send you back

Inside that use case, open **API setup with Instagram login** → **Set up Instagram business login**, and fill in three boxes:

| Box on Meta's page | What to put in it |
|---|---|
| **OAuth redirect URIs** | The redirect URL Social Quack shows you, with a copy button, in the *Set up app keys* window. Copy it from there — do not retype it. |
| **Deauthorize URL** | `https://socialquack.com/oauth/callback/uninstall` |
| **Data deletion URL** | `https://socialquack.com/oauth/callback/delete` |

Save the page. The redirect URL has to match character for character, so always copy it rather than typing it — that is the single most common reason Instagram's login page refuses to continue.

> Don't be thrown if that address is on `socialquack.com` rather than on your own computer. Instagram refuses any sign-in that would send you back to a plain, non-secure address, so Social Quack gives you a secure one to register and hands the sign-in straight back to the app running on your Mac.

## 5. Copy the two keys into Social Quack

Still on the same page, find the **Instagram App ID** and the **Instagram App Secret** and paste them into the matching boxes in Social Quack.

> These are **not** the Meta App ID and secret shown elsewhere in the dashboard. They look similar and they are different numbers. Take them from *API setup with Instagram login*.

Click **Save**. Social Quack stores them encrypted on your Mac and immediately opens Instagram's login page in your browser. If you have not done step 6 yet, this first sign-in will fail — that is expected, and step 6 is how you fix it.

When the sign-in does go through — after step 6 — Instagram asks you to approve three permissions:

| Permission | What it is for |
|---|---|
| `instagram_business_basic` | reads your username and profile picture, so the account shows up under Connected |
| `instagram_business_content_publish` | publishes the posts you schedule |
| `instagram_business_manage_comments` | adds the follow-up parts of a multi-part post as comments |

Approve all three. The third one is what turns the follow-up parts of a multi-part post into comments — without it the post itself still goes out, then fails with *"Posted, but adding the comment thread failed"*.

## 6. Add your account as an Instagram Tester — and accept the invite

Your app stays in Development mode (see step 8), and in that mode Instagram only lets accounts you have invited use it. Yours is one of them:

1. In your Meta app: **App roles → Roles → Add people** → add your Instagram account as an **Instagram Tester**.
2. Then **accept the invitation inside the Instagram app on your phone**: **Settings → Website permissions → Apps and websites → Tester invites**.

Until you accept, the invite sits as *pending* and the login in step 5 fails. If your very first connection attempt bounced back with an error, this is almost always why — accept the invite, then click **Connect** on the Instagram card again.

## 7. Media hosting — every Instagram post needs a photo or video

Two Instagram rules shape this step: there is no text-only post, and Instagram fetches photos and videos from a public web address instead of accepting an upload.

Open **Settings → Media hosting** in Social Quack. With an active licence, Social Quack hosts the files for you and there is nothing to set up: a copy of the file is made only at the moment the post goes out, it is deleted within a day, and your originals never leave your Mac. If you would rather serve the files yourself, **Use your own bucket instead** takes any S3-compatible storage — a Cloudflare R2 bucket with a custom domain works great.

Because there is no text-only post, Social Quack stops one as you schedule it rather than letting it fail later: *"Instagram has no text-only posts — attach an image or video"*. And if a file is attached but there is nowhere to host it, the post fails when it is due, with *"This platform needs a public URL for media…"* — activate your licence, or set up your own bucket here.

## 8. Post something

Open **Compose**, tick the Instagram channel, attach the photo or video, write the caption and schedule it.

- Captions can run to **2,200 characters**.
- Attach up to **10** photos or videos — more than one becomes a carousel.
- A single video is published as a **Reel**.
- Extra parts of a multi-part post become comments: the first extra part is posted as a comment on the post, and any parts after that are replies to that comment.
- When it publishes, the Queue links straight to the post on Instagram.

That is the whole job. **Your app stays in Development mode, which is all you need to post to your own account — there is no App Review to pass.** The connection renews itself while you keep posting: Instagram issues a 60-day pass, and the first time a post goes out to this account in the pass's final week, Social Quack swaps it for a fresh one. Go quiet for two months and the pass simply lapses — Instagram then asks you to connect the account again.

## If something goes wrong

| What you see | What it means | What to do |
|---|---|---|
| The Instagram login fails or bounces straight back with an error | The Tester invite is still pending | Accept it in the Instagram app: **Settings → Website permissions → Apps and websites → Tester invites**, then connect again (step 6) |
| Instagram refuses to connect the account at all | It is a personal account | Switch it to Business or Creator in the Instagram app: **Settings → Account type** (step 1) |
| Instagram's login page complains about the redirect, or never returns to the app | The redirect URL saved at Meta does not match exactly | Copy it again with the copy button in **Channels → Instagram → Edit app keys**, paste it into **OAuth redirect URIs** at Meta, save, and connect again (step 4) |
| The login is rejected the moment it starts | The Meta App ID and secret were pasted instead of the Instagram ones | Take the **Instagram App ID** and **Instagram App Secret** from *API setup with Instagram login* (step 5) |
| Instagram asks you to log in even though you are already signed in on that browser | Expected — the connection always asks for a fresh login | Sign in normally |
| *"Instagram has no text-only posts — attach an image or video"* (on **Post now**: *"Instagram requires an image or video on every post"*) | The post has no photo or video, and Instagram has no text-only post | Attach a file in Compose, or untick the Instagram channel for that post (step 7) |
| *"This platform needs a public URL for media…"* | Instagram fetches photos and videos from a web address, and Social Quack has nowhere to put them | Activate your licence in **Settings → License**, or set up your own bucket under **Settings → Media hosting** (step 7) |
| *"Instagram could not process the media"* | Instagram rejected the file itself | Try a different file — a standard JPEG or MP4, closer to what you would post from the phone |
| *"Instagram took too long to process the media"* | A big video is still being processed at Instagram's end | Nothing to do; Social Quack treats it as temporary and tries again |
| *"Posted, but adding the comment thread failed"* | The post is live, but the follow-up parts could not be added | Open **Channels**, connect Instagram again and approve all three permissions, the comments one included (step 5) — the same account reconnects in place |
