twentyhq/twenty · warning · Error
Test workflow is not supported for database event triggers
Error message
Test workflow is not supported for database event triggers
What it means
Thrown by getTestPayloadFromTrigger when a workflow's trigger type is DATABASE_EVENT. The Twenty workflow engine cannot synthesize a test payload for database event triggers (record created/updated/deleted) because such events depend on actual workspace data mutations. MANUAL and CRON return undefined (no payload needed), WEBHOOK returns its expectedBody, but DATABASE_EVENT has no meaningful static payload.
Source
Thrown at packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTestPayloadFromTrigger.ts:20
import { assertUnreachable } from 'twenty-shared/utils';
export const getTestPayloadFromTrigger = (
trigger: WorkflowTrigger,
): Record<string, unknown> | undefined => {
switch (trigger.type) {
case 'MANUAL':
case 'CRON': {
return undefined;
}
case 'WEBHOOK': {
if (trigger.settings.httpMethod === 'POST') {
return trigger.settings.expectedBody;
}
return undefined;
}
case 'DATABASE_EVENT': {
throw new Error(
'Test workflow is not supported for database event triggers',
);
}
default: {
return assertUnreachable(trigger, 'Unknown trigger type');
}
}
};
View on GitHub (pinned to 1f5dd2bbd2)
Solutions
- Hide or disable the 'Test workflow' button in the UI when the trigger type is DATABASE_EVENT.
- Filter the trigger type before calling: skip getTestPayloadFromTrigger for DATABASE_EVENT triggers.
- To actually test a database-event workflow, create or update a real record in the workspace that matches the trigger conditions.
Example fix
// before
const payload = getTestPayloadFromTrigger(trigger);
runTestWorkflow(payload);
// after
if (trigger.type === 'DATABASE_EVENT') {
showToast('Database event workflows cannot be test-run. Create or update a record to trigger this workflow.');
return;
}
const payload = getTestPayloadFromTrigger(trigger);
runTestWorkflow(payload); Defensive patterns
Strategy: validation
Validate before calling
const canTestTrigger = (trigger: WorkflowTrigger): boolean => {
return trigger.type !== 'DATABASE_EVENT';
};
if (!canTestTrigger(trigger)) {
showToast('Database event workflows cannot be test-run manually.');
return;
} Type guard
const isDatabaseEventTrigger = (
trigger: WorkflowTrigger,
): trigger is WorkflowTrigger & { type: 'DATABASE_EVENT' } => {
return trigger.type === 'DATABASE_EVENT';
}; Try / catch
try {
const payload = getTestPayloadFromTrigger(trigger);
} catch (error) {
if (error instanceof Error && error.message.includes('DATABASE_EVENT')) {
// Disable test button for database event triggers
return;
}
throw error;
} Prevention
- Disable or hide the 'Test workflow' button in the UI when trigger.type === 'DATABASE_EVENT'.
- Filter trigger types before calling getTestPayloadFromTrigger.
- Document that database event workflows must be tested by triggering real data changes.
When it happens
Trigger: Calling getTestPayloadFromTrigger(trigger) where trigger.type === 'DATABASE_EVENT'. This happens when a user clicks a 'Test workflow' / 'Run test' button in the workflow builder UI for a workflow whose trigger is configured as a database event.
Common situations: A developer builds a workflow triggered on 'company created' and tries to test-run it from the builder. The UI should hide or disable the test button for DATABASE_EVENT triggers; if it doesn't, this error surfaces.
Related errors
- Invalid cron expression: ${errorMessage}
- Email and password are required
- No getAuthTokensFromSSOExchangeToken result
- Field ${fieldMetadata.name} is missing, please refresh the p
- Failed to create record
AI-assisted analysis of twentyhq/twenty@1f5dd2bbd2 (2026-08-12).
Data as JSON: /api/errors/a6bc0ca1eb7f846e.
Report an issue: GitHub.