CommunityHire an ExpertSign Up
Softr WorkflowsTrigger Types
Softr Workflows

Trigger Types

Summary

Triggers define when a workflow runs. Every workflow starts with exactly one trigger — the event or condition that kicks off the sequence of actions. Softr Workflows supports three categories of triggers: Softr-native triggers, built-in triggers, and integration triggers from third-party services.


Softr Triggers

Softr-native triggers respond to events inside your Softr account — your databases, apps, and email inbox.

Softr Databases

Database triggers fire based on changes to records in your Softr databases. All database triggers are Instant — they fire immediately when the event occurs, with no polling delay.

Record added

Fires when a new record is created in the selected table.

Configuration:

  1. Account — Select your Softr Databases account
  2. Database — Choose the database
  3. Table — Choose the table to watch for new records
  4. Conditions (optional) — Add field-level conditions to only trigger when the new record matches specific criteria

When to use: Kick off onboarding sequences when a new client record is created, or notify your team in Slack when a new lead is added.


Record deleted

Fires when a record is removed from the selected table.

Configuration:

  1. Account — Select your Softr Databases account
  2. Database — Choose the database
  3. Table — Choose the table to watch for deletions
  4. Conditions (optional) — Filter by field values on the record being deleted

When to use: Log deleted records to an audit table, or send a confirmation email when a user cancels a subscription.


Record updated

Fires when any field on an existing record changes.

Configuration:

  1. Account — Select your Softr Databases account
  2. Database — Choose the database
  3. Table — Choose the table to watch
  4. Conditions (optional) — Scope the trigger to specific field values (e.g., only fire when Status is "Active")

Tip: If you only want to react to a specific field changing, combine this trigger with a Filter action at the start of your workflow to check the exact field.

When to use: Sync record changes to a Google Sheet, or send a notification when a project’s status is updated.


Record meets conditions

Fires when a record matches a set of field-level conditions you define — useful when you care about a specific state, not just any update.

Configuration:

  1. Account — Select your Softr Databases account
  2. Database — Choose the database
  3. Table — Choose the table
  4. Conditions — Define one or more field conditions (e.g., Status Is "Approved")

When to use: Trigger an approval email exactly when a record’s status field is set to "Approved", rather than on every update.


Record enters the view

Fires when a record appears in a saved database view — for example, when a filter on the view is satisfied.

Configuration:

  1. Account — Select your Softr Databases account
  2. Database — Choose the database
  3. Table — Choose the table
  4. View — Select the saved view to watch

When to use: Automate actions tied to view-based segments, such as sending a follow-up email to all records that enter a “High Priority” filtered view.


Softr Apps

App triggers fire based on user activity within your published Softr applications. These triggers fall into two distinct execution models: Synchronous (Interactive) and Polling (Background).

Synchronous Triggers (Interactive)

Synchronous triggers maintain a live connection between the user’s browser and the workflow runner. Only these triggers support the Show Wait Screen and End User Interactions actions.

Submit form

Fires instantly when a user submits a form block in your Softr app. Configuration:

  • Application — Select the Softr app
  • Form Block — Select the specific form block to watch When to use: Process form data with AI or custom logic and show an immediate success toast or redirect.
Run custom workflow

Fires instantly when a user clicks a button configured with the “Run custom workflow” action. Configuration:

  • Application — Select the Softr app
  • Button — Map the workflow to a specific button in your interface When to use: Create high-UX features like “Upvote”, “Approve”, or “Generate Summary” that provide instant visual feedback.
Record created (UI)

Fires when a user creates a record through a List block’s ‘Add’ action inside the app. When to use: Redirect a user to a custom onboarding page immediately after they create their first project.

Record updated (UI)

Fires when a user edits an existing record through a List block’s ‘Edit’ action inside the app. When to use: Validate an update and show a confirmation loading screen while a backend sync occurs.


Polling Triggers (Background)

These triggers use a background service to check for updates approximately every 1 minute.

User added

Fires when a new user account is created in the selected Softr app. When to use: Send a welcome email, create a corresponding record in your database, or add the user to a Slack channel.

Comment added

Fires when a user posts a comment anywhere in the selected Softr app. When to use: Notify a team member when a client leaves a comment.


Softr Email

Note: The Softr Email trigger requires a Basic plan or higher.

Email received

Fires instantly when an email arrives at your Softr inbound email address.

Execution type: Instant

Configuration:

  • No additional fields required. Softr provides a unique inbound email address for your account. Any email sent to that address activates workflows using this trigger.

When to use: Parse incoming email notifications from other services, route support emails into your database, or trigger follow-up workflows when a specific type of email arrives.


