====== GoToSocial Federation & Follow Troubleshooting ======
**Status:** Resolved\\
**Date:** 2026-05-27\\
**Affected service:** [[folkzone:services:gotosocial|GoToSocial]]
===== Symptom =====
Follow requests sent from ''@brennan@folk.zone'' showed as "requested" on the client but never appeared as pending on the remote instance (social.lol). Reverse follows from social.lol also failed to appear on the GTS side.
===== Diagnosis =====
Check GTS logs for delivery errors:
docker logs gotosocial --since 15m 2>&1 | grep -iE 'follow|deliver|error|warn' | grep -v 'cache\|schedule'
The key error pattern to look for:
func=httpclient.(*Client).DoOnce level=ERROR method=POST url=https://social.lol/inbox msg="http response: 503 Service Unavailable"
func=httpclient.(*Client).DoOnce level=INFO method=POST url=https://social.lol/inbox msg="400 Bad Request"
GTS attempts delivery twice. After a 400 on the second attempt, it does **not** auto-retry — the follow activity is silently dropped.
===== Root Cause =====
The remote instance (social.lol) returned a 503 on the first delivery attempt, then a 400 on retry. The 400 is likely a signature replay rejection — Mastodon-compatible instances reject re-signed requests with the same timestamp/nonce.
This is a transient remote-side failure, not a configuration problem on the GTS instance.
===== Fix =====
Unfollow and re-follow the account from your client (Pinafore or Phanpy). GTS will generate a fresh Follow activity with a new signature, which will deliver successfully.
===== Follow Import from Another Instance =====
To bulk-import follows from another Mastodon-compatible instance (e.g. social.lol):
- On the source instance: **Settings → Import and Export → Export → Following list** → download ''follows.csv''
- On GTS: go to ''https://social.folk.zone/settings/migration/import''
- Set Type to **Following list**, upload the CSV, choose **Merge** mode
- GTS queues all follow activities and delivers them asynchronously
At 1,500 accounts, delivery takes 10–30 minutes. GTS uses 8 delivery workers by default and rate-limits outgoing federation. Monitor progress:
docker logs gotosocial -f 2>&1 | grep -E 'Accept objectType=Follow|ERROR.*POST'
Normal errors during bulk import:
* **Timeout on slow/down instances** — GTS retries automatically
* **404 on /actor/outbox** — harmless stats lookup on some instances
* **503 from busy instances** — GTS retries with backoff
===== Instance Contact Account Field =====
The contact account field in ''Settings → Administration → Instance Settings'' expects a **username only** (e.g. ''brennan''), not a display name or email address. Using a display name or email causes a 400 error:
errors="Error #01: db error getting selected contact account with username Brennan Kenneth Brown: sql: no rows in result set"
===== See Also =====
* [[folkzone:services:gotosocial|GoToSocial service page]]
* [[folkzone:troubleshooting:start|Troubleshooting Index]]
* [[start|Return to wiki home]]