diff --git a/src/components/urgent-request/UrgentRequest.module.scss b/src/components/urgent-request/UrgentRequest.module.scss
new file mode 100644
index 0000000000000000000000000000000000000000..0f50588bce355ffb8e0a60e59dcf57dc8087f43c
--- /dev/null
+++ b/src/components/urgent-request/UrgentRequest.module.scss
@@ -0,0 +1,16 @@
+.UrgentRequest {
+  margin: 1rem 0 1rem 0;
+  border: 1px rgb(113, 0, 10) solid;
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  transition: all 0.2s ease-in-out;
+  opacity: 0;
+  transform-origin: top left;
+  transform: rotate3d(1, 0.5, 0.1, -90deg) scale(0);
+  &.open {
+    opacity: 1;
+    transform: rotate(0deg);
+    height: auto;
+  }
+}
diff --git a/src/components/urgent-request/UrgentRequest.test.tsx b/src/components/urgent-request/UrgentRequest.test.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..7169b71a400dcdde572aadc67b31282f31e63ff2
--- /dev/null
+++ b/src/components/urgent-request/UrgentRequest.test.tsx
@@ -0,0 +1,56 @@
+import * as React from 'react';
+import { fireEvent, render } from '@testing-library/react';
+import UrgentRequest from './UrgentRequest';
+import userEvent from '@testing-library/user-event';
+import styles from './UrgentRequest.module.scss';
+
+
+const mockSendUrgent = jest.fn();
+
+describe('<UrgentRequest>', () => {
+  it('renders the option to make a contact request urgent', () => {
+    const { getByRole, getByText } = render(
+      <UrgentRequest sendUrgent={mockSendUrgent} />,
+    );
+    const urgentFieldset = getByRole('group');
+    const urgentInput = getByRole('textbox');
+    const urgentSubmit = getByRole('button');
+
+    const urgentFold = getByText('Urgent request?');
+    // Folded urgent form has invisible content
+    expect(urgentFieldset).not.toHaveClass('open');
+
+    // Unfolding the urgency form
+    userEvent.click(urgentFold);
+    expect(urgentFieldset).toHaveClass(styles.open);
+
+    // See expected elements
+    expect(document.body.contains(urgentFieldset));
+
+    // Expected default values
+    expect(urgentInput).toHaveValue('');
+    expect(urgentSubmit).toBeDisabled();
+
+    // Try typing something that doesn't change the urgent status
+    userEvent.type(urgentInput, 'NOT URGENT');
+    expect(urgentInput).toHaveValue('NOT URGENT');
+    expect(urgentSubmit).toBeDisabled();
+
+    // Close the fold again.. this should clear the input field too.
+    userEvent.click(urgentFold);
+    expect(urgentFieldset).not.toHaveClass('open');
+    userEvent.click(urgentFold);
+    expect(urgentInput).toHaveValue('');
+    
+    // Fill in URGENT to change the urgent status
+    userEvent.type(urgentInput, 'URGENT');
+    // State was updated..
+    expect(urgentInput).toHaveValue('URGENT');
+    expect(urgentSubmit).toBeEnabled();
+
+    // Can submit now..
+    userEvent.click(urgentSubmit);
+    // Triggers a message sent up the hierarchy..
+    expect(mockSendUrgent).toBeCalled();
+  });
+});
diff --git a/src/components/urgent-request/UrgentRequest.tsx b/src/components/urgent-request/UrgentRequest.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..cf4e7b36e359fddf045815972f17dc851673a2d4
--- /dev/null
+++ b/src/components/urgent-request/UrgentRequest.tsx
@@ -0,0 +1,62 @@
+import Markdown from 'markdown-to-jsx';
+import React, { ChangeEvent, useEffect, useState } from 'react';
+import { useTranslation } from 'react-i18next';
+import styles from './UrgentRequest.module.scss';
+
+export interface UrgentRequestProps {
+  sendUrgent: CallableFunction;
+}
+
+function UrgentRequest({ sendUrgent }: UrgentRequestProps) {
+  const [open, setOpen] = useState<boolean>(false);
+  const [urgent, setUrgent] = useState<boolean>(true);
+  const [urgentText, setUrgentText] = useState<string>('');
+  const { t } = useTranslation();
+  const changeFold = (event: ChangeEvent<HTMLInputElement>) => {
+    setOpen(event.target.checked);
+    if (!open) setUrgentText('');
+  };
+
+  const changeUrgentText = (event: ChangeEvent<HTMLInputElement>): void => {
+    setUrgentText(event.target.value);
+  };
+
+  useEffect(() => {
+    setUrgent(urgentText == t('urgency.urgent'));
+  }, [urgentText]);
+
+  function submitUrgent(event: React.SyntheticEvent<HTMLFormElement>) {
+    event.preventDefault();
+    sendUrgent();
+  }
+
+  return (
+    <form onSubmit={submitUrgent}>
+      <div className="field.switch">
+        <input
+          id="urgency-checkbox"
+          type="checkbox"
+          className="switch fold-button"
+          onChange={changeFold}
+        />
+        <label htmlFor="urgency-checkbox">{t('urgency.foldText')}</label>
+      </div>
+      <fieldset className={`${styles.UrgentRequest} ${open ? styles.open : ''}`}>
+        <legend>{t('urgency.legend')}</legend>
+        <Markdown>{t('urgency.intro')}</Markdown>
+        <div className="field">
+          <input
+            type="text"
+            value={urgentText}
+            onChange={changeUrgentText}
+          ></input>
+        </div>
+        <button disabled={!urgent} className="bad" type="submit">
+          {t('urgency.submit')}
+        </button>
+      </fieldset>
+    </form>
+  );
+}
+
+export default UrgentRequest;