From 9f97be67b1061aeb7901bbc0af41827c82db8e65 Mon Sep 17 00:00:00 2001 From: Abdul Rahman <81605929+abdulrahmancodes@users.noreply.github.com> Date: Fri, 31 Oct 2025 22:14:14 +0530 Subject: [PATCH] Migrate documentation to Mintlify and configure 301 redirects (#15502) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Completes the migration of all documentation from twenty-website to a new Mintlify-powered documentation site at docs.twenty.com. ## Changes Made ### New Package: `twenty-docs` - ✅ Created new Mintlify documentation package - ✅ Migrated 95 content pages (user-guide, developers, twenty-ui) - ✅ Migrated 81 images - ✅ Converted all custom components to Mintlify native components - ✅ Configured navigation with 2 tabs and 94 pages - ✅ Added Helper AI Agent with searchArticles tool for docs search ### Updated: `twenty-website` - ✅ Added 11 redirect rules (301 permanent) in next.config.js - ✅ Removed all documentation content (111 files) - ✅ Removed documentation routes (user-guide, developers, twenty-ui) - ✅ Removed documentation components (9 files) - ✅ Updated keystatic.config.ts - ✅ Preserved all marketing/release pages ### Updated: Core Files - ✅ Updated README.md - docs links point to docs.twenty.com - ✅ Updated CONTRIBUTING.md - code quality link updated - ✅ Updated SupportDropdown.tsx - user guide link updated - ✅ Updated Footer.tsx - user guide link updated --- .github/CONTRIBUTING.md | 8 +- README.md | 18 +- packages/twenty-docs/README.md | 94 ++++ .../frontend-commands.mdx | 6 +- .../twenty-docs/developers/local-setup.mdx | 4 +- .../self-hosting/docker-compose.mdx | 6 +- .../developers/self-hosting/setup.mdx | 12 +- .../twenty-ui/input/color-scheme.mdx | 2 +- .../twenty-docs/twenty-ui/input/select.mdx | 4 +- .../collaboration/emails-and-calendars.mdx | 4 +- .../user-guide/collaboration/notes.mdx | 20 +- .../user-guide/collaboration/tasks.mdx | 2 +- .../contact-and-account-management.mdx | 16 +- .../user-guide/crm-essentials/pipeline.mdx | 4 +- .../crm-essentials/sales-use-cases.mdx | 2 +- .../crm-essentials/view-management.mdx | 4 +- .../user-guide/data-model/data-model-faq.mdx | 2 +- .../user-guide/data-model/fields.mdx | 2 +- .../user-guide/data-model/objects.mdx | 2 +- .../configure-your-workspace.mdx | 6 +- .../getting-started/getting-around-twenty.mdx | 2 +- .../migrating-from-other-crms.mdx | 8 +- .../getting-started/what-is-twenty.mdx | 22 +- .../integrations-api/api-webhooks.mdx | 2 +- .../integrations-api/apis-overview.mdx | 2 +- .../integrations-api/integrations.mdx | 4 +- .../user-guide/settings/member-management.mdx | 2 +- .../user-guide/settings/permissions.mdx | 2 +- .../user-guide/settings/releases-settings.mdx | 2 +- .../workflows/external-tool-integration.mdx | 4 +- .../workflows/getting-started-workflows.mdx | 6 +- .../workflows/internal-automations.mdx | 2 +- .../user-guide/workflows/workflow-credits.mdx | 2 +- .../workflows/workflow-features.mdx | 2 +- .../workflows/workflow-troubleshooting.mdx | 8 +- .../twenty-emails/src/components/Footer.tsx | 2 +- .../support/components/SupportDropdown.tsx | 2 +- packages/twenty-website/keystatic.config.ts | 22 - packages/twenty-website/next.config.js | 61 +++ .../app/(public)/developers/[slug]/page.tsx | 27 - .../src/app/(public)/developers/layout.tsx | 11 - .../src/app/(public)/developers/page.tsx | 14 - .../section/[folder]/[documentation]/page.tsx | 29 -- .../developers/section/[folder]/page.tsx | 32 -- .../app/(public)/twenty-ui/[slug]/page.tsx | 29 -- .../src/app/(public)/twenty-ui/layout.tsx | 11 - .../src/app/(public)/twenty-ui/page.tsx | 17 - .../section/[folder]/[documentation]/page.tsx | 33 -- .../twenty-ui/section/[folder]/page.tsx | 38 -- .../app/(public)/user-guide/[slug]/page.tsx | 31 -- .../src/app/(public)/user-guide/algolia.css | 122 ----- .../user-guide/hooks/useHeadsObserver.tsx | 25 - .../src/app/(public)/user-guide/layout.tsx | 11 - .../src/app/(public)/user-guide/page.tsx | 16 - .../section/[folder]/[documentation]/page.tsx | 31 -- .../user-guide/section/[folder]/page.tsx | 38 -- .../app/_components/docs/AlgoliaDocSearch.tsx | 49 -- .../src/app/_components/docs/ClientOnly.tsx | 13 - .../src/app/_components/docs/DocsCard.tsx | 75 --- .../src/app/_components/docs/DocsContent.tsx | 170 ------- .../src/app/_components/docs/DocsMain.tsx | 186 ------- .../app/_components/docs/DocsMainLayout.tsx | 51 -- .../src/app/_components/docs/DocsSideBar.tsx | 118 ----- .../_components/docs/DocsSidebarSection.tsx | 214 -------- .../src/app/_components/docs/TableContent.tsx | 161 ------ .../developers/api-and-webhooks/api.mdx | 47 -- .../developers/api-and-webhooks/webhooks.mdx | 80 --- .../developers/backend-development.mdx | 6 - .../best-practices-server.mdx | 26 - .../backend-development/custom-objects.mdx | 42 -- .../backend-development/feature-flags.mdx | 53 -- .../folder-architecture-server.mdx | 130 ----- .../developers/backend-development/queue.mdx | 44 -- .../backend-development/server-commands.mdx | 101 ---- .../developers/backend-development/zapier.mdx | 77 --- .../content/developers/bug-and-requests.mdx | 17 - .../content/developers/constants/DocsIndex.ts | 41 -- .../developers/frontend-development.mdx | 6 - .../best-practices-front.mdx | 330 ------------ .../folder-architecture-front.mdx | 114 ----- .../frontend-commands.mdx | 92 ---- .../frontend-development/hotkeys.mdx | 178 ------- .../frontend-development/style-guide.mdx | 293 ----------- .../frontend-development/work-with-figma.mdx | 66 --- .../content/developers/getting-started.mdx | 6 - .../src/content/developers/graphql-apis.mdx | 6 - .../src/content/developers/local-setup.mdx | 304 ----------- .../src/content/developers/rest-apis.mdx | 6 - .../src/content/developers/self-hosting.mdx | 6 - .../self-hosting/cloud-providers.mdx | 44 -- .../self-hosting/docker-compose.mdx | 199 -------- .../content/developers/self-hosting/setup.mdx | 239 --------- .../self-hosting/troubleshooting.mdx | 218 -------- .../developers/self-hosting/upgrade-guide.mdx | 388 -------------- .../src/content/developers/ui-kit.mdx | 5 - .../content/developers/ui-kit/components.mdx | 5 - .../content/developers/ui-kit/storybook.mdx | 6 - .../twenty-ui/constants/TwentyUiIndex.ts | 38 -- .../src/content/twenty-ui/display.mdx | 5 - .../content/twenty-ui/display/app-tooltip.mdx | 84 ---- .../content/twenty-ui/display/checkmark.mdx | 65 --- .../src/content/twenty-ui/display/chip.mdx | 141 ------ .../src/content/twenty-ui/display/icons.mdx | 82 --- .../content/twenty-ui/display/soon-pill.mdx | 15 - .../src/content/twenty-ui/display/tag.mdx | 41 -- .../src/content/twenty-ui/input.mdx | 5 - .../content/twenty-ui/input/block-editor.mdx | 31 -- .../src/content/twenty-ui/input/buttons.mdx | 472 ------------------ .../src/content/twenty-ui/input/checkbox.mdx | 44 -- .../content/twenty-ui/input/color-scheme.mdx | 68 --- .../content/twenty-ui/input/icon-picker.mdx | 55 -- .../content/twenty-ui/input/image-input.mdx | 40 -- .../src/content/twenty-ui/input/radio.mdx | 103 ---- .../src/content/twenty-ui/input/select.mdx | 52 -- .../src/content/twenty-ui/input/text.mdx | 153 ------ .../src/content/twenty-ui/input/toggle.mdx | 36 -- .../src/content/twenty-ui/navigation.mdx | 5 - .../twenty-ui/navigation/breadcrumb.mdx | 40 -- .../content/twenty-ui/navigation/links.mdx | 165 ------ .../twenty-ui/navigation/menu-item.mdx | 454 ----------------- .../twenty-ui/navigation/navigation-bar.mdx | 50 -- .../content/twenty-ui/navigation/step-bar.mdx | 36 -- .../src/content/twenty-ui/progress-bar.mdx | 73 --- .../src/content/user-guide/collaboration.mdx | 7 - .../collaboration/emails-and-calendars.mdx | 101 ---- .../user-guide/collaboration/notes.mdx | 105 ---- .../user-guide/collaboration/tasks.mdx | 157 ------ .../user-guide/constants/UserGuideIndex.ts | 79 --- .../user-guide/constants/getDocsArticles.tsx | 107 ---- .../constants/groupArticlesByTopic.tsx | 14 - .../src/content/user-guide/crm-essentials.mdx | 9 - .../contact-and-account-management.mdx | 94 ---- .../user-guide/crm-essentials/pipeline.mdx | 102 ---- .../crm-essentials/sales-use-cases.mdx | 15 - .../crm-essentials/view-management.mdx | 201 -------- .../src/content/user-guide/data-model.mdx | 7 - .../data-model/creating-records.mdx | 73 --- .../data-model/customize-your-data-model.mdx | 64 --- .../user-guide/data-model/data-model-faq.mdx | 123 ----- .../content/user-guide/data-model/fields.mdx | 117 ----- .../content/user-guide/data-model/objects.mdx | 91 ---- .../user-guide/data-model/relation-fields.mdx | 54 -- .../content/user-guide/getting-started.mdx | 7 - .../configure-your-workspace.mdx | 75 --- .../getting-started/create-workspace.mdx | 61 --- .../getting-started/getting-around-twenty.mdx | 70 --- .../implementation-services.mdx | 23 - .../getting-started/import-export-data.mdx | 115 ----- .../migrating-from-other-crms.mdx | 81 --- .../getting-started/what-is-twenty.mdx | 62 --- .../content/user-guide/integrations-api.mdx | 7 - .../integrations-api/api-webhooks.mdx | 110 ---- .../integrations-api/apis-overview.mdx | 116 ----- .../integrations-api/integrations.mdx | 51 -- .../src/content/user-guide/pricing.mdx | 7 - .../pricing/billing-and-pricing-faq.mdx | 114 ----- .../src/content/user-guide/reporting.mdx | 7 - .../reporting/reporting-overview.mdx | 25 - .../src/content/user-guide/resources.mdx | 7 - .../content/user-guide/resources/github.mdx | 57 --- .../content/user-guide/resources/glossary.mdx | 72 --- .../src/content/user-guide/settings.mdx | 7 - .../user-guide/settings/domains-settings.mdx | 37 -- .../settings/email-calendar-setup.mdx | 108 ---- .../settings/experience-settings.mdx | 54 -- .../user-guide/settings/member-management.mdx | 37 -- .../user-guide/settings/permissions.mdx | 97 ---- .../user-guide/settings/profile-settings.mdx | 43 -- .../user-guide/settings/releases-settings.mdx | 30 -- .../user-guide/settings/settings-faq.mdx | 98 ---- .../settings/workspace-settings.mdx | 28 -- .../content/user-guide/views/kanban-views.mdx | 83 --- .../user-guide/views/views-sort-filter.mdx | 178 ------- .../src/content/user-guide/workflows.mdx | 7 - .../workflows/external-tool-integration.mdx | 195 -------- .../workflows/getting-started-workflows.mdx | 71 --- .../workflows/internal-automations.mdx | 150 ------ .../workflows/professional-services.mdx | 31 -- .../user-guide/workflows/workflow-credits.mdx | 85 ---- .../workflows/workflow-features.mdx | 272 ---------- .../workflows/workflow-troubleshooting.mdx | 112 ----- .../src/shared-utils/constructSections.tsx | 26 - .../src/shared-utils/fetchArticleFromSlug.ts | 6 - .../src/shared-utils/filterDocsIndex.tsx | 11 - .../src/shared-utils/getCardPath.tsx | 35 -- .../src/shared-utils/getSectionIcons.tsx | 27 - 186 files changed, 254 insertions(+), 11616 deletions(-) create mode 100644 packages/twenty-docs/README.md delete mode 100644 packages/twenty-website/src/app/(public)/developers/[slug]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/developers/layout.tsx delete mode 100644 packages/twenty-website/src/app/(public)/developers/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/developers/section/[folder]/[documentation]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/developers/section/[folder]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/twenty-ui/[slug]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/twenty-ui/layout.tsx delete mode 100644 packages/twenty-website/src/app/(public)/twenty-ui/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/[documentation]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/twenty-ui/section/[folder]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/user-guide/[slug]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/user-guide/algolia.css delete mode 100644 packages/twenty-website/src/app/(public)/user-guide/hooks/useHeadsObserver.tsx delete mode 100644 packages/twenty-website/src/app/(public)/user-guide/layout.tsx delete mode 100644 packages/twenty-website/src/app/(public)/user-guide/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/user-guide/section/[folder]/[documentation]/page.tsx delete mode 100644 packages/twenty-website/src/app/(public)/user-guide/section/[folder]/page.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/AlgoliaDocSearch.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/ClientOnly.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/DocsCard.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/DocsContent.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/DocsMain.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/DocsMainLayout.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/DocsSideBar.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/DocsSidebarSection.tsx delete mode 100644 packages/twenty-website/src/app/_components/docs/TableContent.tsx delete mode 100644 packages/twenty-website/src/content/developers/api-and-webhooks/api.mdx delete mode 100644 packages/twenty-website/src/content/developers/api-and-webhooks/webhooks.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development/best-practices-server.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development/custom-objects.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development/feature-flags.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development/folder-architecture-server.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development/queue.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development/server-commands.mdx delete mode 100644 packages/twenty-website/src/content/developers/backend-development/zapier.mdx delete mode 100644 packages/twenty-website/src/content/developers/bug-and-requests.mdx delete mode 100644 packages/twenty-website/src/content/developers/constants/DocsIndex.ts delete mode 100644 packages/twenty-website/src/content/developers/frontend-development.mdx delete mode 100644 packages/twenty-website/src/content/developers/frontend-development/best-practices-front.mdx delete mode 100644 packages/twenty-website/src/content/developers/frontend-development/folder-architecture-front.mdx delete mode 100644 packages/twenty-website/src/content/developers/frontend-development/frontend-commands.mdx delete mode 100644 packages/twenty-website/src/content/developers/frontend-development/hotkeys.mdx delete mode 100644 packages/twenty-website/src/content/developers/frontend-development/style-guide.mdx delete mode 100644 packages/twenty-website/src/content/developers/frontend-development/work-with-figma.mdx delete mode 100644 packages/twenty-website/src/content/developers/getting-started.mdx delete mode 100644 packages/twenty-website/src/content/developers/graphql-apis.mdx delete mode 100644 packages/twenty-website/src/content/developers/local-setup.mdx delete mode 100644 packages/twenty-website/src/content/developers/rest-apis.mdx delete mode 100644 packages/twenty-website/src/content/developers/self-hosting.mdx delete mode 100644 packages/twenty-website/src/content/developers/self-hosting/cloud-providers.mdx delete mode 100644 packages/twenty-website/src/content/developers/self-hosting/docker-compose.mdx delete mode 100644 packages/twenty-website/src/content/developers/self-hosting/setup.mdx delete mode 100644 packages/twenty-website/src/content/developers/self-hosting/troubleshooting.mdx delete mode 100644 packages/twenty-website/src/content/developers/self-hosting/upgrade-guide.mdx delete mode 100644 packages/twenty-website/src/content/developers/ui-kit.mdx delete mode 100644 packages/twenty-website/src/content/developers/ui-kit/components.mdx delete mode 100644 packages/twenty-website/src/content/developers/ui-kit/storybook.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/constants/TwentyUiIndex.ts delete mode 100644 packages/twenty-website/src/content/twenty-ui/display.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/display/app-tooltip.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/display/checkmark.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/display/chip.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/display/icons.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/display/soon-pill.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/display/tag.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/block-editor.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/buttons.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/checkbox.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/color-scheme.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/icon-picker.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/image-input.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/radio.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/select.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/text.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/input/toggle.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/navigation.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/navigation/breadcrumb.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/navigation/links.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/navigation/menu-item.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/navigation/navigation-bar.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/navigation/step-bar.mdx delete mode 100644 packages/twenty-website/src/content/twenty-ui/progress-bar.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/collaboration.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/collaboration/emails-and-calendars.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/collaboration/notes.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/collaboration/tasks.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/constants/UserGuideIndex.ts delete mode 100644 packages/twenty-website/src/content/user-guide/constants/getDocsArticles.tsx delete mode 100644 packages/twenty-website/src/content/user-guide/constants/groupArticlesByTopic.tsx delete mode 100644 packages/twenty-website/src/content/user-guide/crm-essentials.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/crm-essentials/contact-and-account-management.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/crm-essentials/pipeline.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/crm-essentials/sales-use-cases.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/crm-essentials/view-management.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/data-model.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/data-model/creating-records.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/data-model/customize-your-data-model.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/data-model/data-model-faq.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/data-model/fields.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/data-model/objects.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/data-model/relation-fields.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started/configure-your-workspace.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started/create-workspace.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started/getting-around-twenty.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started/implementation-services.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started/import-export-data.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started/migrating-from-other-crms.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/getting-started/what-is-twenty.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/integrations-api.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/integrations-api/api-webhooks.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/integrations-api/apis-overview.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/integrations-api/integrations.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/pricing.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/pricing/billing-and-pricing-faq.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/reporting.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/reporting/reporting-overview.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/resources.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/resources/github.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/resources/glossary.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/domains-settings.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/email-calendar-setup.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/experience-settings.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/member-management.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/permissions.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/profile-settings.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/releases-settings.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/settings-faq.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/settings/workspace-settings.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/views/kanban-views.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/views/views-sort-filter.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows/external-tool-integration.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows/getting-started-workflows.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows/internal-automations.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows/professional-services.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows/workflow-credits.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows/workflow-features.mdx delete mode 100644 packages/twenty-website/src/content/user-guide/workflows/workflow-troubleshooting.mdx delete mode 100644 packages/twenty-website/src/shared-utils/constructSections.tsx delete mode 100644 packages/twenty-website/src/shared-utils/fetchArticleFromSlug.ts delete mode 100644 packages/twenty-website/src/shared-utils/filterDocsIndex.tsx delete mode 100644 packages/twenty-website/src/shared-utils/getCardPath.tsx delete mode 100644 packages/twenty-website/src/shared-utils/getSectionIcons.tsx diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 18b00e6260..2a036e1396 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,21 +1,21 @@ # Contributing to Twenty -Thanks for considering contributing to Twenty! +Thanks for considering contributing to Twenty! -Please make sure to go through the [documentation](https://docs.twenty.com) before. +Please make sure to go through the [documentation](https://docs.twenty.com) before.
## Good first issues -Good first issues are a great way to start contributing and get familiar with the codebase. You can find them on by filtering on the [good first issue](https://github.com/twentyhq/twenty/labels/good%20first%20issue) label. +Good first issues are a great way to start contributing and get familiar with the codebase. You can find them on by filtering on the [good first issue](https://github.com/twentyhq/twenty/labels/good%20first%20issue) label. ## Issue assignment To avoid conflicts, we follow these guidelines: -1. For `Good First Issue` and `Experienced Contributor` issues without `size: long` labels, we'll merge the first PRs that meet our [code quality standards](https://twenty.com/developers). **We don't assign contributors to these issues**. For `priority: high` issues, our core team will step in within days if no adequate contributions are received. +1. For `Good First Issue` and `Experienced Contributor` issues without `size: long` labels, we'll merge the first PRs that meet our [code quality standards](https://docs.twenty.com/developers). **We don't assign contributors to these issues**. For `priority: high` issues, our core team will step in within days if no adequate contributions are received. 2. For `size: long` Issues, assigned contributors have one week to submit their first draft PR. ## How to Contribute diff --git a/README.md b/README.md index 1c1caac014..bf75ae5b65 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

The #1 Open-Source CRM

-

🌐 Website · 📚 Documentation · Roadmap · Discord · Figma

+

🌐 Website · 📚 Documentation · Roadmap · Discord · Figma


@@ -24,11 +24,11 @@
-# Installation +# Installation -See: -🚀 [Self-hosting](https://twenty.com/developers/section/self-hosting) -🖥️ [Local Setup](https://twenty.com/developers/local-setup) +See: +🚀 [Self-hosting](https://docs.twenty.com/developers/self-hosting/docker-compose) +🖥️ [Local Setup](https://docs.twenty.com/developers/local-setup) # Does the world need another CRM? @@ -44,7 +44,7 @@ We built Twenty for three reasons: # What You Can Do With Twenty -Please feel free to flag any specific needs you have by creating an issue. +Please feel free to flag any specific needs you have by creating an issue. Below are a few features we have implemented to date: @@ -131,7 +131,7 @@ Below are a few features we have implemented to date: - Star the repo - Subscribe to releases (watch -> custom -> releases) -- Follow us on [Twitter](https://twitter.com/twentycrm) or [LinkedIn](https://www.linkedin.com/company/twenty/) +- Follow us on [Twitter](https://twitter.com/twentycrm) or [LinkedIn](https://www.linkedin.com/company/twenty/) - Join our [Discord](https://discord.gg/cx5n4Jzs57) -- Improve translations on [Crowdin](https://twenty.crowdin.com/twenty) -- [Contributions](https://github.com/twentyhq/twenty/contribute) are, of course, most welcome! +- Improve translations on [Crowdin](https://twenty.crowdin.com/twenty) +- [Contributions](https://github.com/twentyhq/twenty/contribute) are, of course, most welcome! diff --git a/packages/twenty-docs/README.md b/packages/twenty-docs/README.md new file mode 100644 index 0000000000..0621cb52e0 --- /dev/null +++ b/packages/twenty-docs/README.md @@ -0,0 +1,94 @@ +# Twenty Documentation + +Official documentation for Twenty CRM, powered by [Mintlify](https://mintlify.com). + +## 🌐 Live Site + +Visit the documentation at [docs.twenty.com](https://docs.twenty.com) + +## 📚 Content + +This repository contains: +- **User Guide** (46 pages) - Complete guide for Twenty users +- **Developers** (24 pages) - Technical documentation for developers +- **Twenty UI** (25 pages) - UI component library documentation + +## 🚀 Local Development + +To run the documentation locally: + +```bash +# From the twenty monorepo root +npx nx run twenty-docs:dev +``` + +The documentation will be available at `http://localhost:3000` + +## 📝 Editing Content + +### Adding/Editing Pages + +1. Edit MDX files in the appropriate directory: + - `user-guide/` - User documentation + - `developers/` - Developer documentation + - `twenty-ui/` - Component documentation + +2. Update `docs.json` to add pages to navigation + +### MDX Format + +All documentation pages use MDX format with frontmatter: + +```mdx +--- +title: Page Title +description: Page description +image: /images/path/to/image.png +--- + +Your content here... +``` + +### Adding Images + +1. Place images in the `/images/` directory +2. Reference them in MDX: `![Alt text](/images/your-image.png)` +3. Or use Mintlify Frame component: +```mdx + + Description + +``` + +## 🔧 Configuration + +- `docs.json` - Main Mintlify configuration (navigation, theme, etc.) +- `package.json` - Package dependencies and scripts +- `project.json` - Nx workspace configuration + +## 📦 Building + +```bash +# Build the documentation +npx nx run twenty-docs:build +``` + +## 🔗 Links + +- [Twenty Website](https://twenty.com) +- [GitHub Repository](https://github.com/twentyhq/twenty) +- [Mintlify Documentation](https://mintlify.com/docs) + +## 🤝 Contributing + +To contribute to the documentation: + +1. Fork the repository +2. Make your changes in the `packages/twenty-docs` directory +3. Test locally with `npx nx run twenty-docs:dev` +4. Submit a pull request + +## 📄 License + +This documentation is part of the Twenty project and is licensed under [AGPL-3.0](../../LICENSE). + diff --git a/packages/twenty-docs/developers/frontend-development/frontend-commands.mdx b/packages/twenty-docs/developers/frontend-development/frontend-commands.mdx index 8c87468a79..914f0d32db 100644 --- a/packages/twenty-docs/developers/frontend-development/frontend-commands.mdx +++ b/packages/twenty-docs/developers/frontend-development/frontend-commands.mdx @@ -73,15 +73,15 @@ The project has a clean and simple stack, with minimal boilerplate code. ### Routing -[React Router](https://reactrouter.com/) handles the routing. +[React Router](https://reactrouter.com/) handles the routing. -To avoid unnecessary [re-renders](/contributor/frontend/best-practices#managing-re-renders) all the routing logic is in a `useEffect` in `PageChangeEffect`. +To avoid unnecessary [re-renders](/developers/frontend-development/best-practices-front#managing-re-renders) all the routing logic is in a `useEffect` in `PageChangeEffect`. ### State Management [Recoil](https://recoiljs.org/docs/introduction/core-concepts) handles state management. -See [best practices](/developers/section/frontend-development/best-practices-front#state-management) for more information on state management. +See [best practices](/developers/frontend-development/best-practices-front#state-management) for more information on state management. ## Testing diff --git a/packages/twenty-docs/developers/local-setup.mdx b/packages/twenty-docs/developers/local-setup.mdx index e980f69d6a..664ab5f883 100644 --- a/packages/twenty-docs/developers/local-setup.mdx +++ b/packages/twenty-docs/developers/local-setup.mdx @@ -232,7 +232,7 @@ If you need a Client GUI, we recommend [redis insight](https://redis.io/insight/ ## Step 5: Setup environment variables -Use environment variables or `.env` files to configure your project. More info [here](https://twenty.com/developers/section/self-hosting/setup) +Use environment variables or `.env` files to configure your project. More info [here](https://docs.twenty.com/developers/self-hosting/setup) Copy the `.env.example` files in `/front` and `/server`: ```bash @@ -301,4 +301,4 @@ You can log in using the default demo account: `tim@apple.dev` (password: `tim@a ## Troubleshooting -If you encounter any problem, check [Troubleshooting](https://twenty.com/developers/section/self-hosting/troubleshooting) for solutions. +If you encounter any problem, check [Troubleshooting](https://docs.twenty.com/developers/self-hosting/troubleshooting) for solutions. diff --git a/packages/twenty-docs/developers/self-hosting/docker-compose.mdx b/packages/twenty-docs/developers/self-hosting/docker-compose.mdx index 490b1067df..69e8eaa40e 100644 --- a/packages/twenty-docs/developers/self-hosting/docker-compose.mdx +++ b/packages/twenty-docs/developers/self-hosting/docker-compose.mdx @@ -7,7 +7,7 @@ image: /images/user-guide/objects/objects.png -Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](https://twenty.com/developers/local-setup). +Docker containers are for production hosting or self-hosting, for the contribution please check the [Local Setup](https://docs.twenty.com/developers/local-setup). ## Overview @@ -16,7 +16,7 @@ This guide provides step-by-step instructions to install and configure the Twent **Important:** Only modify settings explicitly mentioned in this guide. Altering other configurations may lead to issues. -See docs [Setup Environment Variables](https://twenty.com/developers/section/self-hosting/setup) for advanced configuration. All environment variables must be declared in the docker-compose.yml file at the server and / or worker level depending on the variable. +See docs [Setup Environment Variables](https://docs.twenty.com/developers/self-hosting/setup) for advanced configuration. All environment variables must be declared in the docker-compose.yml file at the server and / or worker level depending on the variable. ## System Requirements @@ -196,6 +196,6 @@ We strongly recommend setting up Twenty behind a reverse proxy with SSL terminat ## Troubleshooting -If you encounter any problem, check [Troubleshooting](https://twenty.com/developers/section/self-hosting/troubleshooting) for solutions. +If you encounter any problem, check [Troubleshooting](https://docs.twenty.com/developers/self-hosting/troubleshooting) for solutions. diff --git a/packages/twenty-docs/developers/self-hosting/setup.mdx b/packages/twenty-docs/developers/self-hosting/setup.mdx index e0331b13b0..8796e951a7 100644 --- a/packages/twenty-docs/developers/self-hosting/setup.mdx +++ b/packages/twenty-docs/developers/self-hosting/setup.mdx @@ -11,7 +11,7 @@ import OptionTable from '@site/src/theme/OptionTable' # Configuration Management -**First time installing?** Follow the [Docker Compose installation guide](https://twenty.com/developers/section/self-hosting/docker-compose) to get Twenty running, then return here for configuration. +**First time installing?** Follow the [Docker Compose installation guide](https://docs.twenty.com/developers/self-hosting/docker-compose) to get Twenty running, then return here for configuration. Twenty offers **two configuration modes** to suit different deployment needs: @@ -27,7 +27,7 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default **Most configuration happens through the UI** after installation: 1. Access your Twenty instance (usually `http://localhost:3000`) -2. Go to **Settings / Admin Panel / Configuration Variables** +2. Go to **Settings / Admin Panel / Configuration Variables** 3. Configure integrations, email, storage, and more 4. Changes take effect immediately (within 15 seconds for multi-container deployments) @@ -37,7 +37,7 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default **What you can configure through the admin panel:** - **Authentication** - Google/Microsoft OAuth, password settings -- **Email** - SMTP settings, templates, verification +- **Email** - SMTP settings, templates, verification - **Storage** - S3 configuration, local storage paths - **Integrations** - Gmail, Google Calendar, Microsoft services - **Workflow & Rate Limiting** - Execution limits, API throttling @@ -46,7 +46,7 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=true # default ![Admin Panel Configuration Variables](/images/user-guide/setup/admin-panel-config-variables.png) -Each variable is documented with descriptions in your admin panel at **Settings → Admin Panel → Configuration Variables**. +Each variable is documented with descriptions in your admin panel at **Settings → Admin Panel → Configuration Variables**. Some infrastructure settings like database connections (`PG_DATABASE_URL`), server URLs (`SERVER_URL`), and app secrets (`APP_SECRET`) can only be configured via `.env` file. [Complete technical reference →](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts) @@ -103,7 +103,7 @@ IS_CONFIG_VARIABLES_IN_DB_ENABLED=false **Required scopes** (automatically configured): [See relevant source code](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/src/engine/core-modules/auth/utils/get-google-apis-oauth-scopes.ts#L4-L10) - `https://www.googleapis.com/auth/calendar.events` -- `https://www.googleapis.com/auth/gmail.readonly` +- `https://www.googleapis.com/auth/gmail.readonly` - `https://www.googleapis.com/auth/profile.emails.read` ### If your app is in test mode @@ -238,4 +238,4 @@ yarn command:prod cron:workflow:automated-cron-trigger **Environment-only mode:** If you set `IS_CONFIG_VARIABLES_IN_DB_ENABLED=false`, add these variables to your `.env` file instead. - \ No newline at end of file + diff --git a/packages/twenty-docs/twenty-ui/input/color-scheme.mdx b/packages/twenty-docs/twenty-ui/input/color-scheme.mdx index d4d5e76671..f475dd1830 100644 --- a/packages/twenty-docs/twenty-ui/input/color-scheme.mdx +++ b/packages/twenty-docs/twenty-ui/input/color-scheme.mdx @@ -35,7 +35,7 @@ export const MyComponent = () => { |-------|------|-------------|--------| | variant | string | The color scheme variant. Options include `Dark`, `Light`, and `System` | light | | selected | boolean | If `true`, displays a checkmark to indicate the selected color scheme | | -| additional props | `React.ComponentPropsWithoutRef<'div'>` | Standard HTML `div` element props | +| additional props | `React.ComponentPropsWithoutRef<'div'>` | Standard HTML `div` element props | | diff --git a/packages/twenty-docs/twenty-ui/input/select.mdx b/packages/twenty-docs/twenty-ui/input/select.mdx index fb6623348b..5eca261739 100644 --- a/packages/twenty-docs/twenty-ui/input/select.mdx +++ b/packages/twenty-docs/twenty-ui/input/select.mdx @@ -6,7 +6,7 @@ image: /images/user-guide/what-is-twenty/20.png Header -Allows users to pick a value from a list of predefined options. +Allows users to pick a value from a list of predefined options. @@ -47,7 +47,7 @@ export const MyComponent = () => { | disabled | boolean | When set to `true`, disables user interaction with the component | | label | string | The label to describe the purpose of the `Select` component | | onChange | function | The function called when the selected values change | -| options | array | | +| options | array | Represents the options available for the `Selected` component. It's an array of objects where each object has a `value` (the unique identifier), `label` (the unique identifier), and an optional `Icon` | | value | string | Represents the currently selected value. It should match one of the `value` properties in the `options` array | diff --git a/packages/twenty-docs/user-guide/collaboration/emails-and-calendars.mdx b/packages/twenty-docs/user-guide/collaboration/emails-and-calendars.mdx index 0b6a1bfa01..9f613184b3 100644 --- a/packages/twenty-docs/user-guide/collaboration/emails-and-calendars.mdx +++ b/packages/twenty-docs/user-guide/collaboration/emails-and-calendars.mdx @@ -8,7 +8,7 @@ sectionInfo: Centralize communications and team collaboration Header -**Note**: To connect your email accounts and configure sync settings, visit [Email & Calendar Setup](/user-guide/section/settings/email-calendar-setup). +**Note**: To connect your email accounts and configure sync settings, visit [Email & Calendar Setup](/user-guide/settings/email-calendar-setup). ## How Email Integration Works @@ -19,7 +19,7 @@ Twenty automatically links emails from your connected mailboxes to the relevant Email conversations appear in three main objects: - **People**: View all emails exchanged with a specific contact -- **Companies**: See all emails related to a company and its employees +- **Companies**: See all emails related to a company and its employees - **Opportunities**: Access email threads related to the company linked to this opportunity. Email threads from individual people on the opportunity are not shown yet. ### Viewing Email Threads diff --git a/packages/twenty-docs/user-guide/collaboration/notes.mdx b/packages/twenty-docs/user-guide/collaboration/notes.mdx index 7eb6f6d8a2..5f773e3613 100644 --- a/packages/twenty-docs/user-guide/collaboration/notes.mdx +++ b/packages/twenty-docs/user-guide/collaboration/notes.mdx @@ -28,7 +28,7 @@ Manage your record-linked notes efficiently using the powerful **Notes** feature - **Team Handoffs**: Share context when transferring accounts between team members ### Automated Note Creation -Use [Workflows](/user-guide/section/workflows/getting-started-workflows) to automatically create notes: +Use [Workflows](/user-guide/workflows/getting-started-workflows) to automatically create notes: - **Call Recorder Integration**: Auto-generate meeting summaries from recorded calls - **Deal Handoff Notes**: Auto-create sales cycle summaries when handing off new customers to implementation teams @@ -37,7 +37,7 @@ Use [Workflows](/user-guide/section/workflows/getting-started-workflows) to auto ### Relations Field Notes include a **Relations** field that allows you to attach a single note to multiple records across different objects. For example, you can link one meeting note to: - The Person you met with -- The Company they represent +- The Company they represent - The Opportunity being discussed - Any relevant Tasks or other records @@ -50,7 +50,7 @@ This morph many relationship ensures important information is accessible from al Creating notes in the system is intuitive and dynamic. You can either: -- Navigate to the notes view and create a new record. +- Navigate to the notes view and create a new record. - Go to a `Record page` and select the Notes tab and press the `New note` button. @@ -64,22 +64,22 @@ Start typing directly or press `/` to add elements like headings, files, or imag You can format your notes right from the editor. Use Markdown syntax, press the `/` key or click on the `+` icon on the editor to see the different block options, such as headings, tables, and lists. You can also attach images to your note. -Highlight the text to see more formatting options like bold, italics, and alignment options. +Highlight the text to see more formatting options like bold, italics, and alignment options. You can also change the background color and text color of each block to highlight important things in your note. To do so, hover over the block you want to format and click on the `⋮` icon besides the `+` icon. Click on `Colors` to open up all color options for both the text and the background.
- -
- - -## Viewing Notes - -The system displays all your notes linked to a specific record under the Notes section on the corresponding `Record page`. - -## Saving And Deleting - -All edits and additions to the note are automatically saved. - -To delete a note: - -1. Open the note you wish to remove by clicking on it from within the `Record page`. -2. Select the note you want to delete within the notes tab. -3. Use the `Option` button in the lower right corner to prompt additional actions including delete. -4. Complete your deletion when prompted with the confirmation modal. - -Another way to delete a note is through the notes view like you would a regular record. Please be aware that deleting a note is permanent and can't be undone. - - diff --git a/packages/twenty-website/src/content/user-guide/collaboration/tasks.mdx b/packages/twenty-website/src/content/user-guide/collaboration/tasks.mdx deleted file mode 100644 index b5b94fcb11..0000000000 --- a/packages/twenty-website/src/content/user-guide/collaboration/tasks.mdx +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Tasks -info: Understand how to effectively manage tasks in Twenty. -image: /images/user-guide/tasks/tasks_header.png -sectionInfo: Discover how to leverage Notes and Tasks to better collaborate with your team. ---- - -Manage all tasks within your workspace using the **Tasks** feature. This guide will show you how to create and manage tasks, switch between upcoming and completed tasks, edit task details, and much more. - -## Common Use Cases - -### Sales Follow-ups -- **Meeting Next Steps**: Create tasks for action items discussed during client calls -- **Proposal Follow-ups**: Set reminders to check on pending proposals -- **Contract Reviews**: Schedule tasks for contract negotiations and approvals - -### Customer Success -- **Onboarding Tasks**: Automatically create onboarding checklists when deals close -- **Check-in Reminders**: Schedule regular customer health check calls -- **Renewal Preparation**: Set tasks to prepare for contract renewals 90 days in advance - -### Internal Project Management -Beyond sales and customer success, Tasks support broader organizational needs: -- **Product Development**: Track feature releases, bug fixes, and development milestones -- **Marketing Campaigns**: Manage campaign launches, content creation, and promotional activities -- **HR Operations**: Handle recruitment processes, employee onboarding, and performance reviews -- **Finance Tasks**: Schedule budget reviews, invoice processing, and financial reporting -- **Operations**: Coordinate facility management, vendor relationships, and process improvements - -### Automated Task Creation -Use [Workflows](/user-guide/section/workflows/getting-started-workflows) to automatically create tasks: -- **Deal Won Triggers**: Auto-create onboarding tasks assigned to CS team when opportunities close -- **Email Reminders**: Set up weekly email reminders for tasks due this week (sent every Monday) -- **Pipeline Automation**: Create follow-up tasks when deals stall in specific stages -- **Meeting Integration**: Auto-generate tasks from meeting recordings or calendar events - - -## Task Features - -### Relations Field -Tasks include a `Relations` field that allows you to attach a single task to multiple records across different objects. For example, you can link one follow-up task to: -- The Person you need to contact -- The Company they represent -- The Opportunity being pursued -- Any relevant Notes or other records - -This morph many relationship ensures tasks are accessible from all relevant record pages and provides complete context. - -### User Tagging -**Note**: User tagging within tasks is not currently available. This feature is planned for 2026, which will allow you to mention team members and trigger notifications when assigning or updating tasks. - -## Creating Tasks - -Creating tasks in Twenty is seamless. You can either: - -- Go to the `Tasks`tab and press the `+` button at the top right of the page. -- Use the search function by pressing `cmd/ctrl + k`, then select 'Create task' from the list of quick actions. -- Go to a `Record page` and press `+` at the top right of the page, or go to the Task tab and press the `Add Task` button. - -
- -
- - -### Adding Task Content - -Once you've created a task you can enrich it with rich content, such as Titles, Bullet points or even images. To do so, press `/` and enter the desired command. - -## Viewing Tasks - -The **Tasks** page displays all your tasks across your workspace. Here you can: - -- Filter tasks assigned to a specific user by clicking the button with your name at the top right of the screen. -- Toggle between upcoming (`To do`) and completed (`Done`) tasks to see what needs attention and what you have accomplished. - -You can also see tasks for a given Record on its `Record page`. - -
- -
- - -## Editing Tasks - -To edit a task, you should click on its card. This will open a side panel offering the following features: - -- **Assignee and Due date**: Update the assignee or edit the due date. -- **Comments**: Work together with your team members by adding comments on tasks to give updates or feedback. -- **Automations**: Thanks to the API and Webhooks, you can also automate task creation triggered by specific activities in your workspace. - -## Marking Tasks as Complete - -To mark a task as complete: - -1. Locate the task on your `Tasks` page or within a `Record page`. -2. Click on the circle at the left of the task card, it will change to signify completion. -3. The task status will automatically update to `Done`. - -This procedure will help keep an updated record of your accomplishments. - -
- -
- - -## Delete a task - -To permanently remove a task: - -1. Open the task you want to delete by clicking on its card, either from the `Tasks` page or within a `Record page`. -2. Click the trash icon located in the top right corner of the task details panel. - -Please note, deleting a task is permanent and can't be undone. Consider marking tasks as `Done` if there is a chance you will need to refer to them again. - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/constants/UserGuideIndex.ts b/packages/twenty-website/src/content/user-guide/constants/UserGuideIndex.ts deleted file mode 100644 index 1c2f4cce7c..0000000000 --- a/packages/twenty-website/src/content/user-guide/constants/UserGuideIndex.ts +++ /dev/null @@ -1,79 +0,0 @@ -export const USER_GUIDE_INDEX = { - 'User Guide': { - 'Getting Started': [ - { fileName: 'getting-started' }, - { fileName: 'what-is-twenty' }, - { fileName: 'create-workspace' }, - { fileName: 'getting-around-twenty' }, - { fileName: 'configure-your-workspace' }, - { fileName: 'implementation-services' }, - { fileName: 'migrating-from-other-crms' }, - { fileName: 'import-export-data' }, - ], - 'Data Model': [ - { fileName: 'customize-your-data-model' }, - { fileName: 'objects' }, - { fileName: 'fields' }, - { fileName: 'relation-fields' }, - { fileName: 'data-model-faq' }, - { fileName: 'data-model' }, - ], - 'CRM Essentials': [ - { fileName: 'crm-essentials' }, - { fileName: 'contact-and-account-management' }, - { fileName: 'pipeline' }, - { fileName: 'view-management' }, - { fileName: 'sales-use-cases' }, - ], - 'Workflows': [ - { fileName: 'getting-started-workflows' }, - { fileName: 'workflow-features' }, - { fileName: 'internal-automations' }, - { fileName: 'external-tool-integration' }, - { fileName: 'workflow-troubleshooting' }, - { fileName: 'workflow-credits' }, - { fileName: 'professional-services' }, - { fileName: 'workflows' }, - ], - 'Collaboration': [ - { fileName: 'collaboration' }, - { fileName: 'emails-and-calendars' }, - { fileName: 'notes' }, - { fileName: 'tasks' }, - ], - 'Integrations API': [ - { fileName: 'apis-overview' }, - { fileName: 'api-webhooks' }, - { fileName: 'integrations-api' }, - { fileName: 'integrations' }, - ], - 'Reporting': [ - { fileName: 'reporting' }, - { fileName: 'reporting-overview' }, - ], - 'Settings': [ - { fileName: 'settings' }, - { fileName: 'profile-settings' }, - { fileName: 'experience-settings' }, - { fileName: 'email-calendar-setup' }, - { fileName: 'workspace-settings' }, - { fileName: 'member-management' }, - { fileName: 'permissions' }, - { fileName: 'domains-settings' }, - { fileName: 'releases-settings' }, - { fileName: 'settings-faq' }, - ], - 'Pricing': [ - { fileName: 'pricing' }, - { fileName: 'billing-and-pricing-faq' }, - ], - 'Resources': [ - { fileName: 'resources' }, - { fileName: 'glossary' }, - { fileName: 'github' }, - ], - }, - Developers: { - 'Empty Section': [], - }, -}; diff --git a/packages/twenty-website/src/content/user-guide/constants/getDocsArticles.tsx b/packages/twenty-website/src/content/user-guide/constants/getDocsArticles.tsx deleted file mode 100644 index e232aec4ab..0000000000 --- a/packages/twenty-website/src/content/user-guide/constants/getDocsArticles.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import fs from 'fs'; -import matter from 'gray-matter'; -import path from 'path'; - -import { DOCS_INDEX } from '@/content/developers/constants/DocsIndex'; -import { TWENTY_UI_INDEX } from '@/content/twenty-ui/constants/TwentyUiIndex'; -import { USER_GUIDE_INDEX } from '@/content/user-guide/constants/UserGuideIndex'; - -export interface DocsArticlesProps { - title: string; - info: string; - image: string; - fileName: string; - topic: string; - section: string; - sectionInfo: string; - numberOfFiles: number; -} - -export function getDocsArticles(basePath: string, isSideBar = false) { - const guides: DocsArticlesProps[] = []; - const index = basePath.includes('developers') - ? DOCS_INDEX - : basePath.includes('user-guide') - ? USER_GUIDE_INDEX - : TWENTY_UI_INDEX; - - const findFileRecursively = ( - directory: string, - fileName: string, - ): string | null => { - const files = fs.readdirSync(directory); - - for (const file of files) { - const fullPath = path.join(directory, file); - const stat = fs.statSync(fullPath); - - if (stat.isDirectory()) { - const nestedResult = findFileRecursively(fullPath, fileName); - if (nestedResult) { - return nestedResult; - } - } else if (stat.isFile() && path.basename(fullPath) === fileName) { - return fullPath; - } - } - - return null; - }; - - const processFiles = ( - section: string, - topic: string, - files: { fileName: string }[], - ): void => { - if (files.length === 0) { - guides.push({ - title: '', - info: '', - image: '', - fileName: '', - topic: topic, - section: section, - sectionInfo: '', - numberOfFiles: 0, - }); - return; - } - files.forEach(({ fileName }) => { - let filePath; - if (isSideBar) { - const nestedPath = findFileRecursively(basePath, `${fileName}.mdx`); - const directPath = `${basePath}${fileName}.mdx`; - filePath = nestedPath || directPath; - } else { - filePath = `${basePath}${fileName}.mdx`; - } - if (fs.existsSync(filePath)) { - const fileContent = fs.readFileSync(filePath, 'utf-8'); - const { data: frontmatter } = matter(fileContent); - - guides.push({ - title: frontmatter.title || '', - info: frontmatter.info || '', - image: frontmatter.image || '', - fileName: fileName, - topic: topic, - section: section, - sectionInfo: frontmatter.sectionInfo || '', - numberOfFiles: files.length, - }); - } - }); - }; - - for (const [mainTopic, subTopics] of Object.entries(index)) { - if (typeof subTopics === 'object' && !Array.isArray(subTopics)) { - for (const [subTopic, files] of Object.entries(subTopics)) { - processFiles(mainTopic, subTopic, files as { fileName: string }[]); - } - } else { - processFiles(mainTopic, mainTopic, subTopics); - } - } - - return guides; -} diff --git a/packages/twenty-website/src/content/user-guide/constants/groupArticlesByTopic.tsx b/packages/twenty-website/src/content/user-guide/constants/groupArticlesByTopic.tsx deleted file mode 100644 index 76b5c21638..0000000000 --- a/packages/twenty-website/src/content/user-guide/constants/groupArticlesByTopic.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; - -export const groupArticlesByTopic = ( - items: DocsArticlesProps[], -): Record => { - return items.reduce( - (acc, item) => { - acc[item.topic] = acc[item.topic] || []; - acc[item.topic].push(item); - return acc; - }, - {} as Record, - ); -}; diff --git a/packages/twenty-website/src/content/user-guide/crm-essentials.mdx b/packages/twenty-website/src/content/user-guide/crm-essentials.mdx deleted file mode 100644 index 484fd673ea..0000000000 --- a/packages/twenty-website/src/content/user-guide/crm-essentials.mdx +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: CRM Essentials -info: "Essential CRM features for managing leads, sales, and customers." -icon: IconTarget -image: /images/user-guide/home/contact-and-account-management.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- - - diff --git a/packages/twenty-website/src/content/user-guide/crm-essentials/contact-and-account-management.mdx b/packages/twenty-website/src/content/user-guide/crm-essentials/contact-and-account-management.mdx deleted file mode 100644 index 334bf17703..0000000000 --- a/packages/twenty-website/src/content/user-guide/crm-essentials/contact-and-account-management.mdx +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Contact and Account Management -info: "Create and manage People and Company records to build your customer database." -icon: IconNote -image: /images/user-guide/home/contact-and-account-management.png -sectionInfo: "Essential CRM features for managing leads, sales, and customers" ---- - -## Getting data into your CRM - -When you start using Twenty, you'll want to get your contacts and companies into the system. There are several ways to populate your CRM depending on your workflow and data sources. - -### Manual entry - -The most straightforward approach is adding records directly through the Twenty interface. Go to the `People` section and click the `+` button to add a new contact. Fill in their name, email, phone, and link them to their company. For companies, head to the `Companies` section and add the organization details: company name, domain, industry, and size. - -The domain field is particularly important for company identification, and the email field is essential for person identification. - -### CSV imports - -When you have existing data from spreadsheets or other systems, CSV import is your fastest option. You can prepare your data in Excel or Google Sheets, then upload it all at once. This is particularly useful when migrating from another CRM or when someone has been tracking contacts in spreadsheets. Our [Import/Export Data](/user-guide/section/getting-started/import-export-data) guide walks you through the process. - -### Automated data capture - -For ongoing lead generation, you can set up automated workflows that bring data directly into Twenty: - -**Website forms**: When someone fills out a form on your website, you can configure it to send the information to Twenty automatically. The form submission triggers a webhook that activates a workflow in Twenty, creating the new contact record without any manual work. - -**Integration with other systems**: If you use other business tools, you can connect them to Twenty using API calls and workflows. This lets you automatically sync data between systems: for example, bringing in new customers from your billing system or leads from your marketing platform. - -To learn more about setting up these automated data flows, check out our [Workflows](/user-guide/section/workflows) section. - -### Email and calendar sync - -When you connect your mailbox and calendar to Twenty, the system can automatically create People and Companies records for people you email or meet with. If you send an email to someone who isn't already in your CRM, Twenty can create a new Person record for them. The same happens when you schedule meetings with new contacts through your calendar. - -This is particularly useful for sales and business development teams who are constantly meeting new people. Instead of manually adding every new contact, Twenty captures them automatically as you communicate. Learn how to set this up in our [Emails and Calendars](/user-guide/section/collaboration/emails-and-calendars) guide. - -### Reducing manual work - -Even when adding data manually, you can use workflows to streamline the process. For instance, you might set up automation that assigns new contacts to team members based on their location, or that automatically creates follow-up tasks when certain types of contacts are added. - -## Organizing your contacts - -### Keeping data unique and clean - -Twenty automatically enforces uniqueness to keep your data organized. Each person's email address serves as a unique identifier: you can't have two people with the same email. Similarly, company domains are unique, so you won't accidentally create duplicate companies. - -If your business needs other fields to be unique (like phone numbers, or reference codes), you can configure this in your data model. Head to our [Data Model](/user-guide/section/data-model/customize-your-data-model) section to learn how to set up additional uniqueness constraints for your specific needs. - -### Handling duplicates - -Sometimes you'll end up with duplicate records. Twenty has a merge feature for both People and Companies: you can combine duplicate records to keep your database clean without losing any information. - -To merge records, select 2 records, open the command menu `Cmd+K` on Mac, `Ctrl+K` on Windows and click `Merge Records`. - -### Creating company hierarchies - -If you work with large organizations that have subsidiaries or multiple divisions, you can create relationships between companies. Set up relationship fields between Company records to map out these connections. This helps you understand the full organizational structure you're dealing with. - -### Customizing your views - -Different team members might need to see different information. You can create custom views that show different columns for different purposes: maybe your sales team needs to see deal stages while your support team focuses on contact details. Learn more about this in our [View Management](/user-guide/section/crm-essentials/view-management) article. - -## Working with records - -### What you'll find in each record - -When you open a Person or Company record, you'll see all their information organized in tabs: - -- **Fields**: The basic information like name, email, phone, and any custom fields you've added -- **Relations**: Shows the connections between this record and records from other objects -- **Timeline**: A chronological view of all interactions and updates to this record -- **Tasks**: Any follow-up tasks related to this contact -- **Notes**: Team notes and observations about this person or company -- **Files**: Documents and attachments related to this record -- **Emails**: Email threads with this contact (when your team has connected their mailboxes) -- **Calendar**: Meetings and appointments with this contact - -The Email and Calendar tabs are particularly powerful: they automatically show all email exchanges and meetings that anyone on your team has had with this contact, as long as they've connected their mailbox to Twenty. You can learn more about setting this up in our [Emails and Calendars](/user-guide/section/collaboration/emails-and-calendars) guide. - -### Adding the fields you need - -The standard fields might not capture everything important for your business. If you need additional information: like customer segments, referral sources, or industry-specific data: you can add custom fields or modify existing ones. Head to our [Data Model](/user-guide/section/data-model/customize-your-data-model) section to learn how to customize your setup. - -## Managing deleted records - -When you delete a record in Twenty, it's not gone forever. Records are "soft deleted," which means they're hidden but can be restored if needed. - -To access deleted records, open the command menu `Cmd+K` on Mac, `Ctrl+K` on Windows, then click `See deleted records`. From there, you can either restore records or permanently delete them if you're sure you don't need them. - -This safety net means you can clean up your database without worrying about accidentally losing important information. - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/crm-essentials/pipeline.mdx b/packages/twenty-website/src/content/user-guide/crm-essentials/pipeline.mdx deleted file mode 100644 index a74068d00a..0000000000 --- a/packages/twenty-website/src/content/user-guide/crm-essentials/pipeline.mdx +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Pipeline -info: "Track and manage your sales opportunities through customizable pipeline stages." -icon: IconNote -image: /images/user-guide/kanban-views/kanban.png -sectionInfo: "Essential CRM features for managing leads, sales, and customers" ---- - -## Understanding Pipelines - -A sales pipeline tracks opportunities from initial contact to closed deal. Each stage represents a step in your sales process, and opportunities move through these stages as they progress toward closing. - -Twenty includes standard sales stages like Prospecting, Qualification, Proposal, Negotiation, Closed. You can customize these stages to match your specific sales process. - -## Working with Kanban Views - -Kanban views visually map out your pipeline, where each column represents a stage and each card represents an opportunity. Each card shows key information like deal value, close date, and assigned owner at a glance. For complete details: including notes, tasks, meetings, and email history, click on any card to open the full opportunity record. - -### Moving opportunities through your pipeline - -You can move each opportunity between stages as it progresses through your sales process by dragging and dropping. Hold your click on a card and move it to the next stage. - -
- -
- - -### Customizing your pipeline stages - -You can tailor your pipeline to suit your specific sales process. Stages represent values in a Select Field, so you can add, remove, or rename them as needed. - -#### Adding stages - -To add a stage, access the Select Field Settings by navigating to Settings → Data Model, selecting your object, and then the field your Kanban board depends on. - -
- -
- - -#### Removing stages - -To remove a stage, hover the stage name or the `⋮` icon, click `Edit from settings` in the Select Field settings, and then click `Delete` next to the relevant stage. - - - -### Customizing the cards - -You can configure your Kanban board to display some fields and hide others. To hide a field, click on `Options` on the top right, then on `Fields` to bring up the list of options. Hover the field you want to hide to bring up the `-` button. Click on it to hide the field. - -You can also rearrange the order of fields by holding down the field name and dragging it to where you want it. - - - -### Compact view - -You can also hide all the fields and get an overview of all the opportunities at a glance. To do so, click on `Options` on the top right and turn on the toggle for `Compact view` after selecting layout in kanban view. - - - -## Advanced pipeline management - -### Automation with workflows - -Use [Workflows](/user-guide/section/workflows/getting-started-workflows) to automate your pipeline: -- **Automatic stage progression**: Move deals based on activities -- **Notifications**: Alert team members of stage changes -- **Task creation**: Generate follow-up tasks for each stage - -### Multiple pipelines - -You can create different pipelines for various business lines, market segments, or specialized sales teams by creating new views. Each view can show different opportunities with specific filters and stages tailored to your needs. Learn how to create those views in our [View Management](/user-guide/section/crm-essentials/view-management) guide. - - diff --git a/packages/twenty-website/src/content/user-guide/crm-essentials/sales-use-cases.mdx b/packages/twenty-website/src/content/user-guide/crm-essentials/sales-use-cases.mdx deleted file mode 100644 index a6b8963750..0000000000 --- a/packages/twenty-website/src/content/user-guide/crm-essentials/sales-use-cases.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Sales Use Cases -info: "Discover advanced sales capabilities that can be built using Twenty's workflow system." -icon: IconNote -image: /images/user-guide/workflows/sales-use-cases.png -sectionInfo: "Essential CRM features for managing leads, sales, and customers" ---- - -## Advanced Sales Capabilities - -GTM teams often need advanced sales capabilities like lead scoring, data enrichment, round robin, territory assignment, automated reminders, and email sequences. While these aren't built-in features in Twenty, they can all be configured and tailored to your specific needs using our flexible workflow system. - -Visit our [Workflows section](/user-guide/section/workflows) to learn how to build these automations step by step. For detailed examples, see our [Internal Automations](/user-guide/section/workflows/internal-automations) and [External Tool Integration](/user-guide/section/workflows/external-tool-integration) guides. - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/crm-essentials/view-management.mdx b/packages/twenty-website/src/content/user-guide/crm-essentials/view-management.mdx deleted file mode 100644 index 17fb001d28..0000000000 --- a/packages/twenty-website/src/content/user-guide/crm-essentials/view-management.mdx +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: View Management -info: "Create and customize views to organize your data with filters, sorting, and different layouts." -icon: IconNote -image: /images/user-guide/table-views/table.png -sectionInfo: "Essential CRM features for managing leads, sales, and customers" ---- - -## Layout Options - -You can display your data in three different layouts, each suited for different purposes. Custom layouts to customize what the page looks like for each type of record will be released in December 2025. - -### Default View -Each object comes with an unfiltered, unsorted, and undeletable view known as the Default view. It's named after the object's plural name, such as`All Companies`,`All People`, `All Opportunities`. - - -### List Layout -The standard table format that displays records in rows and columns. This is perfect for seeing detailed information at a glance and comparing records side by side. - -### List Group By Layout -Organizes your records by grouping them based on a select field. For example, you can group opportunities by stage, companies by locations, or any other select field. This helps you see patterns and organize related records together. - -### Kanban Layout -A visual board where each column represents a stage and each record appears as a card. This layout is ideal for managing pipelines and workflows where records move through different stages. For more details on using Kanban views for pipeline management, see our [Pipeline](/user-guide/section/crm-essentials/pipeline) article. - -
- -
- - -## Creating New Views - -There are three ways to create a new view: - -### Using the Command Menu -Use `Cmd+K` on Mac (or `Ctrl+K` on Windows) to open the command menu, then click `Create a new view`. - -### Using the View Dropdown Menu -Click on the view dropdown menu (top left), then click `Add View` at the bottom. From this menu you can: -- Choose an icon and name for your view -- Select the layout type (List or Kanban) - - -Important: You need to first select the List layout and then add a Group By. You cannot create a List Group By directly from there. - -- For Kanban views, select which select field to use as column headers - -
- -
- - -### Creating Views from Existing Filters - -When you modify the sorting and filtering of an existing view, a `Save as new view` button appears. This lets you create a new view based on your current customizations. - -
- -
- - -## Making Views Actionable - -The guidance below shows you how to customize the columns of your views. We do not recommend keeping all the columns: those views can be simplified and made actionable by adding sorting conditions and displaying only certain columns that are relevant to your specific use case. - -## Customizing Your Views - -All layouts support the same customization options: sorting, filtering, and field selection. You can make quick one-time changes by clicking directly on the column name, or use the `Options Menu` for more comprehensive editing. - - -### Quick Actions vs Options Menu - -**For one-time changes**: Click directly on column headers to sort, or use the ```Move Left```, ```Move Right``` buttons. - -**For multiple edits**: Use the `Options Menu` (top right corner) when you want to make several changes in a row. This menu gives you access to: -- **Layout selection** (List, List Group By, Kanban) -- **Grouping options** (for List Group By layout) -- **Fields management** (show/hide and reorder columns) - -### Filtering Your Data - -You can apply filters to show only the records that match your criteria. Click `Filter` in the toolbar, select a field, choose your condition, and set the value. You can add multiple filters for advanced filtering based on several conditions. - - -
- -
- - -### Sorting Your Records - -Control the order of your records by clicking on any column header to sort by that field. Click again to reverse the sort order. You can apply multiple sorts for complex organization. - - -
- -
- - -### Managing Fields and Columns - -You can choose which fields to display and reorder them. For quick changes, click on a column name directly. For multiple edits, use `Options Menu → Fields` where you can: -- Show or hide fields using the eye icon -- Reorder fields by dragging and dropping -- Make multiple changes efficiently in one place - - - -## Managing Your Views - -### View Dropdown Menu Features - -The view dropdown menu (top left) is your central hub for view management. From here you can: -- **Edit view names and icons**: Click the three dots next to any view -- **Reorder views**: Drag and drop views to organize them by priority -- **Save views as favorites**: Favorites appear just under Settings for quick access - - -### Editing and Deleting Views - -To modify or remove views, open the view dropdown menu and hover over the view you want to change. Click the three dots that appear to access edit and delete options. - - - -### Favorites and Organization - -Views saved as favorites appear just under Settings in your navigation, giving you instant access to your most important views. Use the view dropdown menu to organize your views by dragging them into the order that works best for your workflow. - -For more advanced data organization, see our [Data Model section](/user-guide/section/data-model) to learn about customizing fields and objects. - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/data-model.mdx b/packages/twenty-website/src/content/user-guide/data-model.mdx deleted file mode 100644 index 741fecb194..0000000000 --- a/packages/twenty-website/src/content/user-guide/data-model.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Data Model -info: Customize your data model to fit your unique business processes. -icon: IconChecklist -image: /images/user-guide/fields/data_model.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- diff --git a/packages/twenty-website/src/content/user-guide/data-model/creating-records.mdx b/packages/twenty-website/src/content/user-guide/data-model/creating-records.mdx deleted file mode 100644 index 8d00b1d806..0000000000 --- a/packages/twenty-website/src/content/user-guide/data-model/creating-records.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Table Views -info: "Learn how to customize and navigate Table Views." -icon: IconChecklist -image: /images/user-guide/table-views/table.png -sectionInfo: Discover how to use standard and custom objects in your workspace. ---- - -## About Table Views - -Table views are visual representations of data structured in rows and columns. - -## Create record - -Add records as needed, without limits. To add a record, you can either click on the **+** button at the top right of the screen or at the top of the record **Name** column. - -Enter the record name then press `Enter` to save. To edit a record name, click on its name on its detail page. - -
- -
- - - -## Delete record - -**Index View:** To delete a record, select the checkbox next to the record and click the delete button in the top right corner. - -**Record Page:** Tap the `⋮` icon in the top right corner, then select delete. - - -
- -
- - -## Add a Custom Field - -To create a custom field, click the **+** button at the right end of the table columns and select **Customize fields**. - - - -You can also do it by navigating to **Settings** > **Data Model** > **People**. Click on **Add Field**. Choose a field name and type. The new field will be available in the app. - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/data-model/customize-your-data-model.mdx b/packages/twenty-website/src/content/user-guide/data-model/customize-your-data-model.mdx deleted file mode 100644 index 96f09b74ce..0000000000 --- a/packages/twenty-website/src/content/user-guide/data-model/customize-your-data-model.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Customize your data model -info: "Learn how to design and create a data model that reflects how you operate." -icon: IconNote -image: /images/user-guide/fields/custom_data_model.png -sectionInfo: Flexible data model designed to support your unique business processes ---- - -## What is a data model? -A data model is the structure that defines how information is organized in your CRM. It determines what objects exist (like companies, people, or opportunities), what properties they have (those are the fields), and how they relate to each other. You can think of it as the map of your customer data. - -## Why should you customize your data model? -Every business works differently. Being able to fully customize your data model means you can shape Twenty around your processes instead of forcing yours into a rigid system. -Twenty offers the flexibility you need to shape the data model that will best support your day-to-day. You can create as many custom objects and fields as you need, the price won't change. - -## Tips to design your data model -There is rarely only one way to build a data model. Below are a few tips to help you build yours. - -**1. Start with your core objects.** -Identify the main concepts you work with (e.g. Companies, People, Opportunities). Those three objects are already available as they are used very often. But think of any other you might need. -Example: Stripe would need an object ```Subscriptions```, Airbnb would need an object ```Trips```, a start-up accelerator an object ```Batches```. - -**2. Use fields for variations, not new objects.** -If something is just a characteristic of an existing object (e.g. ```Industry``` for a Company, or ```Status``` for an Opportunity), make it a field. Fields are best for categories, labels, and attributes. - -**3. Create a new object when it stands on its own.** -If the concept has its own lifecycle, properties, or relationships, it usually deserves an object. For example: -- **Projects** that have their own deadlines, owners, and tasks -- **Subscriptions** that connect companies, products, and invoices -- **Events** that involve many attendees and follow-up actions - -These go beyond a single field because they carry their own data and relationships. - -**4. Create an object when the number of related records is open-ended.** -If something can be linked multiple times and you don’t know how many, it’s better as its own object. For instance, instead of creating fields like `Product 1`, `Product 2`, etc., define a `Product` object and relate it to the original record. This way, you can support one, two, or a hundred products without changing your model. - -**5. Keep it simple first.** -Start with fields. Move to new objects only when you feel the limits: too many fields, repeated records, or relationships that don’t fit neatly. - - -### Special note on People, Companies and Opportunities - -- **`People`, `Companies` and `Opportunities` are the only objects from where you can access the emails and meetings synchronized from your mailbox / calendar.** We recommend using those as much as possible. If you need to create categories of `People` or `Companies`, use fields rather than new objects. - - Example: it is best to use the `People` object for both prospects and partners, adding a field called `Person Type`. Avoid creating a `Partner` object, since you wouldn’t be able to access email threads from it. Instead, create different views under `People`: one showing partners, another showing prospects. -- Given the point above, it’s fine to have fields that don’t apply to every record. For example, under `People` you might add a `Referral Link` field that is only relevant when `Person Type = Partner`. That’s okay: you can hide this field from views where it is not needed. - - -### Questions to guide your choice - -Ask yourself: -- Is this just a property of something I already have, or does it need its own properties? -- Will I ever need to track multiple of these per record, without knowing how many in advance? -- Does this concept connect to several different objects, not just one? -- Will it have its own lifecycle (e.g. stages, start/end dates)? - -If the answer is “yes” to one or more of these, it’s probably time for a new object. - - -## Want some help? -Our team can assist you designing and creating the data model you need. Discover our Onboarding Pack [here](https://twenty.com/onboarding-packages). - - - diff --git a/packages/twenty-website/src/content/user-guide/data-model/data-model-faq.mdx b/packages/twenty-website/src/content/user-guide/data-model/data-model-faq.mdx deleted file mode 100644 index 0de9c34309..0000000000 --- a/packages/twenty-website/src/content/user-guide/data-model/data-model-faq.mdx +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Data Model FAQ -icon: IconQuestionMark -info: Frequently asked questions about data model configuration, limitations, and upcoming features. -image: /images/user-guide/what-is-twenty/faq.png -sectionInfo: Flexible data model designed to support your unique business processes ---- - -## Object Management - -
-Can I reorder objects in the left navigation bar? - -Not yet. Object ordering in the navigation is currently fixed, but this feature is planned for a future release. - -
- -
-Can I hide objects from the left navigation bar? - -All active objects appear in the navigation. You can deactivate objects you don't need under **Settings → Data Model**. - -
- -
-Can I delete standard objects (People, Companies, etc.)? - -You can deactivate any standard objects but you cannot hard delete them. - -
- -## Field Capabilities - -
-Can I create formula fields? - -Formula fields are coming in **Q1 2026**. In the meantime, you can use workflows to calculate and update field values automatically. - -
- -
-Can I have nested fields in my objects? - -Nested fields are coming in **Q1 2026**. Currently, you can use workflows to bring field values from related objects. For example, to display a company's industry on a Person record, create a custom field on People and use a workflow to synchronize the value. - -
- -
-Why can't I update relation field names? - -Relation field names impact the API structure and cannot be changed after creation. If you need to rename a relation field, you'll need to create a new one and delete the old one. - -
- -
-Why do I need different singular and plural names? - -Our GraphQL API uses both forms for different operations: -- ```createPerson``` (singular) for single record actions -- ```createPeople``` (plural) for bulk operations - -This creates limitations when singular and plural forms are the same, but it improves the developer experience. - -
- -
-Why are some field names protected? - -Certain field names like `Type` or `Application` are reserved for system use. Choose alternative names like `Category` or `Classification` instead. - -
- -## Advanced Features - -
-Can I create many-to-many relationships? - -Many-to-many relationships are coming in **Q1 2026**. Currently, create an intermediate object with two 1-to-many relationships as a workaround. - -
- -
-What are Morph Many relationships? - -Morph Many relationships (coming **Q4 2025**) allow one object to relate to multiple different object types. For example, an Opportunity could relate to either a Person or a Company. - -
- -
-Can I reorder fields in objects? - -Field reordering will be available with custom layouts in **Q4 2025**. Currently, fields appear in the alphabetical order. - -
- -## Access and Permissions - -
-Where can I see and edit my data model? - -You can access your Data Model under **Settings → Data Model**. - -
- -
-Why can't I see the Data Model under Settings? - -Reach out to your workspace administrator. Data model access is usually restricted to administrators only. - -
- -
-How many custom objects or fields can I create? - -You can create as many custom objects and fields as you need - the price won't change. - -
- -## Need More Help? - -Check our [implementation services](/user-guide/section/getting-started/implementation-services) to get help with complex data model design. - - diff --git a/packages/twenty-website/src/content/user-guide/data-model/fields.mdx b/packages/twenty-website/src/content/user-guide/data-model/fields.mdx deleted file mode 100644 index 99d10c052f..0000000000 --- a/packages/twenty-website/src/content/user-guide/data-model/fields.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Fields -info: "Understand the role of fields and how to handle them." -icon: IconChecklist -image: /images/user-guide/fields/field.png -sectionInfo: Flexible data model designed to support your unique business processes ---- - - -## About Fields - -Fields are like columns in a spreadsheet. They store different types of data like text, numbers, or dates. Fields can be standard (built-in) or custom (the ones you create). - -### Standard Fields - -Standard fields come built-in with Twenty to handle common business needs. - -For example, `First Name` and `Last Name` are standard fields in the `People` object. They store text data for individual names. - -You cannot delete standard fields, but you can deactivate them if you don't need them. - -You can also customize the options of the standard ```SELECT``` type fields, for example the options for the ```Stage``` on Opportunities. - - - -### Custom Fields - -Custom fields can be added to any object. You can store text, numbers, dates, dropdown selections, and more. Use custom fields to track information that's specific to your business. - -For instance, a custom field for SpaceX could be `Rocket Active Status`, indicating if a rocket is operational. - - - -## Create a Custom Field - -To add a custom field to any object, follow these steps: - 1. Go to `Settings` in the left sidebar. - 2. Go to `Data Model`, then select the object you wish to customize. - 3. Proceed by clicking on `Add Field`. - 4. Choose a field name and type that suits your requirements. Consider adding a field description for better understanding. - -Your newly created field is now available within the application's fields. To display it on a specific view, click on the options menu, then select `Fields`. - -
- -
- - -**Quick way:** Click the **+** button at the top right of any object table, then select `Customize fields`. This takes you directly to the Data Model settings. - - - -## Deactivate a field - -You can deactivate a field to hide it from the app without losing your data. Think of it as hiding the field rather than deleting it. - -Here's how you can do it: - -1. Find the field you want to deactivate in your object settings. - -2. Click the three dots `⋮` next to the field to open the menu. - -3. Select `Deactivate` from the dropdown. - - - -What happens when you deactivate a field? - -1. **In the app:** The field disappears and you can't add new values to it. - -2. **Existing relationships:** If it's a relation field, existing connections stay but you can't create new ones. - -3. **API access:** You can still access the field and its data through the API. - -You can reactivate Standard and Custom Fields or have the option to permanently delete them. - -## Make Fields Unique - -Make a field unique to ensure distinct records cannot have the same value. For example, email addresses are unique for each person. - -If you get an error when setting uniqueness, check for duplicate values in your data (including deleted records). - -## Field Configuration Best Practices - -### Naming Conventions and Limitations -- **Relation field names cannot be updated** after creation (impacts API structure) -- **Singular and plural named must be distinct**: Our GraphQL API needs distinct names for mutations -- **Protected field names**: some names are reserved for system usage (e.g., ```Type```) - -### Currency and Phone Fields -- **Default currency**: can be configured via the data model -- **Default country codes**: can be configured for phone fields via the data model - -### Select Fields -- **A default option can be selected** for each Select field - -### Record Text Fields -- **Each object has one main display field**: This field appears in the leftmost column and represents the record when linked to other objects. It must be a text field. For example, People uses `Name` as the main field, so when you link a person to a company, you'll see their name in the company's view. - -### Relation Fields -- **Connect objects together**: Relation fields link records from different objects. For detailed information on creating and managing relationships, see our [Relation Fields](/user-guide/section/data-model/object-relations) article. - - diff --git a/packages/twenty-website/src/content/user-guide/data-model/objects.mdx b/packages/twenty-website/src/content/user-guide/data-model/objects.mdx deleted file mode 100644 index 7a086eaa9c..0000000000 --- a/packages/twenty-website/src/content/user-guide/data-model/objects.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Objects -info: "Learn about standard objects and how to create custom ones for your business needs." -icon: IconChecklist -image: /images/user-guide/objects/objects_orange.png -sectionInfo: Flexible data model designed to support your unique business processes ---- - -## Standard Objects - -Standard objects are predefined entities in your workspace to help you get started. They're part of a shared data model accessible to all users of Twenty. You can use them as-is, customize them or deactivate them. - - - -### People - -The `People` object stores your contacts. It includes contact details and interaction history, so you can see all your customer interactions in one place. - -### Company - -The `Companies` object stores your business accounts. It includes details like industry, size and location. Companies connect to both `People` and `Opportunities` objects. - -### Opportunities - -The `Opportunities` object stores deal-related data. It tracks the progression of potential sales, from prospecting to closure, recording stages, deal sizes, associated account, and expected close date. You can view your sales pipeline in a kanban layout. - -## Custom objects - -Custom objects let you store information that's unique to your organization and that standard objects can't handle. For example, if you're SpaceX, you may want to create a custom object for Rockets and Launches. - - - -### Creating a new custom object - -To create a new custom object: - -1. Go to Settings in the sidebar on the left. -2. Under Workspace, go to Data model. Here you'll be able to see an overview of all your existing Standard and Custom objects (both active and disabled). - - -
- -
- - -3. Click on `+ New object` at the top. Enter the name (both singular and plural), choose an icon, and add a description for your custom object and hit Save (at the top right). Using Listing as an example of custom object, the singular would be "listing" and the plural would be "listings" along with a description like "Listings that hosts created to showcase their property." - - -The singular and plural names must be different. This is required for our GraphQL API to work properly. - - -
- -
- - -4. Once you create your custom object, you'll be able to manage it. You can edit the name, icon and description, view the different fields, and add more fields. - - - -**Note:** If you're not sure whether a new object or field is needed, check [this article](/user-guide/section/data-model/customize-your-data-model) for guidance on designing your data model. - - diff --git a/packages/twenty-website/src/content/user-guide/data-model/relation-fields.mdx b/packages/twenty-website/src/content/user-guide/data-model/relation-fields.mdx deleted file mode 100644 index 381ee27494..0000000000 --- a/packages/twenty-website/src/content/user-guide/data-model/relation-fields.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Relation Fields -icon: IconLink -info: Learn how to create relationships between objects using relation fields and configure 1-to-many relationships. -image: /images/user-guide/fields/relations_field.png -sectionInfo: Flexible data model designed to support your unique business processes ---- - -## What are Relation Fields? - -Relation fields link records from one object to records in another object. For example: -- **People** → **Companies** (each person works for a company) -- **Opportunities** → **People** (each deal has a contact person) -- **Tasks** → **Opportunities** (each task relates to a specific deal) - -## Creating Relation Fields - -### 1. Add the Field -Go to **Settings → Data Model → [Your Object]** and click **Add Field**. - -### 2. Choose Relation Type -- **Field Type**: Select "Relation" -- **Target Object**: Choose which object to connect to -- **Relationship**: Currently supports **1-to-many** relationships only. Make sure to create the relationship in the right direction. - -### 3. Configure Field Names -You'll need to set names for both sides of the relationship: -- **Source field name**: How the field appears on your current object -- **Target field name**: How the reverse field appears on the target object - - -Field names cannot be edited once the relation is saved as it impacts the API structure. Choose carefully. - - -## Relating to Team Members - -You can create relations to any object, including **Workspace Members** (your Twenty team users). This is useful for creating ownership fields: - -- **Account Owner**: Link a Company to a team member who manages it -- **Deal Owner**: Assign an Opportunity to a specific salesperson - -When you create a relation to`Workspace Members`, you'll see your team members' names in dropdown selections, making it easy to assign ownership and responsibilities. - -## Best Practices - -- **Plan your relationships** before creating them -- **Use clear, descriptive names** for both field names -- **Test relationships** with sample data before full implementation - -## Upcoming Features -- **Morph Many relationships** (Coming Q4 2025) -- **Many-to-many relationships** (Coming Q1 2026) - - diff --git a/packages/twenty-website/src/content/user-guide/getting-started.mdx b/packages/twenty-website/src/content/user-guide/getting-started.mdx deleted file mode 100644 index 12c5b5e73a..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Getting Started -icon: IconUsers -info: Start your Twenty journey with these essential guides. -image: /images/user-guide/what-is-twenty/20.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/getting-started/configure-your-workspace.mdx b/packages/twenty-website/src/content/user-guide/getting-started/configure-your-workspace.mdx deleted file mode 100644 index 6fa513c10a..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started/configure-your-workspace.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Configure your Workspace -info: "Start configuring your workspace with these three steps." -icon: IconNote -image: /images/user-guide/what-is-twenty/getting_started.png -sectionInfo: Discover Twenty, an open-source CRM. ---- - -Every business works differently. That's why Twenty lets you shape the CRM around your needs, not force your processes into ours. -**Start with these three steps to set it up your way.** - -**Quick Win**: Start with connecting your mailbox and customizing your data model with a few key fields. This gives you immediate value and helps your team see Twenty in action with real data. You can do so under Settings → Accounts. - -## 1. Customize your data model -Twenty offers the flexibility you need to shape the data model that will best support your day-to-day. -Create objects and fields of any type, including relations between your different objects. You can do so under Settings → Data Model. -Here are a few tips: -- **You are not limited in the number of custom fields nor custom objects**. Adding custom objects and fields will not lead to upgrading your plan. -- **People, Companies and Opportunities are the three objects from where you can access the emails and meetings synchronized from your mailbox/calendar**. We recommend using those as much as possible, adding fields to categorize your records if need be. Here is an example: - - It is best to use the People object for your prospects and partners, creating a field on the People object named ```Person Type```, instead of creating a Partner custom object. Because you would not be able to access the emails exchanged with this person from the Partner records. - - Create different views under People, one to display partners and one to display prospects. -- Two People cannot have the same email address. Two Companies cannot have the same domain. -- You can deactivate standard fields and objects you do not want to use. -- You can hide fields from views: don't be afraid of creating fields, you won't have to display all of them. - -Read [this article](https://twenty.com/user-guide/section/data-model/customize-your-data-model) to learn how to design your data model. - -## 2. Bring your data in -Bringing your existing data into Twenty gives your team context from the start. - -### Connect your mailbox -If you have not done so when creating your workspace, connect your **Google or Microsoft account** under Settings → Accounts. This allows Twenty to: -- Import your messages and meetings -- Auto-create contacts based on interactions (optional) -- Keep communication history visible for your team - -**Using another provider?** -You can add another mailbox via SMTP or another calendar via CalDAV. You will need to activate the feature under Settings → Releases → Lab, and then go back to the Settings → Accounts tab. - -### Import data via csv -Use the Command menu (```Cmd + K``` or ```Ctrl + K```) to import People, Companies, Opportunities, or any custom objects via CSV. - -**Key guidelines**: -- Download the sample file to understand the expected format -- Limit each file to 10k records -- Remove duplicate emails for People or duplicate domains for Companies -- Review and fix errors (highlighted in yellow) before importing - -Read [this article](/user-guide/section/getting-started/import-export-data) to learn more about data import. - -## 3. Create your first view -Creating different views is key to make the data actionable for your team. -Here is how to proceed: -- **Add or hide columns** - Manage the fields visible in a given view clicking on Options → Fields (from the top right). You can show/hide fields from there. - -- **Reorder fields** - Reorder the fields from a given view clicking on Options → Fields (from the top right). Drag and drop the fields to reorder them. - -- **Filter your view** - Narrow down the records displayed using the Filters from the top right. - -- **Sort records** - Reorder records displayed using the Sort function from the top right, or by clicking directly on the column name. - -- **Choose the layout** - You can switch to a **Kanban layout** or a list **Group By** layout, as long as the object has a `Stage` or similar select-type field. - -- **Save your view as Favorites** - This can be done using the dropdown menu showing the different views. - - -## What's next? -Start creating automations using workflows. - diff --git a/packages/twenty-website/src/content/user-guide/getting-started/create-workspace.mdx b/packages/twenty-website/src/content/user-guide/getting-started/create-workspace.mdx deleted file mode 100644 index cafda0cdb3..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started/create-workspace.mdx +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Create a Workspace -info: "Follow a step-by-step guide on how to register on Twenty, choose a subscription plan, confirm your payment and set up your account, with additional advice on seeking assistance if needed." -icon: IconNote -image: /images/user-guide/create-workspace/workspace-cover.png -sectionInfo: Discover Twenty, an open-source CRM. ---- - -## Step 1: Registration -1. Navigate to Twenty Sign Up. -2. Select your preferred sign-up method: - - **Continue with Google** for Google account registration. - - **Continue with Microsoft** for Microsoft account registration. - - Or, **Continue With Email** for email registration. - -
- -
- -## Step 2: Choosing a Trial Period - -Choose between two trial periods: - -### 30 days -With credit card - -### 7 days -Without credit card - -Both trials include: -- Full access -- Unlimited contacts -- Email integration -- Custom objects -- API & Webhooks - -You can click on "Change plan" to choose a different plan or billing interval. - - - -## Step 3: Payment Confirmation & Account Setup -Post payment approval via Stripe, you're directed to create your workspace and user profile. Remember that you can cancel your subscription anytime. - -## Support -For queries or help, connect with the dedicated support team at [contact@twenty.com](mailto:contact@twenty.com) or send a message on Discord - - diff --git a/packages/twenty-website/src/content/user-guide/getting-started/getting-around-twenty.mdx b/packages/twenty-website/src/content/user-guide/getting-started/getting-around-twenty.mdx deleted file mode 100644 index ac8c9886c8..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started/getting-around-twenty.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Getting around Twenty -info: "Get a quick overview of how to navigate through the platform and where to take different types of actions." -icon: IconNote -image: /images/user-guide/what-is-twenty/getting_around.png -sectionInfo: Discover Twenty, an open-source CRM. ---- - -When you log into Twenty for the first time, the layout should feel intuitive. It’s designed to help you move fast and stay organized, without getting in your way. - -## The Main Layout -The center of the screen is **where your records live**: people, companies, opportunities, tasks, notes, workflows and any other object you created. This is where the day-to-day work happens. -You can **view, edit, delete records** from there as well as **creating new views**. - -## The Navigation Bar -On the left side, from the top to the bottom, you’ll be able to: -- Switch between your **several workspaces** using the dropdown menu or create a new workspace -- Choose between the light and dark modes -- Use the **search bar** (press `/` to focus on it instantly) -- Open the **Settings** section - - -Please note that our API documentation is accessible under the Settings section and not the User Guide. - -- Have direct access to your **Favourites views**. Favourites are unique for each user. -- Switch between different objects -- **Create automations** using workflows -- Reach out to Support and open our User Guide. - -## Command Menu & Quick Search - -The command menu gives you **quick access to actions and search** in Twenty. You can access it in two ways: -- **Keyboard shortcut**: Press `Cmd + K` (Mac) or `Ctrl + K` (Windows) -- **Mouse**: Click the three dots in the top right corner - -You'll also see a search bar at the top of your sidebar for quick record searches, or press `/` to focus on it instantly. - -From there, you can: -- Create new records -- **Import and export data via csv** -- Create new views -- Access deleted records (Twenty supports soft and hard deletes) -- See the keyboard shortcuts to quickly access objects in your workspace - -## Views -Every object (like Opportunities or People) supports multiple views. You're not limited in the number of views per object. - -Use the dropdown menu at the top left of the main layout to switch between the different views. For example: -- Use a Kanban view to track opportunities by stage -- Use Group By view to create sections and improve efficiency -- Use filters to focus on specific records (e.g. leads created last week) -- Save filtered views to reuse them later -- Favourite views for fast access - -If you're new to Views, read our [View Management](/user-guide/section/crm-essentials/view-management) article to learn how to create and customize them. - -## Settings -Open your Settings from the top left to: -- **Connect your mailbox and calendar** accounts for seamless email and calendar sync -- Customize your **data model**: create custom objects, fields, and relationships -- **Access the API playground and configure webhooks** -- **Manage user permissions** and workspace access controls -- Invite team members and manage user roles -- Edit your profile and workspace preferences -- Configure billing and monitor workflow credits usage -- Discover the latest releases and upcoming features (under Releases → Lab tab) - -If you do not see all those sections under Settings, reach out to your workspace administrator - some of them have a restricted access. - - diff --git a/packages/twenty-website/src/content/user-guide/getting-started/implementation-services.mdx b/packages/twenty-website/src/content/user-guide/getting-started/implementation-services.mdx deleted file mode 100644 index 7d4abcd0de..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started/implementation-services.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Implementation Services -info: "From quick start to full migration, we've got you covered." -icon: IconNote -image: /images/user-guide/what-is-twenty/implementation_services.png -sectionInfo: Discover Twenty, an open-source CRM. ---- - -## Implementation Services -Whether you need help getting started or creating advanced customizations, we have a solution. - -### Onboarding Packs -Get help from our core team to set up your Twenty workspace with our 4-hour [Onboarding packs](https://twenty.com/onboarding-packages): - -- **Data Model Design**: Design and create your custom data model with objects, fields, and relationships -- **Data Migration**: Migrate your existing data from your current CRM to Twenty -- **Workflow Creation**: Create custom workflows to support your business processes - -### Implementation Partners -Work with certified Twenty partners for more advanced customizations and integrations. Reach out to our team via contact@twenty.com to be matched with our [partners](https://twenty.com/implementation-services). - - - diff --git a/packages/twenty-website/src/content/user-guide/getting-started/import-export-data.mdx b/packages/twenty-website/src/content/user-guide/getting-started/import-export-data.mdx deleted file mode 100644 index eae3cb9b11..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started/import-export-data.mdx +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Import/Export Data -info: "Learn how to import and export data." -icon: IconNote -image: /images/user-guide/import-export-data/cloud.png -sectionInfo: Discover Twenty, an open-source CRM. ---- - -## Import Data -- You can import data for any object using a .csv, .xlsx, or .xls file. -- Each of the files you upload needs to contain **only one type of object** (for example, only People records). -- You can use the Import to **create or update records**. - -### Download a sample file to match the expected formatting -1. Go to a view with the object you're about to import. -2. Click on the `⋮` icon on the top right and then select `Import records`. -3. Click on `Download sample file`. - -### Prepare your csv -Below are a few items to check before uploading your file. -- Limit the number of records to **10,000 per file**. -- **Remove duplicates** from your file. - - The unicity on `People` is set by default by the `id` and the `email`. You also have the ability to define custom fields from `People` as unique when configuring your data model. - - The unicity on `Companies` is set by default by the `id` and the `domain`. You also have the ability to define custom fields from `Companies` as unique when configuring your data model. - - For any other object, including custom objects, you have the ability to define some field(s) as unique. Make sure to not include duplicates when preparing your files. -- We recommend using the syntax ```https://domain.com``` when uploading your domains, as this is the one used by our connector with your mailbox and calendar. -- You can **import the relations between objects** by providing one of the unique fields of the associated record. - - Example: You want to attach a person to a company. Add a column in the file containing all the `People` records that contains the `id` of the company -- or its `domain`. You will be able to map this field during the upload. - -**Important note:** -- Relations between objects in Twenty are "One to Many". This means each record of object A can be attached to several records of object B. But each record of object B can belong to only one record of object A. -*For example, one company can be attached to several people. And one person can belong to only one company.* - -- To upload relations via the Import function, you need to provide the `id` (or any other unique field) of the attached object in the file containing the records on the "Many side" of the relationship. -*For example, you provide the `id` or `domain` of the company when uploading people records. You do not provide the people's `id` (or `email`) when uploading the file with companies.* - - - -### Upload your file -1. Go to a view with the object you're about to import. -2. Click on the `⋮` icon on the top right and then select `Import records`. -3. Click on `Select file`. -4. Validate the mapping of the fields. - - You don't have to import all of them, you can choose the "Do not map" option. - - For relationships, it is recommended to only map one of the unique fields. - - You might need to also map the values of your select type and multi-select type fields. -5. Click on `Next Steps` and `Review the rows with errors`. Cells with an issue are highlighted. **You can either remove the row or update the cell directly from there**. -6. Once you're done, click on `Confirm` - - - - -### Import FAQ - -
-I see duplicates issues when uploading my file, what should I do? - -Please refer to the section **Prepare your csv** above in this article, it contains guideline about what will be considered a duplicate. - -
- -
-Can I import relations between objects? - -Yes, please refer to the section **Prepare your csv** above in this article, it contains a section about the import of relations. - -
- -
-Can I update existing records using the Import function? - -Yes you can update existing records using the Import function. Make sure to provide the id (or any other unique field) when re-uploading your records. - -
- -
-Can I migrate the `id` from my other tool(s)? - -Yes. You need to create a field that you define as unique in your data model that will contain the `id` from your other tool(s). Please note that the name `id` is protected as it is used for the Twenty id. -If you want to create relations between objects using this field, refer to the section **Prepare your csv** above in this article. It contains a section about the import of relations. - -
- - -## Export Data - -You can download data from most of your objects and up to 20,000 records per export. -To export data from an object: - -1. Visit the object index. -2. Choose the view for data export. Configure the columns you want to download by hiding or adding columns and find the records you need by filtering your view. -3. Access the side panel through the `⋮` icon on the top right. -4. Click on `Export view`. -5. Select the save location for the CSV data. Note that exporting may take time with a large record count. - -
- -
- - - diff --git a/packages/twenty-website/src/content/user-guide/getting-started/migrating-from-other-crms.mdx b/packages/twenty-website/src/content/user-guide/getting-started/migrating-from-other-crms.mdx deleted file mode 100644 index 996614235e..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started/migrating-from-other-crms.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Migrating from Other CRMs -icon: IconArrowsExchange -info: Step-by-step guide for migrating data and processes from other CRM systems to Twenty. -image: /images/user-guide/what-is-twenty/migrating_crm.png -sectionInfo: A brief guide to grasp the basics of Twenty ---- - -## Before You Start - -### 1. Audit Your Current Data -- **Select the few objects and fields to migrate**: this migration is the opportunity for a fresh start -- **Export this data** from your current CRM -- **Remove duplicates** and outdated records -- **List active workflows** and automations - -### 2. Create Your New Data Model -Follow our [data model guide](/user-guide/section/data-model/customize-your-data-model) to: -- **Design the data model** you need -- **Map existing fields** to Twenty's standard objects / fields -- **Identify the custom objects / fields** that you will need -- **Create them** under Settings → Data model - -## Migration Process - -### 1. Import Your Data -**Recommended order:** -1. **Companies** first (as base records) -2. **People** second (linked to companies) -3. **Opportunities** third (linked to people/companies) - -Use the CSV import via the Command Menu `Cmd + K` (Mac) or `Ctrl + K` (Windows). See our [data import guide](/user-guide/section/getting-started/import-export-data) for detailed instructions. - -### 2. Recreate Workflows -- **Start simple** - recreate your most critical automations first -- **Use Twenty's workflow builder** to replace existing automations - -## Common Challenges - -### Data Formatting Issues -- **Email addresses** - remove duplicates (People object requirement) -- **Domain** - remove duplicates (Companies object requirement) - -Please note that domain URLs created by the synchronization with your mailbox and calendar have the following format ```https://domain.com``` - - -- **Date formats** - ensure consistent formatting (YYYY-MM-DD) or edit this format under Settings → Experience -- **Phone numbers** - use international format (+1234567890) - -### Relationship Mapping -To import relations between records using the csv import function, you can use the following fields -- **Use Twenty IDs** for complex relationships -- **Use email addresses** to link People records -- **Use domain names** to link Company records -- **Use any other field you set as unique**, which can be done in the Data Model section. -Read our [import-export data guide](/user-guide/section/getting-started/import-export-data) for detailed instructions on creating relationships during CSV import. - -## Professional Help -### Our Services -- **4-hour onboarding packs** for guided migration -- **Implementation partners** for more advanced projects - -Discover our [implementation services](/user-guide/section/getting-started/implementation-services). - -## Migrating from Self-Hosted to Cloud - -If you're moving from Twenty self-hosted to Twenty Cloud: -1. **Export your data** from your self-hosted instance -2. **Follow the standard migration process** above -3. **We can provide migration assistance**, reach out to our team - -## Post-Migration Checklist - - All data imported successfully - Custom fields working correctly - User permissions configured - Email/calendar sync connected - Critical workflows recreated and tested - Team trained on new system - - diff --git a/packages/twenty-website/src/content/user-guide/getting-started/what-is-twenty.mdx b/packages/twenty-website/src/content/user-guide/getting-started/what-is-twenty.mdx deleted file mode 100644 index d1a693225f..0000000000 --- a/packages/twenty-website/src/content/user-guide/getting-started/what-is-twenty.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: What is Twenty -icon: IconUsers -info: "Discover Twenty, an open-source CRM, its features, benefits, system requirements, and how to get involved." -image: /images/user-guide/what-is-twenty/20.png -sectionInfo: Discover Twenty, an open-source CRM. ---- - -Twenty is the leading open-source CRM, crafted by hundreds of contributors to suit your unique business needs. - -## Vision -Creating a good CRM is hard because it's a balancing act. -For each business, the requirements seem straightforward, yet everyone's needs are distinct. -The result is a CRM that's either too basic, or one that's attempting to be a jack-of-all-trades but ending up as a master of none. - -At first, Twenty looks like most CRMs you already know: you can track deals, organize contacts, manage tasks and notes. -But what sets it apart is our approach to extensibility. We are building an open platform that provides the building blocks for you to solve your unique business problems. - -We prioritize universal principles and common patterns over feature lists. -We don't try to have all the answers and instead empower users to find what works best for them. -Open-source is the bedrock of our approach, ensuring that Twenty evolves with its community, for its community. - -## Benefits - -**Customizable:** Designed to fit your business needs. - -**Community-driven:** Built and maintained by a large open-source community. - -**Cost-effective:** You'll never be vendor-locked, because you can always self-host. - - - -## Main Features - -**Contact Management:** Efficiently store and manage customer data. [Learn more](/user-guide/section/crm-essentials/contact-and-account-management). - -**Custom Objects:** Create and customize objects to fit your business needs. [Details](/user-guide/section/data-model/objects). - -**Custom Fields:** Tailor data fields to capture and organize information specific to your operations. [Understand more](/user-guide/section/data-model/fields). - -**Deal Management:** Track and manage your sales opportunities through customizable [Pipeline stages](/user-guide/section/crm-essentials/pipeline). - -**Kanban & Table Views:** Make data actionable with [flexible table views](/user-guide/section/crm-essentials/view-management). - -**Workflows:** Automate your business processes and integrate with external tools using powerful workflow automation. [Get started](/user-guide/section/workflows/getting-started-workflows). - -**Email Integration:** View the emails of a specific customer or company within your workspace. [Synchronize your mailbox](/user-guide/section/collaboration/emails-and-calendars). - -**Notes:** Create detailed notes for each record to share knowledge more effectively. [Add notes](/user-guide/section/collaboration/notes). - -**Tasks:** Schedule tasks to track customer interactions. [See how](/user-guide/section/collaboration/tasks). - -**Permissions:** Control access and manage user roles with flexible workspace and object-level permissions. [Configure permissions](/user-guide/section/settings/permissions). - -**API & Webhooks:** Connect to other apps and automate workflows with API and Webhooks. [Start integrating](/user-guide/section/integrations-api/api-webhooks). - - -## Join now - -Register here or become a contributor on GitHub. - - diff --git a/packages/twenty-website/src/content/user-guide/integrations-api.mdx b/packages/twenty-website/src/content/user-guide/integrations-api.mdx deleted file mode 100644 index c2a14bc0c9..0000000000 --- a/packages/twenty-website/src/content/user-guide/integrations-api.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Integrations API -info: Learn how to connect Twenty to your other tools. -icon: IconBrandZapier -image: /images/user-guide/integrations/plug.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/integrations-api/api-webhooks.mdx b/packages/twenty-website/src/content/user-guide/integrations-api/api-webhooks.mdx deleted file mode 100644 index f6611c00c2..0000000000 --- a/packages/twenty-website/src/content/user-guide/integrations-api/api-webhooks.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: API Keys & Webhooks -info: "Create and manage API keys for authentication and set up webhooks for real-time notifications." -icon: IconApi -image: /images/user-guide/api/api.png -sectionInfo: Learn how to connect Twenty to your other tools. ---- - -## API Keys - -API keys allow automated access to your CRM data, synchronize data with other systems, and create custom integrations or solutions. - -### Create an API Key - -1. Go to **Settings → APIs & Webhooks** -2. Click **+ Create key** at the top right -3. Configure your API key: - - **Name**: Give your API key a descriptive name - - **Expiration Date**: Set when the key should expire -4. Click **Save** to generate your API key -5. **Important**: Copy and store your API key immediately, it's only shown once - -Once created, your API key provides access to your custom API documentation and playground where you can test endpoints with your actual data model. - - -Since your API key gives access to sensitive information, you shouldn't share it with services you don't fully trust. If leaked, someone can use it maliciously. If your API key's security is compromised, immediately disable it and generate a new one. - -
- -
- - - -### Manage API Keys - -**Regenerate an API Key:** -1. Go to **Settings → APIs & Webhooks** -2. Click on the API key you want to regenerate -3. Click the **Regenerate** button -4. Copy and store the new API key immediately - -**Delete an API Key:** -1. Find the API key in your list -2. Click on the key to open its details -3. Click **Delete** to remove it permanently - -## Webhooks - -Webhooks allow for immediate updates to your specified URL about changes or events related to your customer data. - -For example, when an Opportunity moves to "Closed Won", a webhook can automatically trigger invoice creation in your accounting system. Note that this type of automation can also be achieved using Twenty's in-app [Workflows feature](/user-guide/section/workflows/getting-started-workflows), which offers triggers based on field updates for internal automation. - -Webhooks are ideal for integrating with external systems, while Workflows support both internal automation and external tool connections via webhook triggers, code nodes, and HTTP nodes. - -### Create a Webhook - -1. Go to **Settings → APIs & Webhooks → Webhooks** -2. Click **+ Create webhook** -3. Enter your webhook URL (where you want to receive notifications) -4. Click **Save** - -Your webhook will immediately start receiving real-time notifications about changes to your CRM data. - -
- -
- - -### Manage Webhooks - -**Delete a Webhook:** -1. Go to **Settings → APIs & Webhooks → Webhooks** -2. Find the webhook you want to remove -3. Click on the webhook -4. Click **Delete** and confirm in the popup - -**Edit a Webhook:** -1. Click on the webhook you want to modify -2. Update the URL or other settings -3. Click **Save** to apply changes - - diff --git a/packages/twenty-website/src/content/user-guide/integrations-api/apis-overview.mdx b/packages/twenty-website/src/content/user-guide/integrations-api/apis-overview.mdx deleted file mode 100644 index 40de92834c..0000000000 --- a/packages/twenty-website/src/content/user-guide/integrations-api/apis-overview.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: APIs Overview -icon: IconCode -info: Understand the four different APIs and when to use each one. -image: /images/user-guide/api/api-overview.png -sectionInfo: Learn how to connect Twenty to your other tools. ---- - -Twenty was built to be developer-friendly, offering powerful APIs that adapt to your custom data model. We provide four distinct API types to meet different integration needs. - -## Developer-First Approach - -Twenty generates APIs specifically for your data model, meaning: -- **No long IDs required**: Use your object and field names directly in endpoints -- **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones -- **Dedicated endpoints**: Each object and field gets its own API endpoint -- **Custom documentation**: Generated specifically for your workspace's data model - - -Your custom API generates personalized documentation accessible via Settings → API & Webhooks after creating an API key. This documentation reflects your exact data model and field configurations. - - -## The Four API Types - -Twenty offers APIs in both **REST** and **GraphQL** formats: - -### REST APIs - -#### 1. REST Metadata API -- **Purpose**: Manage your workspace and data model structure -- **Use cases**: - - Create, modify, or delete objects and fields - - Configure workspace settings - - Manage data model relationships -- **Access**: Available through REST endpoints - -#### 2. REST Core API -- **Purpose**: Manage your actual data records -- **Use cases**: - - Create, read, update, delete records - - Query specific data - - Manage record relationships -- **Access**: Available through REST endpoints - -### GraphQL APIs - -#### 3. GraphQL Metadata API -- **Purpose**: Same as REST Metadata API but with GraphQL benefits -- **Use cases**: Same workspace and data model management -- **Additional benefits**: - - Query multiple metadata types in one request - - Precise field selection - - Better performance for complex queries - -#### 4. GraphQL Core API -- **Purpose**: Same as REST Core API but with GraphQL advantages -- **Use cases**: Same data record management -- **Additional benefits**: - - **Batch operations**: Available for all operations - - **Upsert operations**: Create or update records in one call - - Query relationships in single requests - - Precise data fetching - -## Batch Operations - -### REST and GraphQL Batch Support -Both REST and GraphQL APIs support batch operations for most actions: -- **Batch size**: Up to 60 records per request -- **Available operations**: Create, update, delete multiple records -- **Performance**: Significantly faster than individual API calls - -### GraphQL-Only Features -- **Batch Upsert**: Only available in GraphQL APIs -- **Usage**: Use plural object names (e.g., `CreateCompanies` instead of `CreateCompany`) -- **Requirement**: This is why singular and plural object names must be distinct - -## API Documentation Access - -1. Go to **Settings → API & Webhooks** -2. Create an API key (required for documentation access) -3. Access your custom documentation and playground -4. Test APIs with your actual data model - -Your documentation is unique to your workspace because it reflects your custom objects, fields, and relationships. - -## When to Use Each API - -### Use Metadata APIs when: -- Setting up your data model -- Creating custom objects or fields -- Configuring workspace settings - -### Use Core APIs when: -- Managing day-to-day data (People, Companies, Opportunities) -- Integrating with external systems -- Building custom applications -- Automating data workflows - -### Choose GraphQL when: -- You need batch operations -- You want to minimize API calls -- You need upsert functionality -- You're building complex integrations - -### Choose REST when: -- You prefer simpler API structure -- You're building basic integrations -- Your team is more familiar with REST -- You need straightforward CRUD operations - -## Next Steps - -- **[API & Webhooks Setup](/user-guide/section/integrations-api/api-webhooks)**: Learn how to create API keys and webhooks -- **Custom Documentation**: Access your personalized API docs via Settings → API & Webhooks - - diff --git a/packages/twenty-website/src/content/user-guide/integrations-api/integrations.mdx b/packages/twenty-website/src/content/user-guide/integrations-api/integrations.mdx deleted file mode 100644 index 2aabd50fe2..0000000000 --- a/packages/twenty-website/src/content/user-guide/integrations-api/integrations.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Integrations -info: "Connect Twenty to your existing tools and build custom automations." -icon: IconBrandZapier -image: /images/user-guide/integrations/plug.png -sectionInfo: Connect Twenty to your existing tools and workflows ---- - -## Current Integration Options - -### Native Integrations -Twenty currently offers native integration with: -- **Email & Calendar**: Connect Gmail, Outlook, or SMTP/CalDAV providers -- **API Access**: Use our REST and GraphQL APIs to build custom integrations - -For email and calendar setup, visit [Email & Calendar Setup](/user-guide/section/settings/email-calendar-setup). - -### Workflows (Recommended) -The primary way to connect Twenty to other tools is through our in-app **Workflows** feature: -- **HTTP Nodes**: Make API calls to external services -- **Code Nodes**: Write custom logic for complex integrations -- **Webhook Triggers**: Receive data from external systems -- **Field Update Triggers**: Automate actions based on CRM changes - -Learn more in our [Workflows section](/user-guide/section/workflows/getting-started-workflows). - -### Zapier Integration (Legacy) -We maintain a Zapier integration for users who prefer no-code automation: - -1. Visit Twenty on Zapier -2. Create a new Zap with Twenty as trigger or action -3. Generate an API key in Settings → API & Webhooks -4. Connect your Twenty workspace to Zapier - -## Future Vision: Community-Built Connectors (2026) - -### Extensibility Platform -We're building an extensibility platform that will allow developers to create apps as code. This will enable: -- **Custom Connectors**: Build integrations with your favorite software -- **Community Contributions**: Share and discover connectors built by others -- **Flexible Architecture**: Extend Twenty's capabilities beyond core features - -### AI-Assisted Workflow Building -Coming in 2026, AI assistance will help users: -- **Auto-Generate Workflows**: Describe your integration needs in plain language -- **Smart Suggestions**: Get recommendations for connecting your specific tools -- **Template Library**: Access pre-built workflows for common use cases - -The future of Twenty integrations is community-driven, AI-assisted, and infinitely extensible. - - diff --git a/packages/twenty-website/src/content/user-guide/pricing.mdx b/packages/twenty-website/src/content/user-guide/pricing.mdx deleted file mode 100644 index 46008dabbc..0000000000 --- a/packages/twenty-website/src/content/user-guide/pricing.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Pricing -icon: IconChecklist -info: Understand how Twenty pricing works. -image: /images/user-guide/setup/pricing.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- diff --git a/packages/twenty-website/src/content/user-guide/pricing/billing-and-pricing-faq.mdx b/packages/twenty-website/src/content/user-guide/pricing/billing-and-pricing-faq.mdx deleted file mode 100644 index efa3f92e45..0000000000 --- a/packages/twenty-website/src/content/user-guide/pricing/billing-and-pricing-faq.mdx +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Billing and Pricing FAQ -info: "Everything you need to know about the pricing and billing." -image: /images/user-guide/setup/pricing.png -sectionInfo: Understand how Twenty pricing works. ---- -## Pricing -
-Can I use Twenty for free while self-hosting? - -Yes, you can use Twenty for free while self-hosting. You will get access to everything included in the (cloud) Pro subscription, except the support from our core-team. Support is accessible via our Discord community. -If you want to self-host and have access to the features included in the (cloud) Organization subscription, including support from our core-team, you can do so by choosing the paid Organization licences, available in self-hosting. - -
-
-Do you offer free seats for view-only users? - -We do not offer free seats. Pricing is per user and each user needs a licence to access Twenty. -
- -
-Where can I switch my subscription to the Organization plan? - -You can do so under `Settings → Billing`. Then click on `Switch to Organization`. - -
- -
-Where can I switch my subscription to the Pro plan? - -Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment. - -
- -
-Where can I switch my subscription to Yearly? - -You can do so under `Settings → Billing`. Then click on `Switch to Yearly`. - -
- -
-Where can I switch my subscription to Monthly? - -Please reach out to our team directly via the Support, there is no easy way to do this using the UI at the moment. - -
- -
-Where can I see my credit usage? - -You will find this under `Settings → Billing`. - -
- - -
-How many workflow credits do we have? - -The number of credits varies based on the plan. A workspace under **trial gets 5 million credits**, one with a **Pro plan gets 10 million credits per month** and one with an **Organization plan gets 20 million credits per month**. - -
- -
-How does workflow credit consumption work? - -Each workflow action consumes credits based on its complexity: -- **Basic internal operations** (such as search, update, create records) consume very few credits -- **More complex operations** like code nodes and requests to external services consume more credits -- **AI prompts** (coming soon!) will also consume more credits based on usage - -Credits are deducted in real-time when workflows execute. You can monitor your usage in **Settings → Billing** to track consumption and remaining credits. - -
- - -
-Can I buy more workflow credits? - -You can buy additional credits under `Settings → Billing`. - -
- -## Billing - -
-Where can I manage the Billing details? - -You can do so under `Settings → Billing`. - -
- -
-Where can I update my payment method? - -You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to add a new payment method there. - -
- -
-Where can I update my billing information? - -You can do so under `Settings → Billing`. Then click on `View billing details`. You'll be able to edit the billing information there. - -
- -
-Where can I access my invoices? - -You can do so under `Settings → Billing`. Then click on `View billing details`. You'll see all your invoices at the bottom of the screen. - -
- - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/reporting.mdx b/packages/twenty-website/src/content/user-guide/reporting.mdx deleted file mode 100644 index 0fc914d902..0000000000 --- a/packages/twenty-website/src/content/user-guide/reporting.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Reporting -icon: IconChart -info: Track performance with custom reports and dashboards. Coming Q4 2025 -image: /images/user-guide/reporting/reporting.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- diff --git a/packages/twenty-website/src/content/user-guide/reporting/reporting-overview.mdx b/packages/twenty-website/src/content/user-guide/reporting/reporting-overview.mdx deleted file mode 100644 index aca27ec04b..0000000000 --- a/packages/twenty-website/src/content/user-guide/reporting/reporting-overview.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Reporting Overview -icon: IconChart -info: Learn about Twenty's upcoming reporting and analytics capabilities coming Q4 2025. -image: /images/user-guide/reporting/reporting.png -sectionInfo: Track performance with custom reports and dashboards ---- - -## What's Coming - -### Custom Reports -Create tailored reports to track the metrics that matter most to your business. - -### Sales Dashboards -Visualize your sales pipeline performance with interactive dashboards. - -### Performance Analytics -Monitor team performance and identify trends in your customer data. - - -## Stay Updated - -Follow our [GitHub repository](https://github.com/twentyhq/twenty) or check the **Settings → Releases** section in your workspace to get notified when reporting features become available. - - diff --git a/packages/twenty-website/src/content/user-guide/resources.mdx b/packages/twenty-website/src/content/user-guide/resources.mdx deleted file mode 100644 index 71a2e22449..0000000000 --- a/packages/twenty-website/src/content/user-guide/resources.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Resources -icon: IconHelp -info: Terminology definitions and community links. -image: /images/user-guide/glossary/glossary.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/resources/github.mdx b/packages/twenty-website/src/content/user-guide/resources/github.mdx deleted file mode 100644 index 8f1f15e055..0000000000 --- a/packages/twenty-website/src/content/user-guide/resources/github.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: GitHub -info: "Learn about the Twenty GitHub repository and the variety of resources it hosts including source code, documentation, and discussions." -icon: IconGitHub -image: /images/user-guide/github/github-header.png -sectionInfo: Terminology resources and community information ---- - -## About - -The Twenty GitHub repository hosts a vast array of resources like source code, documentation, discussions, and issue tracking. This is where you will be able to access the full code behind Twenty. - -[Visit Twenty on GitHub](https://github.com/twentyhq/twenty) - -## Contributing - -Contributing to the Twenty project on GitHub is a rewarding way to help improve the software you use. Whether you're fixing bugs, suggesting features, or improving documentation, your contributions are welcome. - -### Reporting Issues - -Encounter an issue? Create an issue on GitHub, providing as much detail as possible. - - - -### Suggesting Features - -What improvements would you like to see on Twenty? No matter your technical know-how, you can join the conversation here. - - - -### Coding a feature - -Start your journey by finding beginner-friendly tasks: - -1. Navigate to the **[Issues](https://github.com/twentyhq/twenty/issues)** tab on the Twenty repository. -2. Filter by **[Good First Issue](https://github.com/twentyhq/twenty/labels/good%20first%20issue)** label to find tasks suited for newcomers. -3. Pick an issue, fork the repository, and start contributing. - - - -Ensure you're assigned to the issue to avoid overlapping work with other contributors. - -### Code of Conduct - -Remember to adhere to Twenty's Code of Conduct throughout your contribution process. - -## Discord - -If you have any question, for example on how to contribute, join the community on [Discord](https://discord.gg/cx5n4Jzs57) - - - -
-
-Thank you for contributing to Twenty ❤️ - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/resources/glossary.mdx b/packages/twenty-website/src/content/user-guide/resources/glossary.mdx deleted file mode 100644 index 6bcee6d35a..0000000000 --- a/packages/twenty-website/src/content/user-guide/resources/glossary.mdx +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Glossary -info: "Get familiar with essential terminology used in Twenty." -icon: IconVocabulary -image: /images/user-guide/glossary/glossary.png -sectionInfo: Terminology resources and community information ---- - -## API -API (Application Programming Interface) allows you to connect Twenty with other software systems and build custom integrations. - -## Command Menu -The Command Menu is a quick-access interface (opened with `Cmd + K` on Mac and `Ctrl + K` on Windows) that lets you perform actions, create records, and navigate your workspace efficiently. - -## Company & People -The CRM has two fundamental types of records: -- A `Company` represents a business or organization. -- `People` represent your company's current and prospective customers or clients. - -## Custom Fields -Custom Fields are data fields you create to capture information specific to your business needs and processes. - -## Data Model -A Data Model is the structure that defines how information is organized in your CRM, including what objects exist, their properties (fields), and how they relate to each other. - -## Favorites -Favorites are records you've marked for quick access, appearing in your sidebar for instant navigation to important data. - -## Field -A field refers to a specific area where particular data is stored for an entity. - -## Integration -Integration are built-in tools that allow to link Twenty with other software or systems. - -## Kanban -A `Kanban` is a visual way to track your business processes using cards and columns. Each column represents a stage in your process (for example: new, ongoing, won, lost), and you move records through these stages as they progress. - -## Object -An Object is a data structure that represents a specific type of entity in your CRM (like People, Companies, or Opportunities). Objects can be standard (built-in) or custom (created by you). - -## Opportunities -Opportunities in Twenty CRM are potential deals or sales with accounts or contacts. - -## Record -A Record indicates an instance of an object, like a specific account or contact. - -## Relation Fields -Relation Fields create connections between different objects, allowing you to link records together (like connecting a Person to a Company). - -## Standard Fields -Standard Fields are pre-built data fields that come with objects by default and provide common functionality across all workspaces. - -## Tasks -Tasks in Twenty CRM are assigned activities relating to contacts, accounts, or opportunities. - -## Views -You can customize the display of your records using views, setting different filters, layouts and sorting options for each view. - -## Webhooks -Webhooks are automated messages sent from Twenty to other applications when specific events occur, enabling real-time data synchronization. - -## Workflows -Workflows are automated processes that trigger actions based on specific conditions, helping you automate repetitive tasks and business processes. - -## Workspace -A `Workspace` typically represents a company using Twenty. It holds all the records and data that you and your team members add to Twenty. -It has a single domain name, which is typically the domain name your company uses for employee email addresses. - -## Workspace Members -Workspace Members are the Twenty users from your team who have access to your workspace. They can be assigned as owners or assignees for records. - - diff --git a/packages/twenty-website/src/content/user-guide/settings.mdx b/packages/twenty-website/src/content/user-guide/settings.mdx deleted file mode 100644 index d7f2c86579..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Settings -icon: IconSettings2 -info: Configure your Twenty workspace settings and preferences. -image: /images/user-guide/setup/settings.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/settings/domains-settings.mdx b/packages/twenty-website/src/content/user-guide/settings/domains-settings.mdx deleted file mode 100644 index 1bd24ea51c..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/domains-settings.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Domains Settings -icon: IconWorld -info: "Configure workspace domains and approved access settings for automatic user sign up." -image: /images/user-guide/setup/domains-settings.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Custom Workspace Domain - -Set a personalized web address for your workspace: -- Choose your preferred subdomain (e.g., yourcompany.twenty.com) -- Configure custom domains for professional branding - -## Approved Access Domains - -Allow automatic workspace access for specific email domains. - -### How It Works -- Add your company's email domains (e.g., @yourcompany.com) -- Anyone with an email from these domains can automatically join your workspace -- No manual invites needed for team members - -### Benefits -- **Faster Onboarding**: New team members join automatically -- **Better Security**: Only verified company emails can access -- **Less Admin Work**: No need to manually invite each team member - -## Setup Instructions - -1. Go to **Settings → Domains** -2. Add your custom domain or approved email domains -3. Verify domain ownership if required - -**Note**: Domain changes may take time to take effect and might require verification. - - diff --git a/packages/twenty-website/src/content/user-guide/settings/email-calendar-setup.mdx b/packages/twenty-website/src/content/user-guide/settings/email-calendar-setup.mdx deleted file mode 100644 index 58cbcc6303..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/email-calendar-setup.mdx +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: Email & Calendar Setup -info: "Connect your email and calendar accounts." -icon: IconAt -image: /images/user-guide/emails/emails_header.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Connection Options - -### Google Account (Gmail & Google Calendar) -1. Go to **Settings → Accounts** -2. Click **Add account** -3. Select **Continue with Google** -4. Authorize Twenty to access your Gmail and Google Calendar -5. Your emails and calendar events will start syncing automatically - -### Microsoft Account (Outlook & Microsoft Calendar) -1. Go to **Settings → Accounts** -2. Click **Add account** -3. Select **Continue with Microsoft** -4. Authorize Twenty to access your Outlook and Microsoft Calendar -5. Your emails and calendar events will start syncing automatically - -### SMTP/CalDAV Setup (Other Providers) -For other email and calendar providers: -1. Go to **Settings → Releases → Lab** to enable the feature -2. Return to **Settings → Accounts** -3. Configure SMTP settings for email -4. Configure CalDAV settings for calendar -5. Test the connection - -### Multiple Mailboxes -- **Unlimited Accounts**: Connect multiple email accounts per user -- **Account Management**: Switch between different mailboxes -- **Sync Settings**: Configure different settings per mailbox - - - -Only true mailboxes can be connected (e.g., support@domain.com with its own inbox). Email aliases that forward to another mailbox cannot be connected to Twenty. - - - -## Email Configuration - -### Message Visibility -Choose different levels of visibility for your emails: - -- **Metadata Only**: Share only basic information (sender, recipient, date, time) -- **Subject and Metadata**: Share subject line along with metadata -- **All Email Content**: Share entire email content including attachments - -### Contact Auto-Creation -- **Deactivated**: No automatic contact creation -- **For messages sent & received**: Create contacts for all external email interactions -- **For messages sent only**: Create contacts only for emails you send -- **Note**: Internal emails (same domain) are never synced to maintain privacy - -### Control which emails get sync with Message Folder Selection (Lab Feature) -Control which email folders sync with Twenty: -1. Go to **Settings → Releases → Lab** and enable **Message Folder** -2. Return to **Settings → Accounts** and select your connected email account -3. Choose which folders to sync: - - **Inbox**: Primary incoming emails - - **Sent**: Outgoing emails you've sent - - **Custom Folders**: Any specific folders you want to include - - **Exclude Folders**: Skip folders like Spam, Trash, or personal folders - -This gives you precise control over which emails appear in your CRM without syncing everything. - -**What Gets Synced:** -- **External Emails**: All emails with external contacts from selected folders -- **Internal Emails**: Not synced (same domain emails remain private) -- **Attachments**: Coming in H1 2026 - -**Note**: We don't provide a CC email address for selective syncing. Instead, use the Message Folder feature above to achieve the same level of control over which emails sync with Twenty. - - -## Calendar Configuration - -### Event Visibility -Choose what will be visible to other users in your workspace: -- **Everything**: The whole event details will be shared with your team -- **Metadata**: Only date & participants will be shared with your team - - -### Contact Auto-Creation for Meetings -- **Yes**: Automatically create contacts for meeting participants not in your CRM -- **No**: Only link meetings to existing contacts - - -### Control which events get sync -- **Meeting Import**: Automatically import calendar events -- **Contact Linking**: Link meetings to People and Company records - -**What Gets Synced:** -- **Meetings**: Calendar events with external participants -- **Contact Linking**: Events automatically linked to CRM records -- **Team Events**: Shared calendar visibility - - - -## Sync Frequency - -**Updates every 5 minutes**: Both email and calendar data sync automatically every 5 minutes after the initial import. - - - diff --git a/packages/twenty-website/src/content/user-guide/settings/experience-settings.mdx b/packages/twenty-website/src/content/user-guide/settings/experience-settings.mdx deleted file mode 100644 index f0e3d14fa8..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/experience-settings.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Experience Settings -info: "Customize your interface theme and regional preferences." -icon: IconPalette -image: /images/user-guide/setup/experience.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Appearance - -### Theme Selection -Choose between light and dark modes: -- **Light Mode**: Clean, bright interface ideal for well-lit environments -- **Dark Mode**: Easier on the eyes in low-light conditions -- **System**: Automatically matches your device's theme setting - -## Regional Settings - -### Language -Select your preferred language for the Twenty interface: -- English (default) -- Additional languages available based on community translations - -### Time Zone -Set your local time zone for accurate scheduling and timestamps: -- Affects meeting times, task deadlines, and activity logs -- Automatically adjusts for daylight saving time - -### Date Format -Choose how dates appear throughout Twenty: -- **MM/DD/YYYY** (US format) -- **DD/MM/YYYY** (European format) -- **YYYY-MM-DD** (ISO format) - -### Number Format -Configure how numbers and currencies display: -- **Decimal Separator**: Comma (,) or period (.) -- **Thousands Separator**: Space, comma, or period -- **Currency Symbol**: Based on your region or custom - -### Calendar Format -Set your preferred calendar layout: -- **First Day of Week**: Sunday or Monday -- **Week Numbers**: Show or hide ISO week numbers -- **Time Format**: 12-hour (AM/PM) or 24-hour format - -## How to Update Settings - -1. Go to **Settings → Experience** from the sidebar -2. Adjust your preferences in each section -3. Changes are saved automatically -4. Refresh your browser to see all changes take effect - - diff --git a/packages/twenty-website/src/content/user-guide/settings/member-management.mdx b/packages/twenty-website/src/content/user-guide/settings/member-management.mdx deleted file mode 100644 index 853ee11040..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/member-management.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Member Management -icon: IconUsers -info: "Invite team members and control workspace access for your Twenty workspace." -image: /images/user-guide/setup/members.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Invite New Members - -### Using the Invite Link -1. Go to **Settings → Members** -2. Copy the workspace invite link -3. Share the link with new team members -4. They'll receive access once they sign up - -### Direct Email Invitation -1. Go to **Settings → Members** -2. Enter the person's email address -3. Click **Invite** -4. They'll receive an email invitation - -## Remove Members - -### Delete a Member -1. Go to **Settings → Members** -2. Find the member you want to remove -3. Click the delete/remove button next to their name -4. Confirm the removal - -**Note**: Removed members lose access immediately but can be re-invited later. - -## Need Help? - -For role and permission management, check the [Permissions article](/user-guide/section/settings/permissions). - - diff --git a/packages/twenty-website/src/content/user-guide/settings/permissions.mdx b/packages/twenty-website/src/content/user-guide/settings/permissions.mdx deleted file mode 100644 index 262f3fbd24..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/permissions.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Permissions -info: "Learn how to control access: assign roles and set permissions." -image: /images/user-guide/permissions/permissions.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -Twenty's permission system allows you to control access to three main areas: -- **Objects and Fields**: Control who can view, edit, or delete records and individual fields -- **Settings**: Manage access to workspace configuration and administrative functions -- **Actions**: Control general workspace actions like importing data or sending emails - -## Create a Role - -To create a new role: - -1. Go to **Settings → Roles** -2. Under **All Roles**, click on **+ Create Role** -3. Enter a role name -4. In the default **Permissions** tab, configure permissions -5. Click **Save** to finish - -## Delete a Role - -To delete a role: - -1. Go to **Settings → Roles** -2. Click on the role you want to remove -3. Open the **Settings** tab, then click **Delete Role** -4. Click **Confirm** in the modal - -Note: If a role is deleted, any workspace member assigned to it will be automatically reassigned to the default role. All except the **Admin** role can be deleted. There must always be at least one member assigned to the **Admin** role. - -## Assign Roles to Members - -### View Current Assignments -- Go to **Settings → Roles** -- See all roles and how many members are assigned to each -- View which members have which roles - -### Assign a Role to a Member -1. Go to **Settings → Roles** -2. Click on the role you want to assign -3. Open the **Assignment** tab -4. Click **+ Assign to member** -5. Select the workspace member from the list -6. Confirm the assignment - -### Set Default Role -1. Go to **Settings → Roles** -2. In the **Options** section, find **Default Role** -3. Select which role new members should automatically receive -4. New workspace members will be assigned this role when they join - -**Note**: You can only assign roles to existing workspace members. To invite new members, use [Member Management](/user-guide/section/settings/member-management). - -## Customize Permissions - -Permissions determine what each role can access or modify within your workspace, including workspace objects records, settings, and actions. - -### Object and Field Permissions - -Control access to records and individual fields: - -#### Object-Level Permissions -- Under **All Objects**, apply permissions like **See Record**, **Edit Records**, **Delete Records**, or **Destroy Records** to all objects -- Under **Object-Level Permissions**, configure exceptions for individual objects. These override the settings from **All Objects** - -#### Field-Level Permissions -- Configure permissions for individual fields within each object -- Control who can **See Field**, **Edit Field**, or have **No Access** to specific fields -- Field permissions work the same way as object permissions with inheritance and overrides - -#### Managing Permission Overrides -To override parent permissions and apply stricter rules: - -- Click **X** to remove the inherited rule -- Select the specific permissions for the selected object or field -- Click the orange **Undo** icon (circular arrow) to revert changes - -When done, click **Finish**, then **Save** once redirected to the role page. - -### Workspace Settings Permissions - -Control access to workspace settings in two ways: - -- Toggle **Settings All Access** to grant full access -- Or enable specific permissions (e.g., API key generation, workspace preferences, role assignment, data model configuration, security settings, and workflow management) - -### Workspace Action Permissions - -Control access to general workspace actions: - -- Toggle **Application All Access** to grant full permissions -- Or enable individual actions such as **Send Email**, **Import CSV**, and **Export CSV** - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/settings/profile-settings.mdx b/packages/twenty-website/src/content/user-guide/settings/profile-settings.mdx deleted file mode 100644 index ca96d2826b..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/profile-settings.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Profile Settings -icon: IconUser -info: "Manage your personal profile and security settings." -image: /images/user-guide/setup/profile.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Personal Information - -### Name and Email -- **Display Name**: Update how your name appears to other workspace members -- **Email Address**: Change your login email (requires verification) -- **Profile Picture**: Upload a custom avatar or use your initials - -## Security Settings - -### Two-Factor Authentication (2FA) -Enable 2FA to add an extra layer of security to your account: -1. Go to **Settings → Profile Settings** -2. Click **Enable 2FA** -3. Scan the QR code with your authenticator app -4. Enter the verification code to confirm - -### Password Management -- **Change Password**: Update your current password -- **Password Requirements**: Must be at least 8 characters long - - -## Profile Management - -### Delete Account - -Deleting your account will permanently remove your access to all workspaces. This action cannot be undone, you'll lose access to all workspaces where you're a member, and you should consider leaving individual workspaces instead if you only want to exit specific teams. - - -To delete your account: -1. Go to **Settings → Profile Settings** -2. Scroll to **Danger Zone** -3. Click **Delete Account** -4. Confirm by typing your email address - - diff --git a/packages/twenty-website/src/content/user-guide/settings/releases-settings.mdx b/packages/twenty-website/src/content/user-guide/settings/releases-settings.mdx deleted file mode 100644 index f7ec242677..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/releases-settings.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Releases Settings -icon: IconRocket -info: "Learn about the latest releases and enable beta features in the Lab." -image: /images/user-guide/setup/releases.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Latest Releases - -Track Twenty's development progress: -- **Release Notes**: See what's new in each version -- **Feature Updates**: Discover new capabilities and improvements - -## Lab Features - -Access experimental features before they're officially released: -- **Beta Testing**: Try new features while they're in development -- **Feature Flags**: Enable or disable specific experimental functionality - -## How to Access - -1. Go to **Settings → Releases** -2. View release notes and access the **Lab** tab for beta features - - -For more community resources, check our [Resources section](/user-guide/section/resources). - - - diff --git a/packages/twenty-website/src/content/user-guide/settings/settings-faq.mdx b/packages/twenty-website/src/content/user-guide/settings/settings-faq.mdx deleted file mode 100644 index 6688ea4dd9..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/settings-faq.mdx +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Settings FAQ -info: "Understand how to best manage your workspace." -image: /images/user-guide/what-is-twenty/faq.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Settings FAQ - -
- Can I have several workspaces? - - Absolutely. You can create a new workspace by clicking on the dropdown menu on the very top left of the screen (the one that contains the name of your workspace), on the three dots and then on `Create Workspace`. -
- -
- I accidentally created multiple workspaces but only need one. What should I do? - - Just delete the workspaces you no longer need, you can do so under `Settings → Workspace Settings`. - - -Do not delete your account (accessible under Settings → Profile Settings): your account is shared among the different workspaces. - -
- -
- How can I disable my workspace? - - If you just want to disable your workspace (not delete it), go to `Settings → Billing` and click on `Cancel Plan`. -
- -
- How can I delete my workspace? - - You can do so under `Settings → Workspace Settings`. We hope we'll see you around soon, thank you for giving Twenty a try! -
- -
- Can I limit which emails get synced to Twenty? - - Yes! You can control email syncing in several ways: - - **Message Folders**: Enable this lab feature under `Settings → Releases → Lab`, then configure which folders to sync under `Settings → Accounts` - - **Contact Auto-Creation**: Choose whether to create contacts for all emails or only specific types - - **Sharing Levels**: Control how much email content is visible to your team (metadata only, subject + metadata, or full content) -
- -
- How do I decide which emails to import into Twenty? - - Twenty offers flexible options to control email imports: - - **Folder Selection**: Use the Message Folder lab feature to sync only specific folders (Inbox, Sent, custom folders) - - **External Only**: Only emails with external contacts are synced (internal company emails remain private) - - **Retroactive Control**: You can enable/disable folder syncing at any time to control future imports -
- -
- Do you provide an email address to CC for selective email syncing? - - No, we don't provide a CC email address for selective syncing. Instead, we offer the Message Folder feature which gives you the same level of control. You can choose exactly which folders sync with Twenty, giving you precise control over which emails appear in your CRM without needing to remember to CC a special address. -
- -
- Can I connect multiple email accounts to Twenty? - - Yes! You can connect unlimited email accounts per user. Go to `Settings → Accounts` to add Google, Microsoft, or SMTP/CalDAV accounts. Each account can have different sync settings and folder configurations. -
- -
- How do I control who can see what in my workspace? - - Use the permissions system under `Settings → Roles`. You can create custom roles and control access to: - - **Objects and Fields**: Who can view, edit, or delete specific records and fields - - **Settings**: Access to workspace configuration and admin functions - - **Actions**: General workspace actions like importing data or sending emails -
- -
- Can I customize my workspace domain? - - Yes! Go to `Settings → Domains` to set up a custom workspace domain (e.g., yourcompany.twenty.com) and configure approved access domains so team members with company email addresses can automatically join your workspace. -
- -
- What are Lab features and should I enable them? - - Lab features are experimental capabilities you can test before they're officially released. Access them under `Settings → Releases → Lab`. Features like Message Folder selection are stable and useful, but remember that lab features may change or be removed in future releases. -
- -
- How do I change my workspace appearance and regional settings? - - Go to `Settings → Experience` to customize: - - **Theme**: Light, dark, or system-based - - **Regional Settings**: Language, timezone, date/number formats - - **Calendar Format**: First day of week, time format (12/24 hour) -
- - diff --git a/packages/twenty-website/src/content/user-guide/settings/workspace-settings.mdx b/packages/twenty-website/src/content/user-guide/settings/workspace-settings.mdx deleted file mode 100644 index 5daf05dd46..0000000000 --- a/packages/twenty-website/src/content/user-guide/settings/workspace-settings.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Workspace Settings -info: "Customize your workspace name and branding." -icon: IconSettings -image: /images/user-guide/setup/settings.png -sectionInfo: Configure your Twenty workspace settings and preferences ---- - -## Workspace Picture -- **Upload Logo**: Add a custom workspace logo -- **Supported formats**: PNG, JPEG, and GIF files under 10MB -- **Remove**: Delete the current workspace logo - -## Workspace Name -- **Name**: Change your workspace display name -- This name appears to all workspace members - -## Danger Zone - -Deleting your workspace permanently removes all data and cannot be undone. All workspace data will be lost forever, all members will lose access immediately, and this action cannot be reversed. - - -To delete your workspace: -1. Click **Delete workspace** button -2. Confirm the deletion when prompted - -**Note**: Only workspace administrators can delete workspaces. - diff --git a/packages/twenty-website/src/content/user-guide/views/kanban-views.mdx b/packages/twenty-website/src/content/user-guide/views/kanban-views.mdx deleted file mode 100644 index b17c4b6373..0000000000 --- a/packages/twenty-website/src/content/user-guide/views/kanban-views.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Kanban Views -info: "Learn how to customize and navigate Kanban Views." -icon: IconTargetArrow -image: /images/user-guide/kanban-views/kanban.png -sectionInfo: Discover how to use standard and custom objects in your workspace. ---- - -## About Kanban Views - -Kanban views visually map out process flows, where each column stands for a distinct stage and each card represents a record. - -## Move Cards between Stages - -You can move each card between stages as it goes through your workflow by dragging and dropping. To proceed, hold your click on a card and move it to the next stage. - -
- -
- - -## Add and delete stages - -You can tailor your workflow to suit your needs using stages, which represent a value in a Select Field: - -### Add Stages - -To add a stage, access the Select field settings by navigating to Settings > Data Model, selecting your object, and then the field your Kanban board depends on. - -
- -
- - -### Remove Stages - -To remove a stage, hover the stage name or the `⋮` icon, click `Edit from settings` in the Select field settings, and then click Delete next to the relevant stage. - - - -## Display fields - -You can configure your Kanban board to display some fields and hide others. To hide a field, click on Options on the top right, then on Fields to bring up the list of options. Hover the field you want to hide to bring up the `-` button. Click on it to hide the field. - -You can also rearrange the order of fields by holding down the field name and dragging it to where you want it. - - - -## Compact View - -You can also hide all the fields and get an overview of all the opportunities at a glance. To do so, click on Options on the top right and turn on the toggle for Compact view after selecting layout in Kanban view. - - - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/views/views-sort-filter.mdx b/packages/twenty-website/src/content/user-guide/views/views-sort-filter.mdx deleted file mode 100644 index e4be8896a4..0000000000 --- a/packages/twenty-website/src/content/user-guide/views/views-sort-filter.mdx +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: Views, Sort and Filter -info: "Find out how to create, manage and delete Object Views." -icon: IconChecklist -image: /images/user-guide/views/filter.png -sectionInfo: Discover how to use standard and custom objects in your workspace. ---- -## About Views - -You can see your records in different ways by creating views. In a view, you can apply filters and sorts to organize your content efficiently. For instance, on the `People` object, you can create a view to isolate US contacts by filtering those with a US phone number. - -### Default View - -Each object comes with an unfiltered, unsorted, and undeletable view known as the Default view. It's named after the object's plural name, such as "All Companies", "All People", "All Opportunities". - - - -## Creating, Editing and Deleting Views - -You can create several custom views and share them with your team. - -### Creating a View - -There are two ways to create a new view. Either directly from the `View Switcher`, or by filtering and sorting an existing view. - -#### From View Switcher - -1. Open the View Switcher -2. Click the `Add View` button at the bottom of the view switcher menu. -3. Choose an Icon and name for your View. -4. Choose a "View type" between Table and Kanban. -5. (Kanban Views only) For your Kanban view, select the Select field you wish to use as the column header. The system prompts you to create one from the Settings before enabling Kanban view creation, if your object lacks a `Select` type field. -6. Click "Create" to generate your new view. - -The newly created view opens automatically. - -
- -
- - -#### From Sorting and Filtering - -When you change the `Sorting` and `Filtering` of an existing view, a `Save as new view` button will appear at the right edge of the `View Bar`. This will open the New View menu mentioned above, allowing you to create a new view out of an existing one. - -
- -
- - -### Editing and Deleting a View - -To Edit or Delete a view: -1. Open the View Switcher. -2. Hover the View you wish to edit. -3. Click on the three dots that appear upon hover to edit and delete views. - -Upon clicking on edit, you can change the icon and the name of the view or delete the view completely. - -
- -
- - -## Navigating Between Views - -To switch between views, simply open the view switcher and click the view you wish to open. - -## Customizing Views - -Each view can be customized to streamline your business processes. Views help segment your data. You can customize views using filters, sorts, and field display. - -### Filtering a View - -To filter a view: - -- Click **Filter** > select a field (for example: Name, Company in the People Object). -- Choose a condition, select a value, and apply the filter. -- Add more filters with `+ Add filter` or remove them with **X**. - - -
- -
- - -### Sorting a View - -Order your fields data in ascending or descending order: -- Select **Sort**, choose a field, and define the sort order you desire. -- You can apply and arrange several sorts as needed. -
- -
- - - -### Field display - -You can customize which fields to display within a view. To hide a field, click **Options** > **Fields** and select the hide icon upon hover or click on the field column header and select **hide**. - -You can rearrange fields by clicking their field column header and then press **Move Right** or **Move Left**. - -### Opening Record - -To open a record, click on the name in the first column. This action will open the corresponding Record page as a side panel. - - diff --git a/packages/twenty-website/src/content/user-guide/workflows.mdx b/packages/twenty-website/src/content/user-guide/workflows.mdx deleted file mode 100644 index 381bd4979b..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Workflows -icon: IconSettings -info: Automate processes and integrate with external tools. -image: /images/user-guide/workflows/workflow.png -sectionInfo: Your complete guide to Twenty CRM features and best practices. ---- diff --git a/packages/twenty-website/src/content/user-guide/workflows/external-tool-integration.mdx b/packages/twenty-website/src/content/user-guide/workflows/external-tool-integration.mdx deleted file mode 100644 index 2600769555..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows/external-tool-integration.mdx +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: External Tool Integration -icon: IconPlug -info: These workflows focus on bringing data in and out of Twenty through API calls and webhooks. -image: /images/user-guide/integrations/plug.png -sectionInfo: Automate processes and integrate with external tools ---- -Below are workflow examples you could roll out to connect Twenty with the rest of your stack. - - -## Data Ingestion Use Cases - -### Webform Submissions -**Problem**: You need to capture leads from website forms, landing pages, or contact forms directly into Twenty. - -**Solution**: Use webhook triggers to automatically create records from form submissions. - -**Setup**: -- Create a workflow with a Webhook trigger -- Configure the webhook to expect form data (name, email, company, etc.) -- Set the webhook method to POST -- Define the expected body structure in the trigger - -**Trigger**: Webhook (POST request from your form) - -**Actions**: -- Search Records to check if person/company already exists -- Branch: If exists → Update Record, If not → Create Record -- Create Record for follow-up task assigned to sales rep -- Send Email notification to sales team - -### Product Data Synchronization -**Problem**: Your sales team needs visibility into product usage, billing, or feature adoption data stored in your data warehouse. - -**Solution**: Regularly sync product data into Twenty to give sellers context about their accounts. - -**Trigger**: On a Schedule (daily or weekly) - -**Actions**: -- HTTP Request to your data warehouse API -- Code action to process and format the data -- Use the Iterator function for the following steps -- Search Records to find matching company records -- Update Record to add product usage metrics -- Create Record for tasks when usage drops below threshold - -### Meeting Notes from Call Recorders -**Problem**: Important insights from sales calls get lost or aren't properly documented in the CRM. - -**Solution**: Automatically create notes and action items from call recording systems. - -**Trigger**: Webhook (from call recording platform) - -**Actions**: -- Code action to extract meeting summary and action items -- Search Records to find the related opportunity or contact -- Create Record for a note with meeting summary -- Create Record for follow-up tasks based on action items -- Send Email to attendees with summary and next steps - -### Data Enrichment -**Problem**: Your contact and company records lack important demographic and firmographic information. - -**Solution**: Automatically enrich records using external data providers. - -**Trigger**: Record is Created (People or Companies object) - -**Actions**: -- HTTP Request to enrichment API -- Code action to process enrichment response -- Use the Iterator function for the following steps -- Update Record with additional company/contact information -- Create Record for sales task if high-value prospect identified -- Send Email alert if enrichment reveals key buying signals - -## Data Distribution Use Cases - -### Newsletter Subscriber Management -**Problem**: You want to send marketing emails to specific segments of your CRM data using specialized email tools. - -**Solution**: Export subscriber lists to your email marketing platform when needed. - -**Setup**: Create a view in Twenty with all newsletter recipients - -**Trigger**: Launch Manually (when no record is selected) - -**Actions**: -- Search Records using the newsletter view criteria -- Code action to format email addresses for your email platform -- HTTP Request to add subscribers to your email marketing tool -- Create Record for campaign tracking -- Send Email confirmation to marketing team - -### Email Sequence Triggers -**Problem**: You want to trigger sophisticated email sequences based on CRM events using dedicated email automation tools. - -**Solution**: Send new leads or customers to your email automation platform when specific events occur. - -**Trigger**: Record is Created (People object with specific criteria) - -**Actions**: -- Code action to determine appropriate email sequence -- HTTP Request to add contact to email automation platform -- Update Record to track sequence enrollment -- Create Record for follow-up task to monitor engagement - -### Lead Scoring Integration -**Problem**: You need sophisticated lead scoring that combines CRM data with external signals. - -**Solution**: Send lead data to external scoring tools or implement scoring logic within workflows. - -**Option 1 - External Tool**: - -**Trigger**: Record is Updated (People object) - -**Actions**: -- HTTP Request to send lead data to scoring platform -- Code action to process score response -- Update Record with lead score -- Create Record for sales task if score exceeds threshold - -**Option 2 - Internal Logic**: - -**Trigger**: Record is Updated (People object) - -**Actions**: -- Code action with scoring algorithm (company size, industry, behavior) -- Update Record with calculated score -- Send Email alert to sales rep for high-scoring leads - -### Invoice Generation -**Problem**: When deals close, your billing system needs to be updated with customer and deal information. - -**Solution**: Automatically send deal data to your invoicing system when opportunities are won. - -**Trigger**: Record is Updated (Opportunities object, Stage = "Closed Won") - -**Actions**: -- Search Records to get complete customer information -- Code action to format data for billing system -- HTTP Request to create customer in billing platform -- HTTP Request to generate invoice -- Update Record to store invoice reference -- Send Email to finance team with invoice details - -## Advanced Integration Patterns - -### Bi-directional Sync -**Problem**: You need to keep data synchronized between Twenty and another system in both directions. - -**Solution**: Combine scheduled workflows with webhook triggers for real-time sync. - -**From Twenty to External System**: - -**Trigger**: Record is Updated (any relevant object) - -**Actions**: -- HTTP Request to update external system -- Update Record to track sync status and timestamp - -**From External System to Twenty**: - -**Trigger**: Webhook (from external system) - -**Actions**: -- Search Records to find matching record -- Update Record with new data from external system -- Create Record for conflict resolution task if needed - -### Multi-step Data Processing -**Problem**: Data from external sources needs complex processing before it can be used in Twenty. - -**Solution**: Use Code actions for data transformation and validation. - -**Trigger**: Webhook or On a Schedule - -**Actions**: -- Code action to validate incoming data format -- Code action to transform data structure -- Code action to apply business rules and calculations -- Search Records to check for duplicates -- Create or Update Record with processed data -- Send Email alert if data quality issues detected - -## Implementation Tips -- Store API keys securely in Settings → API & Webhooks -- Use HTTPS for all external API calls -- Be mindful of API rate limits - use scheduled workflows when possible -- Consider batch updates "On a Schedule" when real-time processing isn't required -- Remember the 100 concurrent workflow limit per workspace - use "Bulk" availability for manual triggers when processing multiple records (see [Workflow Features](/user-guide/section/workflows/workflow-features) for details) -- Test with sample data before activating workflows - -For troubleshooting integration issues, see our [Workflow Troubleshooting](/user-guide/section/workflows/workflow-troubleshooting) guide. For help implementing complex integrations, consider our [Professional Services](/user-guide/section/workflows/professional-services). - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/workflows/getting-started-workflows.mdx b/packages/twenty-website/src/content/user-guide/workflows/getting-started-workflows.mdx deleted file mode 100644 index 5c0ad60cd3..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows/getting-started-workflows.mdx +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Getting Started With Workflows -info: "Learn how to add automations and ideas to get started." -icon: IconNote -image: /images/user-guide/workflows/workflow.png -sectionInfo: Automate processes and integrate with external tools ---- - -## Why Workflows Matter - -Twenty was built to bring maximum flexibility to its users. Rather than forcing you to adapt your business processes to rigid, pre-built features, workflows enable you to build automations that create the CRM that best supports your unique business use cases. - -Workflows are Twenty's in-app feature for building these automations. They give you the building blocks to create exactly what your business needs, when it needs it. - -## What can I do with workflows? - -We recommend building automations for two main purposes: - -1. **Internal automations to facilitate your team's day-to-day**: Reduce the amount of manual entries and repetitive tasks that slow down your team. -2. **Bring data in and out of Twenty**: Connect Twenty via API calls and webhooks to your database and other tools. - -Let's explore examples of what's possible before diving into the how. - -## 1. Internal Automations - -Your CRM is only helpful if the data is up to date, but no one likes updating it. Use workflows to automate low-value, repeatable tasks and keep your team focused on what matters. - -Examples of what you can automate internally: -- **Data management**: Auto-flag personal emails, lead assignment, data validation -- **Sales processes**: Stage-based updates, churn management, stale opportunity alerts -- **Productivity**: Weekly task reminders, meeting follow-ups, cross-object field synchronization - -For detailed examples and step-by-step guidance, see our [Internal Automations](/user-guide/section/workflows/internal-automations) guide. - - -## 2. External Integrations - -Connect Twenty with your other tools and data sources to create a unified business system. You can bring data into Twenty from webforms, product databases, call recorders, and enrichment services. You can also send data out to email marketing tools, billing systems, and other business applications. - -Examples of what you can integrate: -- **Data ingestion**: Webform submissions, product data sync, meeting notes, data enrichment -- **Data distribution**: Newsletter management, email sequences, lead scoring, invoice generation - -For detailed integration patterns and implementation guidance, see our [External Tool Integration](/user-guide/section/workflows/external-tool-integration) guide. - -### What if I don't want to build those connections? -We offer [Professional Services](/user-guide/section/workflows/professional-services) to help you create the automations you need. -Depending on the scope of your project, we will suggest an [Onboarding pack](https://twenty.com/onboarding-packages) or we will put you in contact with our certified implementation partners. They can create your data model, migrate your data, build your workflows. - -### I'm not sure the connection I need is feasible -Send us a message and we will help you assess the feasibility. - -## Workflow Best Practices - -As you start building workflows, keep these tips in mind: - -- **Edit step names**: Rename your workflow steps to clearly describe what each one does. This helps with maintenance and makes it easier to hand off to coworkers -- **Leverage previous step data**: You can use fields from records returned by any previous step in your workflow -- **Start simple**: Begin with basic workflows and add complexity over time as you become more comfortable with the system -- **Plan before building**: Map out your workflow logic before you start building to avoid getting stuck halfway through -- **Use branches wisely**: After a `Search Records` step, create branches to handle both "update existing record" and "create new record" scenarios, then merge the paths back together - - -## What we're working on -Here are the main items we're working on to improve workflows: -- Loops (Iterator is currently in beta, activate it under Settings → Releases → Lab) -- If / Else step -- AI agent to build workflows on your behalf - - - diff --git a/packages/twenty-website/src/content/user-guide/workflows/internal-automations.mdx b/packages/twenty-website/src/content/user-guide/workflows/internal-automations.mdx deleted file mode 100644 index 903ec67159..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows/internal-automations.mdx +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Internal Automations -icon: IconBulb -info: "Automate repetitive tasks to reduce manual work and keep your data accurate." -image: /images/user-guide/workflows/internal-automations.png -sectionInfo: Automate processes and integrate with external tools ---- - -Below are workflow examples you could roll out to automate repetitive tasks to reduce manual work and keep your data up-to-date. - -## Data Management Automations - -### Auto-Flag Personal Emails -**Problem**: Your team needs to identify personal vs. business email addresses for better targeting and compliance. - -**Solution**: Create a workflow that automatically updates an "is personal email" field whenever an email address is added or updated. - -**Trigger**: Record is Updated (People object, Email field) - -**Actions**: -- Code action to check if email domain matches common personal providers (gmail.com, yahoo.com, etc.) -- Update Record to set the "is personal email" flag - -### Lead Assignment - Round Robin -**Problem**: New leads need to be distributed fairly across your sales team to ensure balanced workloads. - -**Solution**: Automatically assign new leads to sales reps using a round-robin system. - -**Trigger**: Record is Created (People object) - -**Actions**: -- Search Records to find the last assigned rep -- Code action to determine next rep in rotation -- Update Record to assign the lead to the selected rep -- Send Email to notify the assigned rep - -### Lead Assignment - Territory Based -**Problem**: Leads should be assigned based on geographic territories or company characteristics. - -**Solution**: Route leads to the appropriate sales rep based on location, company size, or industry. - -**Trigger**: Record is Created (People or Companies object) - -**Actions**: -- Code action to determine territory based on location/industry rules -- Search Records to find the territory owner -- Update Record to assign the lead -- Create Record for a follow-up task - -## Sales Process Automations - -### Opportunity Stage Management - Closed Won -**Problem**: When deals close, multiple manual updates are needed across different records and team members. - -**Solution**: Automatically handle all post-win activities when an opportunity moves to "Closed Won". - -**Trigger**: Record is Updated (Opportunities object, Stage field = "Closed Won") - -**Actions**: -- Update Record to change Company type from "Prospect" to "Customer" -- Create Record for onboarding tasks assigned to account manager -- Send Email notification to customer success team -- HTTP Request to update external billing system - -### Opportunity Stage Management - Closed Lost Renewal -**Problem**: When renewal opportunities are lost, the customer status needs to be updated for proper account management. - -**Solution**: Automatically update customer status when renewal deals are lost. - -**Trigger**: Record is Updated (Opportunities object, Stage = "Closed Lost" AND Type = "Renewal") - -**Actions**: -- Update Record to change Company type from "Customer" to "Churn Customer" -- Create Record for churn analysis task -- Send Email alert to customer success manager -- Update Record to add churn date and reason - -### Stale Opportunity Alerts -**Problem**: Opportunities sit without updates, causing deals to go cold and forecasts to become unreliable. - -**Solution**: Send automatic alerts when opportunities haven't been updated recently. - -**Trigger**: On a Schedule (daily) - -**Actions**: -- Search Records for opportunities not updated in X days -- Code action to format alert message with opportunity details -- Send Email to opportunity owner and manager -- Create Record for follow-up task if no response - -## Productivity Automations - -### Weekly Task Recap -**Problem**: Team members lose track of their upcoming tasks and deadlines. - -**Solution**: Send automated weekly email reminders with task summaries. - -**Trigger**: On a Schedule (every Monday at 8 AM) - -**Actions**: -- Search Records for tasks due this week by assignee -- Code action to format task list by person -- Send Email to each team member with their task recap -- Send Email to managers with team overview - -### Meeting Follow-up Automation -**Problem**: Important action items from meetings get forgotten or delayed. - -**Solution**: Automatically create follow-up tasks when meetings are scheduled or completed. - -**Trigger**: Record is Created (Activities object, Type = "Meeting") - -**Actions**: -- Create Record for pre-meeting preparation task -- Create Record for post-meeting follow-up task -- Send Email reminder to attendees -- Update Record to link tasks to the meeting - -### Cross-Object Field Synchronization -**Problem**: You need information from related records easily accessible (e.g., main contact's email on opportunity record). - -**Solution**: Automatically sync fields between related objects until nested fields are available. - -**Trigger**: Record is Updated (Opportunities object, Point of Contact field) - -**Actions**: -- Search Records to find the linked person's details -- Update Record to copy email address to opportunity -- Update Record to copy phone number to opportunity -- Update Record to copy company information - -## Data Validation and Cleanup - -### Phone Number Standardization -**Problem**: Phone numbers are entered in different formats, making them hard to use for calling or messaging. - -**Solution**: Automatically format phone numbers to a standard format when they're entered. - -**Trigger**: Record is Updated (People object, Phone field) - -**Actions**: -- Code action to parse and format phone number -- Update Record with standardized phone format -- Update Record to add country code if missing - - -For more complex automation needs, consider our [Professional Services](/user-guide/section/workflows/professional-services) or explore [External Tool Integration](/user-guide/section/workflows/external-tool-integration). - - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/workflows/professional-services.mdx b/packages/twenty-website/src/content/user-guide/workflows/professional-services.mdx deleted file mode 100644 index 470372097c..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows/professional-services.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Professional Services -icon: IconUsers -info: Get professional help building complex workflows and automations from Twenty's team and certified partners. -image: /images/user-guide/what-is-twenty/implementation_services.png -sectionInfo: Automate processes and integrate with external tools ---- - -## 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 - -### Onboarding Packs -Get help from our core team with our 4-hour [Onboarding packs](https://twenty.com/onboarding-packages): -- **Workflow Creation**: Build custom workflows for your business processes -- **Data Model Design**: Optimize your data structure for workflow automation -- **Data Migration**: Import existing data with proper workflow integration - -### Implementation Partners -Work with certified partners for advanced customizations. Contact us at contact@twenty.com to connect with our [implementation partners](https://twenty.com/implementation-services). - - - diff --git a/packages/twenty-website/src/content/user-guide/workflows/workflow-credits.mdx b/packages/twenty-website/src/content/user-guide/workflows/workflow-credits.mdx deleted file mode 100644 index a7adcad11e..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows/workflow-credits.mdx +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Workflow Credits -icon: IconCoins -info: Understand workflow credit consumption, monitoring, and cost management for your automations. -image: /images/user-guide/workflows/workflow-credits.png -sectionInfo: Automate processes and integrate with external tools ---- - -Workflow credits power your automations in Twenty. Understanding how they work helps you optimize costs and manage your automation budget effectively. - -## Credit Allocation by Plan - -Workflow credits are allocated per workspace based on your subscription plan: - -- **Trial**: 5 million credits -- **Pro Plan**: 10 million credits per month -- **Organization Plan**: 20 million credits per month - -## How Credit Consumption Works - -Credits are consumed when workflows execute, not when you create them. Each workflow action consumes credits based on its complexity: - -### Credit Consumption by Action Type - -- **Basic internal operations**: Very low credit consumption - - Search Records - - Create Record - - Update Record - - Delete Record - - Form actions - -- **Complex operations**: Higher credit consumption - - Code actions (JavaScript execution) - - HTTP Requests to external services - - -- **AI features**: Significant credit consumption (coming soon) - - AI prompts and processing will consume credits based on usage - -### Real-Time Deduction - -Credits are deducted in real-time as workflows execute. This means: -- Draft workflows don't consume credits -- Only active, running workflows use your credit allocation -- Failed workflows still consume credits for completed steps - -## Managing Credits - -### Check Credit Usage -1. Go to **Settings → Billing** -2. View your current credit consumption and remaining balance -3. Monitor usage patterns to optimize your workflows - -### Purchasing Additional Credits -If you need more credits beyond your plan allocation: -1. Go to **Settings → Billing** -2. Click on the option to purchase additional credits. Packages of different sizes are available. -3. Credits are added to your current balance - -## Best Practices - -### Efficient Workflow Design -- **Start Simple**: Begin with basic actions and add complexity gradually -- **Test in Draft**: Thoroughly test workflows before activation to avoid wasting credits on errors -- **Minimize HTTP Requests**: Use efficient search criteria and combine operations where possible -- **Batch Processing**: Use bulk operations and Iterator actions efficiently -- **Error Handling**: Implement proper error handling to prevent unnecessary retries -- **Manual Trigger Optimization**: For manual triggers, choose `Bulk` availability to process multiple records in a single workflow run (see [Workflow Features](/user-guide/section/workflows/workflow-features) for details) - -### Action Optimization -- Use basic internal operations when possible (lower credit consumption) -- Optimize Code actions for efficiency -- Consider manual triggers for non-urgent processes -- Batch operations to reduce individual action calls - -### Credit Management -- **Regular Monitoring**: Check your credit usage weekly in Settings → Billing -- **Usage Tracking**: Keep track of consumption patterns to avoid unexpected overages -- **Plan Accordingly**: Consider upgrading your plan if you consistently need more credits -- **Workflow Review**: Regularly review high-consumption workflows and deactivate unused ones -- **Strategic Planning**: Plan workflow deployment based on credit availability - -For detailed billing information and credit management, visit **Settings → Billing** in your Twenty workspace. - - diff --git a/packages/twenty-website/src/content/user-guide/workflows/workflow-features.mdx b/packages/twenty-website/src/content/user-guide/workflows/workflow-features.mdx deleted file mode 100644 index 48e9db0c23..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows/workflow-features.mdx +++ /dev/null @@ -1,272 +0,0 @@ ---- -title: Workflow Features -icon: IconSettings -info: Complete reference for all available workflow triggers, actions, and management features. -image: /images/user-guide/workflows/robot.png -sectionInfo: Automate processes and integrate with external tools ---- - -## Workflow Triggers - -Workflows always start with a single trigger that defines when the automation should run. - -### Record is Created -Starts the workflow when a new record is created in a selected object (People, Companies, Opportunities, or any custom object). - -**Configuration**: Select the object type to monitor for new records. - -### Record is Updated -Starts the workflow when changes are made to an existing record. - -**Configuration**: -- Select the object type -- Optionally specify which fields to monitor for changes - -### Record is Updated or Created -Starts the workflow when a record is either created or updated in a selected object. - -**Why This Matters**: This trigger is particularly helpful because records created via different methods behave differently: -- **API/CSV imports**: Records are created with all fields populated immediately -- **Manual creation**: Records are created first, then fields are added in subsequent updates - -**Configuration**: -- Select the object type to monitor -- Optionally specify which fields to monitor for changes -- The workflow will trigger both on initial creation and any subsequent updates - -### Record is Deleted -Starts the workflow when a record is removed from an object. - -**Configuration**: Select the object type to monitor for deletions. - -### Launch Manually -Starts the workflow when triggered by a user action. This trigger can be accessed through the Cmd+K menu or via a custom button in the top navbar. - -**Availability Configuration**: -Choose how the workflow should handle record selection: - -- **Global**: No record is required to trigger this workflow. The workflow is triggered from anywhere (from any object) and does not use record(s) as input. - -- **Single**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run as many times as there are records selected. - - - You cannot run more than 100 workflows in parallel at any given time. - - -- **Bulk**: The selected record(s) will be passed to your workflow. This is configured for a given object. Several records can be selected before triggering the workflow. The workflow will run once, providing the entire list of records as input. This means the workflow needs to contain an Iterator action. This is best for people who want to optimize/limit the number of workflow runs. - -**Additional Configuration**: -- Select the target object (for Single and Bulk availability) -- Choose a command icon for the workflow trigger -- Configure navbar placement (Pinned or Not Pinned) - -**Access Methods**: -- Cmd+K menu to find and launch manual workflows -- Custom button in the top navbar (if configured) - -### On a Schedule -Starts the workflow on a recurring basis you define. - -**Configuration**: -- Select time unit (minutes, hours, days) -- Enter a value or use custom cron expressions for advanced scheduling - -### Webhook -Starts the workflow when a GET or POST request is received from an external service. - -**Configuration**: -- Receive a unique webhook URL -- For POST requests, define the expected body structure -- Configure authentication if needed - -## Workflow Actions - -Actions define what happens after a trigger fires. You can chain multiple actions together. - -### Create a Record -Adds a new record to a selected object. - -**Configuration**: -- Select the target object -- Fill out the required and optional fields -- Use data from previous steps to populate fields - -**Output**: The newly created record data is available for use in subsequent steps. - -### Update Record -Modifies an existing record in a selected object. - -**Configuration**: -- Select the target object -- Choose the specific record to update -- Select fields to modify and enter new values - -**Output**: The updated record data is available for use in subsequent steps. - -### Delete Record -Removes a record from a selected object. - -**Configuration**: -- Select the target object -- Choose the specific record to delete - -**Output**: The deleted record data remains available for use in subsequent steps. - -### Search Records -Finds records within a selected object using filter conditions. - -**Configuration**: -- Select the object to search -- Set filter criteria to narrow results -- Configure sorting and limits - -**Output**: Returns matching records that can be used in subsequent steps. - -**Best Practice**: Use branches after Search Records to handle "found" vs "not found" scenarios. - -### Iterator -Loops through an array of records returned from a previous step, allowing you to perform actions on each record individually. - -**Configuration**: -- Select the array of records from a previous step (e.g., results from Search Records) -- Define the actions to perform on each record in the loop -- Configure the variable name to reference each record in the iteration - -**Example**: Search Records returns 5 people, then use Iterator to send an email to each person or update each record individually. - -**Note**: Iterator is currently in beta. Activate it under Settings > Releases > Lab. - -### Filter -Filters an array of records based on specified conditions, allowing only records that meet the criteria to pass through. - -**Configuration**: -- Select the array of records to filter -- Define filter conditions and criteria -- Configure which records should pass through to subsequent steps - -**Output**: Returns only the records that match the specified filter conditions. - -### Send Email -Sends an email from your workflow. - -**Prerequisites**: Add an email account in Settings > Accounts - -**Configuration**: -- Enter recipient email address -- Set subject line -- Compose message body -- Reference variables from previous steps for personalization - -**Note**: Email attachments will be available in Q1 2026. - -### Code -Runs custom JavaScript within your workflow. - -**Configuration**: -- Write JavaScript code in the editor -- Access variables from previous steps -- Return variables for use in subsequent steps -- Test code directly in the step - -**Access**: Manage API keys in Settings → API & Webhooks - -### Form -Prompts a form during workflow execution to collect user input. - -**Configuration**: -- Define input fields with types, labels, and placeholders -- Configure validation rules -- Set form title and description - -**Output**: Form responses are available for use in subsequent steps. - - -Forms are currently designed for manual triggers only. For workflows with other triggers (Record Created, Updated, etc.), forms are only accessible via the workflow run interface, which is not the expected user experience. A notifications center will be released in 2026 to properly support forms in automated workflows. - - -### HTTP Request -Sends a request to an external API as part of your workflow. - -**Configuration**: -- Enter the API endpoint URL -- Select HTTP method (GET, POST, PUT, PATCH, DELETE) -- Add required headers and values -- Include request body for POST/PUT/PATCH requests -- Provide sample response for structure preview - -## Workflow Management - -### Creating Workflows -1. Click "+ Add a Workflow" to begin -2. Click "Untitled" to name your workflow -3. Choose and configure your workflow trigger -4. Add actions to your workflow -5. Test and iterate -6. Activate your workflow (currently in draft mode) once you're done editing it - -**Note**: If you don't see the Workflows section, this is due to a permissions issue. Contact your workspace administrator to grant you access to workflows. - -### Workflow Statuses -- **Draft**: Being edited, not yet published -- **Active**: Live version responding to triggers -- **Deactivated**: Previously active but manually stopped -- **Archived**: Past versions kept for history - -### Activating Workflows -Click **Activate** to publish your draft as a new version. This makes the workflow eligible to run when triggered but doesn't immediately execute it. - -### Testing Workflows -Test workflows before activation using: -- Manual triggers (when no record selected) -- Individual action testing (especially Code actions) -- Draft mode testing that doesn't activate the workflow - -### Workflow Runs -A **Run** is a record of workflow execution containing: -- Status (success, failed, running) -- Output data from each step -- Author and timestamps -- Error messages if applicable - -**Viewing Runs**: -- Check the **Runs** panel in the workflow editor -- Open **Workflow Runs** view for monitoring across all workflows - -**Performance Tip**: Hide workflow runs from the "All workflows" page and other workflow pages to improve loading performance, as large numbers of runs can slow down page loading. - -### Version History -- View all versions under the **Versions** field -- Click any version to view details -- Use **Use as draft** to restore previous versions -- Handle draft conflicts with override or return options - -## Best Practices - -### Workflow Organization -- **Descriptive Names**: Use clear, specific workflow names -- **Step Naming**: Rename steps to describe their function -- **Documentation**: Add comments in Code actions -- **Categorization**: Group related workflows logically -- **Custom Fields**: Add fields to the Workflow object in your data model (similar to other objects) to organize and categorize workflows with custom properties - -### Performance Optimization -- **Minimize API Calls**: Batch operations when possible -- **Efficient Searches**: Use specific filter criteria -- **Error Handling**: Plan for failure scenarios -- **Rate Limiting**: Respect external API limits - -### Data Flow Management -- **Branch Logic**: Use branches after Search Records -- **Variable Usage**: Leverage data from previous steps -- **Data Validation**: Validate inputs in Code actions -- **Field Mapping**: Plan data transformations carefully - -### Monitoring and Maintenance -- **Regular Monitoring**: Check workflow runs for errors -- **Performance Review**: Analyze execution times and success rates -- **Update Management**: Test changes in draft before activation -- **Team Coordination**: Document workflows for team members - -For practical examples of these features in action, see our [Internal Automations](/user-guide/section/workflows/internal-automations) and [External Tool Integration](/user-guide/section/workflows/external-tool-integration) guides. - - \ No newline at end of file diff --git a/packages/twenty-website/src/content/user-guide/workflows/workflow-troubleshooting.mdx b/packages/twenty-website/src/content/user-guide/workflows/workflow-troubleshooting.mdx deleted file mode 100644 index e5d5386c38..0000000000 --- a/packages/twenty-website/src/content/user-guide/workflows/workflow-troubleshooting.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Workflow Troubleshooting -icon: IconBug -info: Debug and optimize your workflows with troubleshooting techniques and performance optimization tips. -image: /images/user-guide/what-is-twenty/20.png -sectionInfo: Automate processes and integrate with external tools ---- - -## Debugging with Workflow Runs - -Use the **Workflow Runs** interface to debug issues: -- Access via the **Runs** panel in the workflow editor -- Click on individual runs to see input/output data for each step -- Check execution status, error messages, and data flow between steps - -## Common Issues and Solutions - -### Workflow Not Triggering -**Problem**: Workflow doesn't execute when expected. - -**Solutions**: -- Verify the workflow is **Active** (not in Draft mode) -- Check trigger configuration matches your data structure -- For Record triggers, ensure the correct object and fields are selected -- For Webhook triggers, verify the URL and expected data format -- For Scheduled triggers, check the timing configuration - -### Forms Not Accessible -**Problem**: Form actions are hard to find or access in automated workflows. - - -Forms are currently designed for manual triggers only. For workflows with other triggers (Record Created, Updated, etc.), forms are only accessible via the workflow run interface, which is not the expected user experience. A notifications center will be released in 2026 to properly support forms in automated workflows. - - -**Workaround**: Use manual triggers when forms are required, or restructure workflows to avoid forms in automated flows. - -### High Credit Consumption -**Problem**: Workflows consuming more credits than expected. - -**Common Causes & Solutions**: -- **Inefficient API Calls**: Batch API calls when possible instead of individual requests -- **Wrong Manual Trigger Configuration**: Use `Bulk` availability instead of `Single` to process multiple records in one workflow run -- **Missing Filters**: Add conditional logic to stop workflows when criteria aren't met -- **Unnecessary Steps**: Remove redundant actions and optimize workflow logic -- **Real-time vs. Scheduled**: Use scheduled workflows for non-urgent processes - -### Concurrent Workflow Limits -**Problem**: Hitting the 100 concurrent workflow limit per workspace. - - -You cannot run more than 100 workflows in parallel at any given time per workspace. - - -**Solutions**: -- Use `Bulk` availability for manual triggers to process multiple records in one run -- Implement delays between workflow executions using scheduled triggers -- Optimize workflows to run faster and reduce concurrent execution time -- Consider batch processing during off-peak hours - -### API Rate Limiting -**Problem**: External API calls failing due to rate limits. - -**Solutions**: -- Use scheduled workflows instead of real-time triggers when possible -- Implement delays between API calls in Code actions -- Batch API requests when the external service supports it -- Monitor workflow runs for rate limit errors and adjust timing - -### Iterator Issues -**Problem**: Iterator actions not working as expected. - -**Solutions**: -- **Note**: Iterator is currently in beta. Activate it under Settings → Releases → Lab -- Verify the input is an array of records from a previous step -- Check that actions within the Iterator are properly configured -- Use Iterator with `Bulk` manual triggers for optimal performance - -### Missing Permissions -**Problem**: Cannot access workflows section. - - -If you don't see the Workflows section, this is due to a permissions issue. Contact your workspace administrator to grant you access to workflows. - - -## Optimization Tips - -### Performance Best Practices -- **Start simple** and add complexity gradually -- **Use `Bulk` availability** for manual triggers to process multiple records efficiently -- **Add filters early** to stop workflows when criteria aren't met -- **Batch API calls** and use scheduled workflows for non-urgent processes -- **Hide workflow runs** from pages showing all workflows to improve loading performance -- **Monitor credit usage** regularly in Settings → Billing - -### Error Prevention -- **Test in draft mode** before activating workflows -- **Validate API responses** and implement fallback actions -- **Use descriptive step names** for easier maintenance -- **Document complex logic** for team members - -## Getting Help - -### Self-Service Resources -- Review [Workflow Features](/user-guide/section/workflows/workflow-features) for technical details -- Check [Workflow Credits](/user-guide/section/workflows/workflow-credits) for optimization tips -- Explore [Internal Automations](/user-guide/section/workflows/internal-automations) and [External Tool Integration](/user-guide/section/workflows/external-tool-integration) for examples - -### Professional Support -- Contact our [Professional Services](/user-guide/section/workflows/professional-services) for complex troubleshooting -- Reach out to support via contact@twenty.com for technical assistance - - diff --git a/packages/twenty-website/src/shared-utils/constructSections.tsx b/packages/twenty-website/src/shared-utils/constructSections.tsx deleted file mode 100644 index 63b262373c..0000000000 --- a/packages/twenty-website/src/shared-utils/constructSections.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; - -export const constructSections = ( - docsArticleCards: DocsArticlesProps[], - isSection: boolean, -): { name: string; info: string }[] => { - if (isSection) { - return [ - { - name: docsArticleCards[0]?.topic, - info: docsArticleCards[0]?.sectionInfo, - }, - ]; - } else { - return Array.from( - new Map( - docsArticleCards - .filter((guide) => guide.numberOfFiles > 0) - .map((guide) => [guide.section, guide]), - ).values(), - ).map((guide) => ({ - name: guide.section, - info: guide.sectionInfo, - })); - } -}; diff --git a/packages/twenty-website/src/shared-utils/fetchArticleFromSlug.ts b/packages/twenty-website/src/shared-utils/fetchArticleFromSlug.ts deleted file mode 100644 index 7c270c8d08..0000000000 --- a/packages/twenty-website/src/shared-utils/fetchArticleFromSlug.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { getPost } from '@/app/_server-utils/get-posts'; - -export async function fetchArticleFromSlug(slug: string, basePath: string) { - const effectiveSlug = slug && slug.length > 0 ? slug : 'home'; - return await getPost(effectiveSlug, basePath); -} diff --git a/packages/twenty-website/src/shared-utils/filterDocsIndex.tsx b/packages/twenty-website/src/shared-utils/filterDocsIndex.tsx deleted file mode 100644 index e9a485dfcd..0000000000 --- a/packages/twenty-website/src/shared-utils/filterDocsIndex.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; - -export const filterDocsIndex = ( - docsIndex: DocsArticlesProps[], - sectionName: string, -): DocsArticlesProps[] => { - return docsIndex.filter( - (guide) => - guide.section.includes(sectionName) && guide.title.includes(guide.topic), - ); -}; diff --git a/packages/twenty-website/src/shared-utils/getCardPath.tsx b/packages/twenty-website/src/shared-utils/getCardPath.tsx deleted file mode 100644 index be3301723e..0000000000 --- a/packages/twenty-website/src/shared-utils/getCardPath.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; - -export const getCardPath = ( - card: DocsArticlesProps, - basePath: string, - isSection: boolean, - sectionName?: string, -) => { - const isPlayground = [ - 'core-api-rest', - 'metadata-api-rest', - 'core-api-graphql', - 'metadata-api-graphql', - ]; - - if (isPlayground.includes(card.fileName)) { - const apiType = card.fileName.includes('rest') ? 'rest-api' : 'graphql'; - const apiName = card.fileName.includes('core') ? 'core' : 'metadata'; - return `/developers/${apiType}/${apiName}`; - } else if (card.fileName.includes('storybook')) { - return 'https://storybook.twenty.com'; - } else if (card.fileName.includes('components')) { - return `/twenty-ui`; - } else { - if (sectionName) { - return card.numberOfFiles > 1 - ? `${basePath}section/${sectionName}/${card.fileName}` - : `${basePath}${card.fileName}`; - } else { - return card.numberOfFiles > 1 && !isSection - ? `${basePath}/section/${card.fileName}` - : `${basePath}/${card.fileName}`; - } - } -}; diff --git a/packages/twenty-website/src/shared-utils/getSectionIcons.tsx b/packages/twenty-website/src/shared-utils/getSectionIcons.tsx deleted file mode 100644 index a7d9f33347..0000000000 --- a/packages/twenty-website/src/shared-utils/getSectionIcons.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { - IconBook, - IconCode, - IconComponents, - IconGitPullRequest, - IconTool, -} from '@tabler/icons-react'; - -import { Theme } from '@/app/_components/ui/theme/theme'; - -export const getSectionIcon = (section: string): JSX.Element => { - const iconSize = Theme.icon.size.md; - - const sectionIcons: Record = { - 'Getting started': , - Contributing: , - Extending: , - Components: , - Developers: , - }; - for (const key of Object.keys(sectionIcons)) { - if (section.includes(key)) { - return sectionIcons[key]; - } - } - return ; -};