FAQs
Short answers to the questions that come up most.
Getting started
Do my customers need a fastn account?
No. Your customers work through the widget embedded in your product, authorising their own accounts there. They reach it with an embed token your backend mints, which carries the role end_user, not a fastn login of their own.
Do I have to write workflow code?
No. The agent writes workflows from a plain description, and iterates on follow-up messages. In fact code editing is switched off in almost every workspace (it is enabled only for the parent organisation) so writing the code yourself is the exception rather than the norm. You can still test, wire connectors, edit the contract, publish and deploy. It can be switched on if you want to write code yourself; ask fastn to enable it.
What is the difference between a customer and a tenant?
They are the same thing under two names, and both are current. Customer is what the dashboard calls it: the Customers screen, the ⌘K search group, the Connections column. Tenant is what the plumbing calls it: it is the column header on all three Triggers tables, and the last segment of a connection id, ucl:org_<org>:<env>:<connectorId>:<authId>:<tenant>.
So do not read tenant as legacy vocabulary you can ignore. If a screen or an identifier says tenant, it means one of your customers.
Connectors and connections
What is the difference between a connector and a connection?
A connector is the definition of a system: its actions, auth methods and webhooks. A connection is one customer's authorised link to it, holding the encrypted credential. One connector, many connections.
My customers see "fastn.ai" on the OAuth consent screen. How do I show my own brand?
Start on the connector's Auth tab, which is where a connector's OAuth providers are configured. It shows the auth methods and a providers list. Whether that lets you register your own OAuth application, and what the consent screen then shows, is not something this page can confirm; check the tab for your connector, and ask fastn if it is not there. See Connectors.
A connection says Expired or Failed. Can I fix it from the dashboard?
Not by re-entering the credential. It belongs to the customer, and they re-authorise through your widget. What the dashboard offers on the row is Reconnect and Disconnect.
The precise meaning of each status is not documented here; treat Expired and Failed as "this credential no longer works, ask the customer to reconnect" and read the connection's own Token and activity section for Expires, Last refreshed and Last used.
The Active / Inactive / Expired / Failed filter chips on the Connections tab currently return zero rows whichever one you pick, even when every row in the unfiltered list shows Active. Do not conclude from an empty filtered list that you have no connections in that state: clear the filter and read the Status column.
What is a workspace connection for?
Systems your organisation owns rather than your customers: your Slack, your warehouse. In a workflow, each connector is wired either per customer or workspace, which decides whose credential the call uses.
Can I stop one customer taking a connector change?
Yes. Pin them to a specific connector version under Version pins on the connector. Everyone else moves forward.
Workflows and triggers
Which execution tier should I pick?
Instant
The caller blocks and gets the result inline.
30 seconds
1s – 30s
Standard
Returns 202, runs in the background.
15 minutes
5s – 15min
Long
Returns 202, runs in the background.
36 hours
30s – 36h
Instant only when something is genuinely waiting on the answer: 30 seconds is not much once you are calling two systems in sequence. Standard for almost everything else. Long for batch imports and backfills.
What is the difference between Publish and Deploy?
Publish creates an immutable version snapshot (v1, v2, …). Deploy sends a published version to an environment so it starts handling real events. Rollback is just deploying an earlier version.
What does `test` mean in the environment dropdown?
test runs the workflow's latest published version. Any named environment runs the version deployed there, and the fire fails if nothing is deployed to it.
How do I stop duplicate records after a replay?
Set a deduplication key on the webhook trigger, and add an idempotency guard using fastn.state in the workflow. See Common patterns.
Does a retry policy retry everything?
No. It retries transient failures. Code errors, data errors and out-of-memory never retry: a bug does not get better on the second attempt, and neither does a payload that was always malformed.
I called the API and nothing ran.
Check whether the workflow has ever been published. Until a snapshot exists, every call returns WORKFLOW_NOT_PUBLISHED: the workflow list shows this as status Not published and latest version Unpublished. See HTTP API.
Security and access
Is a test API key a sandbox?
No. A test key reaches the same live connections as a live key and causes the same real writes. It is a separate, separately revocable credential, not a safe one. It is also refused unless the caller sends X-fastn-Test-Mode: true.
Can I put an API key in my frontend?
No. Browser-facing widgets use short-lived embed tokens minted by your backend. See Embedding the widget.
Who can read the audit log?
Account owners and admins only. It is enforced at the API layer and cannot be granted per user.
Can I limit an agent to read-only access for one customer?
Yes. Combine the action selection on the connector with a narrow API key: pick the Viewer preset, or Custom with only the read boxes ticked in the What it can touch matrix, and set Customers it can reach to Only the ones I pick. See API keys.
Data and limits
Where does `fastn.db` data actually live?
In fastn's shared managed Postgres by default, in a schema isolated to your workspace. You can point it at a Postgres you operate instead, under Settings → Database. Rows are never copied between the two, so switching changes where new reads and writes go and nothing else.
Secret or config?
Secret if exposure would be an incident (tokens, passwords, keys. Config if you would happily show it to a colleague), endpoints, feature flags, batch sizes. When in doubt, secret.
What happens when I hit a plan limit?
New work stops rather than being charged for, and nothing already running is interrupted. Check Billing: a sync that stops because of a quota looks exactly like a broken sync until you do.
I deleted something by mistake.
Connectors, connector actions and workflows are in Trash and restore with slug and history intact. Other resources (widgets and their integrations among them), are deleted immediately and cannot be restored from that page.
Things that look broken
Why does the same connector appear twice in the catalogue?
Because two entries exist for one system: typically one badged managed and one badged Custom. Asana, HubSpot, Salesforce, Slack, Notion and Cin7 Core all show up this way.
The practical consequence: the connector count is a count of entries, not of distinct systems, so the total on the Connectors page is not a count of distinct products. Check the badge and the provenance line before you connect, so you do not authorise the copy you did not mean.
A connector says Connected but its detail page says 0 connections.
That is a known inconsistency between the list badge and the detail page's count, not a lost connection. Confirm on the Connections tab, which lists actual connections with their customer and status.
A connector shows "Created: Invalid Date".
A display defect in the Overview tab's Created row. It says nothing about the connector's health.
The Trash Actions tab never finishes loading.
Known: the Actions tab on Trash sits on Loading deleted actions… and does not resolve. The Connectors and Workflows tabs work normally.
The Connections status filters return nothing.
Also known: every status chip returns zero rows. Clear the filter and read the Status column instead.
Still stuck
Work through Troubleshooting. It is organised by symptom.
Last updated
Was this helpful?

