diff --git a/.env b/.env
index 7b5b903..3b40baf 100644
--- a/.env
+++ b/.env
@@ -26,6 +26,7 @@ STUDIO_BASE_URL=''
SUPPORT_URL=''
USER_INFO_COOKIE_NAME=''
ENABLE_COPPA_COMPLIANCE=''
+ENABLE_DOB_UPDATE=''
MARKETING_EMAILS_OPT_IN=''
APP_ID=
MFE_CONFIG_API_URL=
diff --git a/.env.development b/.env.development
index 9456202..40e4c89 100644
--- a/.env.development
+++ b/.env.development
@@ -27,6 +27,7 @@ STUDIO_BASE_URL=''
SUPPORT_URL='http://localhost:18000/support'
USER_INFO_COOKIE_NAME='edx-user-info'
ENABLE_COPPA_COMPLIANCE=''
+ENABLE_DOB_UPDATE=''
MARKETING_EMAILS_OPT_IN=''
APP_ID=
MFE_CONFIG_API_URL=
diff --git a/.env.test b/.env.test
index ee8e1b6..7b20d23 100644
--- a/.env.test
+++ b/.env.test
@@ -26,6 +26,7 @@ STUDIO_BASE_URL=''
SUPPORT_URL='http://localhost:18000/support'
USER_INFO_COOKIE_NAME='edx-user-info'
ENABLE_COPPA_COMPLIANCE=''
+ENABLE_DOB_UPDATE=''
MARKETING_EMAILS_OPT_IN=''
APP_ID=
MFE_CONFIG_API_URL=
diff --git a/src/account-settings/AccountSettingsPage.jsx b/src/account-settings/AccountSettingsPage.jsx
index 8163063..80d4bd2 100644
--- a/src/account-settings/AccountSettingsPage.jsx
+++ b/src/account-settings/AccountSettingsPage.jsx
@@ -37,11 +37,13 @@ import ThirdPartyAuth from './third-party-auth';
import BetaLanguageBanner from './BetaLanguageBanner';
import EmailField from './EmailField';
import OneTimeDismissibleAlert from './OneTimeDismissibleAlert';
+import DOBModal from './DOBForm';
import {
YEAR_OF_BIRTH_OPTIONS,
EDUCATION_LEVELS,
GENDER_OPTIONS,
COUNTRY_WITH_STATES,
+ COPPA_COMPLIANCE_YEAR,
getStatesList,
} from './data/constants';
import { fetchSiteLanguages } from './site-language';
@@ -494,13 +496,37 @@ class AccountSettingsPage extends React.Component {
);
const hasLinkedTPA = findIndex(this.props.tpaProviders, provider => provider.connected) >= 0;
+
+ // if user is under 13 and does not have cookie set
+ const shouldUpdateDOB = (
+ getConfig().ENABLE_COPPA_COMPLIANCE
+ && getConfig().ENABLE_DOB_UPDATE
+ && this.props.formValues.year_of_birth.toString() >= COPPA_COMPLIANCE_YEAR.toString()
+ && !localStorage.getItem('submittedDOB')
+ );
return (
<>
+ { shouldUpdateDOB
+ && (
+