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:
- Account — Select your Softr Databases account
- Database — Choose the database
- Table — Choose the table to watch for new records
- 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:
- Account — Select your Softr Databases account
- Database — Choose the database
- Table — Choose the table to watch for deletions
- 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:
- Account — Select your Softr Databases account
- Database — Choose the database
- Table — Choose the table to watch
- Conditions (optional) — Scope the trigger to specific field values (e.g., only fire when
Statusis"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:
- Account — Select your Softr Databases account
- Database — Choose the database
- Table — Choose the table
- Conditions — Define one or more field conditions (e.g.,
StatusIs"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:
- Account — Select your Softr Databases account
- Database — Choose the database
- Table — Choose the table
- 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-Type | Where it arrives |
|---|---|
application/json, or no usable Content-Type | Parsed into body |
application/x-www-form-urlencoded | Each field in body |
multipart/form-data | Text 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:
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:
- 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…
- Time — Time picker (shown for daily, weekly, and monthly frequencies)
- Timezone — Timezone selector (defaults to Los Angeles time)
- 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.
| Event | Execution type |
|---|---|
| Record created | Instant |
| Record updated | Instant |
| Record deleted | Instant |
Airtable
| Event | Execution type |
|---|---|
| Record updated | 1-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
| Event | Execution type |
|---|---|
| Email received | 1-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
| Event | Execution type |
|---|---|
| Email received | 1-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
| Event | Execution type |
|---|---|
| Row added | 1-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
| Event | Execution type |
|---|---|
| Record created | 1-minute polling |
| Record updated | 1-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
| Event | Execution type |
|---|---|
| Record created | 1-minute polling |
| Record updated | 1-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
| Event | Execution type |
|---|---|
| Invitee Scheduled | Instant |
| Invitee Canceled | Instant |
| Invitee No Show | Instant |
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
| Event | Execution type |
|---|---|
| Record created | Instant |
| Record updated | Instant |
| Record deleted | Instant |
| Task created | Instant |
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
| Event | Execution type |
|---|---|
| Record created | Instant |
| Record updated | Instant |
| Record deleted | Instant |
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
| Trigger | Category | Execution type | Plan requirement |
|---|---|---|---|
| Record added | Softr Databases | Instant | Any |
| Record deleted | Softr Databases | Instant | Any |
| Record updated | Softr Databases | Instant | Any |
| Record meets conditions | Softr Databases | Instant | Any |
| Record enters the view | Softr Databases | Instant | Any |
| User added | Softr Apps | 1-min polling | Any |
| Comment added | Softr Apps | 1-min polling | Any |
| Submit form | Softr Apps | Synchronous | Any |
| Run custom workflow | Softr Apps | Synchronous | Any |
| Record created (UI) | Softr Apps | Synchronous | Any |
| Record updated (UI) | Softr Apps | Synchronous | Any |
| Email received | Softr Email | Instant | Basic+ |
| Webhook | Built-in | Instant | Professional+ |
| One-time schedule | Built-in | Scheduled (once) | Any |
| Recurring schedule | Built-in | Scheduled (repeating) | Any |
| Record updated | Airtable | 1-min polling | Any |
| Email received | Gmail | 1-min polling | Any |
| Email received | Outlook | 1-min polling | Any |
| Row added | Google Sheets | 1-min polling | Any |
| Record created | Notion | 1-min polling | Any |
| Record updated | Notion | 1-min polling | Any |
| Record created | HubSpot | 1-min polling | Any |
| Record updated | HubSpot | 1-min polling | Any |
| Invitee Scheduled | Calendly | Instant | Any |
| Invitee Canceled | Calendly | Instant | Any |
| Invitee No Show | Calendly | Instant | Any |
| Record created | Attio | Instant | Any |
| Record updated | Attio | Instant | Any |
| Record deleted | Attio | Instant | Any |
| Task created | Attio | Instant | Any |
| Record created | Zoho CRM | Instant | Any |
| Record updated | Zoho CRM | Instant | Any |
| Record deleted | Zoho CRM | Instant | Any |