Troubleshooting
Common issues and practical fixes. If you're stuck, this page covers the most frequent problems with syncs, invites, permissions, and billing.
Invite email not received
A team member didn't receive the invite email.
- Check spam and junk folders
- Ask the invitee to search for an email from configtrace.org or the ConfigTrace mailer domain
- Share the fallback invite link: go to Settings → Workspace → Members, find the pending invite, and click "Copy invite link" to share it directly
- If the link has expired, revoke the invite and send a new one
Sync failed or shows an error
A sync shows a failed status or an error message in the timeline.
- Open the integration detail page to see the full error message
- Most errors are credential problems: the token may have expired, been revoked, or permissions may have been changed. Re-enter fresh credentials.
- Run a manual Sync Now after updating credentials to confirm the fix
- Check that your provider-side token/key still exists and hasn't been deleted
Permission denied on sync
Sync returns a 403 or "permission denied" error.
- Verify the token/key still has the required read permissions (see the provider setup guide for the exact permissions needed)
- For AWS: confirm the IAM policy is still attached to the user or role
- For Firebase: confirm the service account still has the Firebase Viewer role
- For GitHub: confirm the PAT hasn't expired and still has the
reposcope - For Cloudflare: confirm the API token still has DNS:Read permission for the zone
- Re-enter credentials from the integration settings if in doubt
Integration never synced / timeline empty
The integration is connected but the timeline shows nothing, or only the creation event.
- Run a manual Sync Now from the integration detail page — the first sync must be triggered manually or it will run on the next scheduled interval
- Check that the integration status shows "Active" on the Integrations page
- If the status shows "Error", see the "Sync failed" section above
- On the Free plan, syncs run hourly. On Pro, every 15 minutes. On Team, every 5 minutes. The timeline will show "No changes" for syncs that find nothing new.
Billing limit reached
You're blocked from adding a new integration or inviting a member because of a plan limit.
- Go to Settings → Workspace → Billing to see your current plan and usage
- If you've hit the integration limit, upgrade your plan or remove unused integrations
- If you've hit the member limit, upgrade your plan or remove inactive members
- Only workspace owners and admins can manage billing
Firebase permission errors
Firebase sync returns a permission error even after connecting a service account.
- Confirm the service account has the
Firebase Viewerrole (roles/firebase.viewer) in Google Cloud IAM - Check that the service account hasn't been deleted or had its key revoked
- Generate a new JSON key and re-enter it in ConfigTrace if the existing one was revoked
- Ensure the Firebase project has the Firebase Management API enabled in Google Cloud Console
Supabase permission errors
Supabase sync returns an authentication or permission error.
- Access tokens created in the Supabase Dashboard → Account → Access Tokens expire. Check if your token has expired and generate a new one.
- Confirm you're using the correct Project Reference — it should be the short ref string, not the full URL
- Confirm the access token was created by an account with Owner access to the organization containing the project
Stripe checkout or portal unavailable
The Billing page shows "Billing is not fully configured yet" or the Upgrade/Manage button doesn't work.
- This is a ConfigTrace billing configuration issue, not a Stripe integration problem
- Contact ConfigTrace support for help — billing portal availability depends on the server-side Stripe price ID configuration
- Your existing integrations and syncs are unaffected
Can't connect provider credentials
Credentials fail validation when trying to save an integration.
- Double-check for extra whitespace when pasting tokens or keys
- For AWS: confirm both the Access Key ID and Secret Access Key are entered correctly (they're different values)
- For Firebase: paste the entire JSON key file contents, including the opening
{and closing} - For Cloudflare: confirm you're using an API Token (starts with a long string), not your Global API Key — and that the Zone ID is the 32-character hex string from the dashboard, not the domain name itself
- For GitHub: confirm the PAT starts with
ghp_and has thereposcope enabled