Built-in Triggers

Built-in triggers are general-purpose triggers that don’t depend on a specific app or integration.

Webhook

Note: The Webhook trigger requires a Professional plan or higher.

Execution type: Instant

Softr auto-generates a unique POST endpoint URL for each workflow that uses this trigger. Any external service or application can send an HTTP POST request to that URL to start the workflow.

Configuration:

  • Webhook URL — Auto-generated; copy and paste into the external service
  • CORS origins — (Optional) Restrict which domains can send requests to this endpoint

Request body: The trigger reads the body according to its Content-Type header:

Content-TypeWhere it arrives
application/json, or no usable Content-TypeParsed into body
application/x-www-form-urlencodedEach field in body
multipart/form-dataText fields in body, each uploaded file in files
Text: text/plain, text/xml, application/xml, …body as a string (decoded with the charset of the Content-Type, UTF-8 by default), or parsed like JSON when the whole text is valid JSON
Anything else: application/pdf, image/png, application/octet-stream, …The whole body as one file in files

A file sent as the raw body takes its name from the Content-Disposition header when the sender sets one (for example attachment; filename="invoice.pdf"), and is otherwise named file with an extension that matches the content type, such as file.pdf, or file.bin when the content type has no usual extension. For example, this request starts the workflow with the PDF in files:

Terminal
curl --data-binary @invoice.pdf -H "Content-Type: application/pdf" <webhook-url>

Each file, uploaded or sent as the raw body, can be up to 10 MB. A larger raw body is rejected with HTTP 400 and the message Webhook request body exceeds the maximum file size of 10 MB.

A request without a Content-Type header, or with one that cannot be read, must carry JSON. Any other body is rejected with HTTP 400 and the message Webhook request has no usable Content-Type header and the body is not JSON. Set Content-Type to the body's type, such as application/pdf or text/plain. A request that declares JSON but sends invalid JSON gets Malformed JSON webhook body.

Tip: Use the Webhook trigger to start workflows from Softr button clicks, form submissions on external sites, or any service that supports outbound webhooks.

When to use: Connect Softr Workflows to any tool that supports webhooks — Stripe payment events, Typeform submissions, Shopify orders, or your own application.


One-time schedule

Runs a workflow exactly once at a date and time you specify.

Execution type: Scheduled (runs once)

Configuration:

  • Date/time picker — Select the exact date and time for the single run

When to use: Schedule a one-off data migration, send a time-specific announcement email, or prepare data before a product launch.


Recurring schedule

Runs a workflow repeatedly on a schedule you define.

Execution type: Scheduled (repeating)

Configuration:

  1. Frequency — Choose from:
    • Every 1 minute
    • Every 5 minutes
    • Every 10 minutes
    • Every 15 minutes
    • Every 20 minutes
    • Every 30 minutes
    • Every hour
    • Every day at…
    • Every week at…
    • Every month at…
  2. Time — Time picker (shown for daily, weekly, and monthly frequencies)
  3. Timezone — Timezone selector (defaults to Los Angeles time)
  4. Run on weekends? — Toggle to include or skip Saturday and Sunday runs

When to use: Send a daily digest email, run a nightly data sync, generate a weekly report, or poll an external system on a regular interval.


Integration Triggers

Integration triggers connect Softr Workflows to third-party services. Softr Tables, Calendly, Attio, and Zoho CRM are Instant, while other services use background polling.

Softr Tables

Softr Tables triggers fire instantly since version 1.1.0, ensuring high performance.

EventExecution type
Record createdInstant
Record updatedInstant
Record deletedInstant

Airtable

EventExecution type
Record updated1-minute polling

Configuration: Requires a connected Airtable account. Select the base and table to watch.

When to use: Mirror Airtable updates into a Softr database, or trigger notifications when a record’s status changes in Airtable.


Gmail

EventExecution type
Email received1-minute polling

Configuration: Requires a connected Gmail account (OAuth). Optionally filter by sender, subject, or label.

When to use: Start a workflow when a specific sender emails you, log incoming emails to your database, or route emails to different team members based on content.


Outlook

EventExecution type
Email received1-minute polling

Configuration: Requires a connected Outlook account (Microsoft 365, Outlook.com or Hotmail). Pick the Folder to watch; it defaults to the Inbox. Optionally fill From with one or more sender addresses, separated by commas, to run only for emails from them.

Tip: The trigger runs once for each email that arrives in the folder after the workflow is turned on. Emails already in the folder and emails that land in its subfolders do not run it — pick the subfolder itself for those. An email moved in from another folder runs it only if it was received within a few minutes of the newest email the trigger has seen. Non-inline attachments are passed on as files.

