For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

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.

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?
Tier
Behaviour
Maximum
Timeout slider

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.

Someone left the team. What do I need to do?

Remove them under People: their audit history stays. Then check API keys: keys belong to the workspace, not to a person, so removing someone does not revoke keys they created.

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?