twentyhq/twenty · error · Error
Failed to merge records
Error message
Failed to merge records
What it means
Thrown by useMergeRecordsActions (useMergeRecordsActions.ts:47-49) when mergeManyRecords returns a falsy mergedRecord. This indicates the merge mutation did not return the merged record, either due to a server error swallowed in the response or a schema/metadata mismatch.
Source
Thrown at packages/twenty-front/src/modules/object-record/record-merge/hooks/useMergeRecordsActions.ts:46
const setIsMergeInProgress = useSetAtomState(isMergeInProgressState);
const { t } = useLingui();
const { enqueueSuccessSnackBar, enqueueErrorSnackBar } = useSnackBar();
const { closeSidePanelMenu } = useSidePanelMenu();
const navigate = useNavigateApp();
const handleMergeRecords = async () => {
setIsMergeInProgress(true);
try {
const mergedRecord = await mergeManyRecords({
recordIds: selectedRecords.map((record) => record.id),
mergeSettings,
preview: false,
});
if (!mergedRecord) {
throw new Error('Failed to merge records');
}
const recordCount = selectedRecords.length;
enqueueSuccessSnackBar({
message: t`Successfully merged ${recordCount} records`,
});
closeSidePanelMenu();
navigate(AppPath.RecordShowPage, {
objectNameSingular,
objectRecordId: mergedRecord.id,
});
} catch (error) {
enqueueErrorSnackBar({
message:
error instanceof Error
? error.messageView on GitHub (pinned to 1f5dd2bbd2)
Solutions
- Refresh object metadata and retry the merge.
- Inspect the mergeManyRecords mutation response in Apollo devtools.
- Verify the current user has permission to merge the selected records.
- Check server logs for merge resolver errors returning null.
Defensive patterns
Strategy: try-catch
Type guard
const hasMergedRecord = <T>(r: T | null | undefined): r is T => isDefined(r);
Try / catch
try {
await handleMergeRecords();
} catch (err) {
if (err.message === 'Failed to merge records') {
enqueueErrorSnackBar({ message: t`Merge failed, please try again` });
}
} Prevention
- Refetch metadata before merging.
- Confirm the user has merge permissions on all selected records.
- Inspect the mergeManyRecords response in Apollo devtools.
- Validate selection count meets merge minimums.
When it happens
Trigger: User clicks merge with selected records, mergeManyRecords resolves, but the returned mergedRecord is undefined/null.
Common situations: Stale object metadata causing a malformed merge mutation; server-side merge validation failure returning partial/null data; Apollo cache returning an incomplete object; permissions issue preventing the merge from completing.
Related errors
- Failed to create record
- Field ${fieldMetadata.name} is missing, please refresh the p
- createCompany did not return an id
- createPerson did not return an id
- createOpportunity did not return an id
AI-assisted analysis of twentyhq/twenty@1f5dd2bbd2 (2026-08-12).
Data as JSON: /api/errors/e0bea03be0d96131.
Report an issue: GitHub.