Note: Outlook connections made before this trigger existed can send email but not read it. If the folder list or the test shows “Softr can’t read emails with this Outlook connection yet. Reconnect your Outlook account to allow reading emails.”, reconnect the same account; workflows that use it keep working.

When to use: Start a workflow when an order confirmation or a support request arrives, log incoming emails to your database, or route emails from specific senders to the right team.


Google Sheets

EventExecution type
Row added1-minute polling

Configuration: Requires a connected Google account (OAuth). Select the spreadsheet and sheet to watch.

When to use: Trigger workflows when a new form response is appended to a Sheet, or when a team member adds a row manually.


Notion

EventExecution type
Record created1-minute polling
Record updated1-minute polling

Configuration: Requires a connected Notion account (OAuth). Select the database to watch.

When to use: Sync Notion database entries to Softr, or trigger notifications when a Notion page is updated.


HubSpot

EventExecution type
Record created1-minute polling
Record updated1-minute polling

Configuration: Requires a connected HubSpot account (OAuth). Select the object to watch — Contacts, Companies, Deals, Tickets, or any other supported object, including custom objects.

When to use: Notify your team when a new lead lands in HubSpot, add new CRM records to a Softr database, or act on a deal stage change.


Calendly

EventExecution type
Invitee ScheduledInstant
Invitee CanceledInstant
Invitee No ShowInstant

Configuration: Requires a connected Calendly account (OAuth).

Tip: Calendly triggers are Instant — they fire via webhook as soon as the event occurs in Calendly, making them ideal for time-sensitive automations like sending immediate confirmation emails or creating records right after a meeting is booked.

When to use: Create a database record when someone books a meeting, send a reminder sequence when a meeting is scheduled, or log no-shows for follow-up.


Attio

EventExecution type
Record createdInstant
Record updatedInstant
Record deletedInstant
Task createdInstant

Configuration: Requires a connected Attio account. Optionally scope record triggers to a single object (People, Companies, Deals, or a custom object); leave empty to fire for all objects.

Tip: Attio triggers are Instant — they fire via webhook as soon as the change happens in Attio. Record updated fires once per changed attribute.

When to use: Sync new Attio records into a Softr database, notify a team when a deal is updated, or kick off a follow-up workflow when a task is created.

Zoho CRM

EventExecution type
Record createdInstant
Record updatedInstant
Record deletedInstant

Configuration: Requires a connected Zoho CRM account. Each trigger watches one module — Leads, Contacts, Accounts, or Deals.

Tip: Zoho CRM triggers are Instant — Zoho notifies Softr as soon as the change happens. The output carries the record ID; Record updated also lists the changed fields and their new values. Chain Get record to read the full record. A bulk edit or import starts one run per affected record.

When to use: Notify a team when a lead is created, act on a deal stage change, or keep your Softr database in step with the CRM when records are deleted.


Trigger Comparison Table

TriggerCategoryExecution typePlan requirement
Record addedSoftr DatabasesInstantAny
Record deletedSoftr DatabasesInstantAny
Record updatedSoftr DatabasesInstantAny
Record meets conditionsSoftr DatabasesInstantAny
Record enters the viewSoftr DatabasesInstantAny
User addedSoftr Apps1-min pollingAny
Comment addedSoftr Apps1-min pollingAny
Submit formSoftr AppsSynchronousAny
Run custom workflowSoftr AppsSynchronousAny
Record created (UI)Softr AppsSynchronousAny
Record updated (UI)Softr AppsSynchronousAny
Email receivedSoftr EmailInstantBasic+
WebhookBuilt-inInstantProfessional+
One-time scheduleBuilt-inScheduled (once)Any
Recurring scheduleBuilt-inScheduled (repeating)Any
Record updatedAirtable1-min pollingAny
Email receivedGmail1-min pollingAny
Email receivedOutlook1-min pollingAny
Row addedGoogle Sheets1-min pollingAny
Record createdNotion1-min pollingAny
Record updatedNotion1-min pollingAny
Record createdHubSpot1-min pollingAny
Record updatedHubSpot1-min pollingAny
Invitee ScheduledCalendlyInstantAny
Invitee CanceledCalendlyInstantAny
Invitee No ShowCalendlyInstantAny
Record createdAttioInstantAny
Record updatedAttioInstantAny
Record deletedAttioInstantAny
Task createdAttioInstantAny
Record createdZoho CRMInstantAny
Record updatedZoho CRMInstantAny
Record deletedZoho CRMInstantAny

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search Softr Documentation documentation and read it in full, instead of answering from memory.

https://docs.softr.io/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://docs.softr.io/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.