snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
---
title: Professional Services
description: Get professional help building complex workflows and automations from Twenty's team and certified partners.
---
## When Do You Need Professional Help?
Consider professional services for:
- Complex multi-system integrations
- Advanced business logic and automation rules
- Large-scale data processing workflows
- Custom API development
- Team training and workflow optimization
- When you don't have internal resources
## Service Options
### Implementation Partners
Work with certified partners for advanced customizations. Contact us at [contact@twenty.com](mailto:contact@twenty.com) to connect with our [implementation partners](https://twenty.com/partners).

View File

@@ -0,0 +1,156 @@
---
title: Workflow Troubleshooting
description: Common workflow issues and how to resolve them.
---
## Common Issues and Solutions
### Workflow Not Triggering
**Symptoms**: Your workflow doesn't run when you expect it to.
**Possible Causes**:
1. **Workflow not activated**: Ensure the workflow is set to "Active" not "Draft"
2. **Trigger conditions not met**: Verify the trigger matches your expected event
3. **Field not monitored**: For "Record is Updated" triggers, ensure the specific field is being watched
4. **Permissions**: Check you have permission to run workflows
**Solutions**:
- Verify workflow status in the workflow list
- Test with the specific action you expect to trigger it
- Review trigger configuration
- Contact your admin about permissions
### Workflow Triggers Too Early (Empty Fields)
**Symptoms**: When manually creating a record in the UI, your workflow triggers before you've had time to fill in all the fields. The workflow runs with mostly empty field values.
**Why this happens**: Twenty saves everything in real-time — there's no separate "edit" vs "read" mode. When you create a record, it's saved immediately, triggering the "Record is created" event before you can fill in additional fields.
**When "Record is created" works well**:
- Records created via API calls (fields are populated in a single request)
- Records created via import
- Automated record creation from other workflows
**Solution**: For records created manually in the UI, use **"Record is created or updated"** as your trigger instead. This way:
- The workflow triggers after the user has finished filling in and saving the fields
- You get the complete data rather than empty values
<Tip>
If you only want the workflow to run once per record, add a Filter action to check a field like `createdAt equals updatedAt` (first save) or use a custom checkbox field to track if the workflow has already run.
</Tip>
### Actions Failing
**Symptoms**: Workflow runs but some actions fail.
**Possible Causes**:
1. **Missing data**: Required fields are empty
2. **Invalid references**: Variables from previous steps don't exist
3. **API errors**: External services returning errors
4. **Permission issues**: Action requires permissions you don't have
**Solutions**:
- Check the workflow run details for error messages
- Verify all required fields have values
- Test API connections independently
- Review role permissions
### HTTP Request Errors
**Symptoms**: HTTP Request actions fail or return unexpected results.
**Common Error Codes**:
- **400**: Bad request - check your request body format
- **401**: Unauthorized - verify API key
- **403**: Forbidden - check API permissions
- **404**: Not found - verify endpoint URL
- **429**: Too many requests - implement rate limiting
- **500**: Server error - external service issue
**Solutions**:
- Verify API endpoint URL
- Check authentication headers
- Test the API call outside of Twenty first
- Add error handling in Code actions
### Code Action Errors
**Symptoms**: JavaScript code fails to execute.
**Common Issues**:
1. **Syntax errors**: Typos or invalid JavaScript
2. **Undefined variables**: Referencing variables that don't exist
3. **Type errors**: Operations on wrong data types
4. **Timeouts**: Code taking too long to execute
**Solutions**:
- Use the built-in code editor validation
- Test code logic in a JavaScript console first
- Add console.log statements for debugging
- Simplify complex operations
### Email Not Sending
**Symptoms**: Send Email action doesn't deliver emails.
**Possible Causes**:
1. **No email account connected**: Check Settings → Accounts
2. **Invalid email address**: Recipient email is malformed
3. **Sending limits**: Email provider rate limits reached
4. **Spam filters**: Emails being blocked
**Solutions**:
- Verify email account connection
- Validate recipient email addresses
- Check email provider limits
- Review email content for spam triggers
## Debugging Workflows
### Using Workflow Runs
1. Go to the workflow editor
2. Open the **Runs** panel
3. Find the failed run
4. Click to see step-by-step details
5. Review error messages and output data
### Testing Individual Steps
1. For Code actions, use the **Test** button
2. For HTTP requests, test the endpoint separately
3. Create test records to trigger workflows
4. Use manual triggers for controlled testing
### Common Debugging Patterns
**Add logging**:
Use Code actions to log intermediate values for debugging.
**Isolate steps**:
Test each step independently to identify failures.
**Check data flow**:
Verify that each step receives the expected input data.
## Best Practices to Avoid Issues
### Before Activation
- Test thoroughly in draft mode
- Validate all API connections
- Review trigger conditions carefully
- Document expected behavior
### During Development
- Use descriptive step names
- Add comments in Code actions
- Test with realistic data
- Plan for edge cases
### After Activation
- Monitor initial runs closely
- Set up alerts for failures
- Review run history regularly
- Keep workflows simple when possible

View File

@@ -0,0 +1,237 @@
---
title: Workflows FAQ
description: Frequently asked questions about workflows in Twenty.
---
<AccordionGroup>
<Accordion title="Why can't I activate a workflow?">
This is likely a permissions issue. You need access to workflows to create and activate them.
**Solution**: Contact your workspace administrator to grant you workflow access under **Settings → Members → Roles**.
If you don't see the Workflows section at all in your sidebar, this confirms it's a permissions issue.
</Accordion>
<Accordion title="Why don't I see my manual workflow button in the top navbar?">
Manual workflows only appear in the navbar if properly configured:
1. The workflow must be **activated** (not in draft mode)
2. The navbar placement must be set to **Pinned**
3. For Single/Bulk triggers, you must be on the correct object page
**To check**: Open the workflow → click the trigger → verify "Navbar placement" is set to "Pinned".
You can always access manual workflows via **Cmd + K** (or **Ctrl + K**) regardless of navbar settings.
</Accordion>
<Accordion title="What's the difference between Single, Global, and Bulk manual triggers?">
| Type | Records Required | Workflow Runs |
|------|------------------|---------------|
| **Global** | None | Once, no record input |
| **Single** | One or more selected | Once per selected record |
| **Bulk** | One or more selected | Once, with all records as an array |
- **Global**: Use when the workflow doesn't need any record context (e.g., generate a report)
- **Single**: Use when you want to process each selected record independently (e.g., send individual emails)
- **Bulk**: Use when you need to process records together or optimize credit usage (requires Iterator action)
See [Workflow Triggers](/user-guide/workflows/capabilities/workflow-triggers) for details.
</Accordion>
<Accordion title="I don't see an If/Else node. What should I do?">
An explicit If/Else node is not yet available but is on our roadmap.
**Current workaround**: Create multiple branches from your step, each starting with a **Filter** action:
```
Step 1
│
├── Branch A: Filter (condition = true) → Actions...
│
└── Branch B: Filter (condition = false) → Actions...
```
Only the branch where the filter condition passes will execute its subsequent actions.
See [How to Use Branches](/user-guide/workflows/capabilities/workflow-branches) for a step-by-step guide.
</Accordion>
<Accordion title="Are workflow branches running in parallel?">
**Yes**, branches run in parallel by default.
If you want only one branch to execute:
- Add a **Filter** action at the start of each branch
- Set opposite conditions (e.g., Branch A: status = "Open", Branch B: status ≠ "Open")
Branches that fail their filter condition stop executing, while others continue.
</Accordion>
<Accordion title="Can I merge branches back together?">
**Yes**. After your parallel branches complete, you can add a step that both branches connect to.
In the workflow editor:
1. Complete your branched actions
2. Add a new step after the branches
3. Drag connections from the end of each branch to this new step
The merged step will execute after all connected branches complete.
</Accordion>
<Accordion title="What's the limit on Search Records results?">
**Search Records returns a maximum of 200 records.**
If you need to process more:
- Add more specific filters to reduce results
- Use scheduled workflows to process in batches
- Consider using the API for bulk operations
For most workflows, 200 records is sufficient. If you regularly hit this limit, consider restructuring your automation.
</Accordion>
<Accordion title="Can I CC people on workflow emails?">
**Not yet.** CC and BCC fields for the Send Email action are on our roadmap.
**Current workaround**: Add multiple Send Email actions to send to additional recipients, or use an HTTP Request to send via an external email service that supports CC.
</Accordion>
<Accordion title="How do I use outputs from previous steps?">
Every action produces output data that can be used in subsequent steps.
**To reference previous step data**:
- Use the variable picker when configuring a field
- Or type `{{stepName.fieldName}}` directly
**Examples**:
- Trigger data: `{{trigger.object.email}}`
- Search results: `{{searchRecords[0].name}}`
- Code output: `{{code.calculatedValue}}`
Hover over any field in the action configuration to see available variables from previous steps.
</Accordion>
<Accordion title="Why does my Iterator fail?">
**Iterator requires an array input.** Common issues:
1. **Input is not an array**: Ensure you're passing results from Search Records or another action that returns an array
2. **Array is empty**: Add a filter before Iterator to check `{{searchRecords.length}} > 0`
3. **Wrong variable selected**: Make sure you select the array itself, not a single record
**Correct setup**:
1. Search Records (returns array)
2. Filter: length > 0
3. Iterator: select `{{searchRecords}}`
4. Actions inside iterator use `{{iterator.currentItem.fieldName}}`
</Accordion>
<Accordion title="What's the maximum execution time for Code actions?">
Code actions (logic functions) have a **default timeout of 5 minutes** (300 seconds).
The maximum configurable timeout is **15 minutes** (900 seconds).
If your code exceeds this limit, the action will fail with a timeout error.
**Tips to avoid timeouts**:
- Break large operations into smaller chunks using Iterator
- Avoid heavy computations; use external services via HTTP Request for intensive processing
- Optimize your code to reduce execution time
- If you need longer processing, consider using scheduled workflows that process data in batches
</Accordion>
<Accordion title="How do I read workflow runs?">
Workflow runs show the execution history and help you debug issues.
**Access runs**:
- In workflow editor → **Runs** panel on the right
- Or go to **Workflow Runs** in the sidebar
**Understanding a run**:
- **Status**: Running, Completed, Failed, Waiting
- **Steps**: See which steps executed and their output
- **Errors**: Click failed steps to see error messages
- **Data**: View input/output data at each step
See [Workflow Runs](/user-guide/workflows/capabilities/workflow-runs) for details.
</Accordion>
<Accordion title="Why don't I see my workflow runs?">
Workflow runs might be failing immediately due to rate limits. Twenty enforces a hard limit of 5,000 runs per hour per workspace.
If you exceed this limit, workflows are immediately marked as failed and won't appear in your runs list.
**Common scenarios that hit this limit**:
- Selecting more than 5,000 records with a Single manual trigger
- Multiple workflows running simultaneously across your workspace
- High-frequency automated triggers (e.g., Record Updated on a busy object)
**Solutions**:
- Use **Bulk** triggers instead of Single to process many records in one run
- Space out large batch operations
- Use filters to reduce trigger frequency
- Schedule heavy workflows during off-peak hours
</Accordion>
<Accordion title="What are the workflow rate limits?">
Twenty has two rate limits to ensure system stability:
| Limit | Value | Behavior |
|-------|-------|----------|
| **Soft limit** | 100 runs/minute | Runs queue in "Not Started" status, processed gradually |
| **Hard limit** | 5,000 runs/hour | Runs immediately fail |
**Soft limit (100/min)**: Your workflows won't fail—they just wait in the queue and are processed over time. You can trigger more than 100 records; execution will be slower.
**Hard limit (5,000/hr)**: This applies to your entire workspace. If all your workflows combined exceed 5,000 runs in an hour, additional runs will fail immediately.
**Tips to stay within limits**:
- Use Bulk triggers with Iterator instead of Single triggers for large batches
- Combine related automations into fewer workflows
- Use scheduled workflows to spread load over time
</Accordion>
<Accordion title="Can I retry a failed workflow run?">
**No, there is no automatic retry functionality at the moment.**
If a workflow run fails, you'll need to:
1. Review the error in **Settings → Workflows → [Your Workflow] → Runs**
2. Fix the issue (data, configuration, or external service)
3. Manually trigger the workflow again on the affected record(s)
**Tips to reduce failures**:
- Add **Filter** nodes to validate data before actions
- Use **Search Records** to check if related records exist
- Test thoroughly with a few records before bulk operations
Automatic retry functionality is on our roadmap for a future release.
</Accordion>
<Accordion title="Should I deactivate workflows before CSV imports?">
**Yes, if your workflows are triggered by record creation or updates.**
When you import data via CSV, each record created or updated can trigger workflows. A large import (thousands of records) could:
- Hit the 5,000 runs/hour limit
- Consume significant workflow credits
- Send unexpected emails or notifications
- Create duplicate tasks or records
**Before a mass import**:
1. Go to **Settings → Workflows**
2. Identify workflows triggered by the object you're importing
3. **Deactivate** them temporarily
4. Run your CSV import
5. **Reactivate** the workflows when done
**Alternative**: If you need the workflows to run on imported data, import in smaller batches to stay within rate limits.
</Accordion>
<Accordion title="How do I clean up my workflow layout?">
If your workflow canvas looks messy with nodes scattered around, you can automatically organize it:
1. Right-click anywhere on the workflow canvas
2. Click **Tidy up workflow**
This will automatically rearrange all nodes into a clean, organized layout.
</Accordion>
</AccordionGroup>