diff --git a/apps/protocol-frontend/src/components/GuildImportModal.tsx b/apps/protocol-frontend/src/components/GuildImportModal.tsx
new file mode 100644
index 000000000..cc64c7cdb
--- /dev/null
+++ b/apps/protocol-frontend/src/components/GuildImportModal.tsx
@@ -0,0 +1,123 @@
+import { Box, Button, Heading, Spinner, Stack } from '@chakra-ui/react';
+import { ControlledSelect, SelectOption as Option } from '@govrn/protocol-ui';
+import { useMemo, useState } from 'react';
+import { useGuildXYZListGuilds } from '../hooks/useGuildXYZListGuilds';
+import { useOverlay } from '../contexts/OverlayContext';
+
+interface GuildImportProps {
+ onSuccess: (guildId: number) => void;
+}
+
+const GuildImportTitle = ({ title }: { title: string }) => {
+ return (
+
+ {title}
+
+ );
+};
+
+const GuildImportModalError = ({ message }: { message: string }) => {
+ return (
+
+
+
+ {message}
+
+
+ );
+};
+
+export const GuildImportModal = ({ onSuccess }: GuildImportProps) => {
+ const { setModals } = useOverlay();
+
+ const [selectedGuild, setSelectedGuild] = useState