Part 1: Coda Data Ingestion
Set up a Coda API token so ConfigView can pull your Coda docs and their external-share status into the dashboard.Step 1: Create a Coda API Token
- Go to: https://coda.io/account
- Scroll to the API Settings section
- Click Generate API token
- Name:
ConfigView - Click Generate
- Copy the token — you will only see it once
The token inherits the permissions of the user that created it. Create it under an account that can see every doc you want ConfigView to audit (typically a workspace admin).
Step 2: Add the Token to ConfigView
- Go to your ConfigView dashboard:
https://{companyname}.configview.com/admin/secret/ - Click Add Secret
- Secret name:
CODA_API_TOKEN - Secret value: Paste the token from Step 1
- Click Save
Step 3: (Recommended) Set Internal Domains
By default, ConfigView treats the doc owner’s email domain as “internal” and flags any share outside that domain as external. That fallback is fine for single-domain orgs where you always own your own docs, but it misclassifies three real cases:- Multi-domain orgs. If your company uses
@acme.comand@acme.io, a doc owned by someone atacme.iowill flag everyacme.comcolleague as external. - External-owned docs. A contractor creates a doc in your Coda workspace. The fallback treats the contractor’s domain as internal, so your own employees show up as external shares.
- Personal-email owners. A doc owned from
@gmail.commakes everyone else external noise.
CODA_INTERNAL_DOMAINS replaces the per-doc heuristic with one authoritative list applied uniformly.
- Go to:
https://{companyname}.configview.com/admin/secret/ - Click Add Secret
- Secret name:
CODA_INTERNAL_DOMAINS - Secret value: comma-separated list of your internal domains, e.g.
acme.com,acme.io - Click Save
Step 4: Enable the Coda App in ConfigView
- Go to:
https://{companyname}.configview.com/admin/app/ - You should see Coda in the list of available apps
- Select the scripts you want to run:
- Docs — All docs visible to the API token, with owner info and external-share details
- Click Save
Step 5: Verify
- Go to:
https://{companyname}.configview.com/admin/status/ - Run the Coda health check
- All checks should pass:
- Secret Manager access
- Coda API auth
/docsendpoint reachable
- The
CODA_API_TOKENsecret is saved correctly (no extra spaces) - The token was generated by an account that can see the docs
- The token has not been revoked in https://coda.io/account
Data Tables
Once the script runs, the following table is created:| Table | Key Columns |
|---|---|
coda_docs | doc_id, doc_name, doc_url, owner_email, owner_name, coda_created_at, external_shares (JSON), notes |
external_shares is a JSON array of Coda ACL permission objects. Each entry includes the principal (email, domain, or anyone) and the access level (readonly, write, comment, none).
Docs whose ACL cannot be read with the current token are still recorded, with notes set to permissions unreadable (HTTP 403) or similar. This usually means the token does not have access to that specific doc.
All tables include a run_at column for historical tracking. Rows are upserted on doc_id, so each doc is a single row that updates in place rather than accumulating snapshots.
External-Share Classification
A permission is counted as external when:| Principal type | External when |
|---|---|
anyone | Always — this is a public or “anyone with the link” share |
email | The email’s domain is not in your internal-domain set |
domain | The domain itself is not in your internal-domain set |
CODA_INTERNAL_DOMAINS if set; otherwise the doc owner’s email domain is used per-doc (see Step 3).
Troubleshooting
| Issue | Fix |
|---|---|
| Health check fails on “Coda API auth” | Verify CODA_API_TOKEN secret is correct; regenerate the token at https://coda.io/account if needed |
coda_docs is empty after a run | The token’s account has no docs it can see. Regenerate under a workspace admin account |
Many rows with permissions unreadable | Expected for docs the token user is not a member of; grant the account access or regenerate the token under a broader account |
| Own employees showing up as external | Set CODA_INTERNAL_DOMAINS with your full internal domain list (Step 3) |
| Public shares not flagged | Public shares appear as principal.type = anyone in the raw payload — verify the permission exists in Coda under Share → Anyone with the link |