+ This Privacy Policy explains how {COMPANY} ("{COMPANY}," "we,"
+ "us") collects, uses, and protects your information when you use our
+ website, portal, and services, including our text message (SMS) program.
+
+
+
Information we collect
+
+
Account information — name, email address, and mobile phone number you provide when registering or signing in.
+
Property and service information — details you share to request roof inspections, estimates, and reports.
+
Usage and device information — log data, device and browser type, and similar technical information collected automatically.
+
+
+
How we use your information
+
+
To create and secure your account, including sending one-time verification codes (OTP).
+
To provide, maintain, and improve our services.
+
To communicate with you about your account, appointments, estimates, and support requests.
+
To comply with legal obligations and protect against fraud and abuse.
+
+
+
SMS / text messaging
+
+
+
+ We do not sell, rent, or share your mobile phone number, or your SMS opt-in
+ consent, with any third parties or affiliates for their marketing or
+ promotional purposes.
+
+
+
+ Mobile information collected for the purpose of sending text messages is used
+ only to deliver the messages you opted into and is not shared with third parties
+ for marketing. We may share your number only with service providers (such as our
+ messaging platform) strictly to deliver the messages, and as required by law.
+
+
+ Message frequency varies — verification codes are sent when you
+ request them (for example, each time you sign in or register), and account or
+ service notifications are occasional. Message and data rates may
+ apply, depending on your mobile carrier and plan.
+
+
+ You can opt out at any time by replying STOP to any message, and
+ get help by replying HELP. See our{" "}
+ Terms of Service and the{" "}
+ SMS opt-in page for full program details.
+
+
+
+
How we share information
+
+ We do not sell your personal information. We share information only with service
+ providers who help us operate the service (for example, cloud hosting,
+ authentication, and messaging providers), and when required by law or to protect
+ our rights. As stated above, mobile phone numbers and SMS consent are never shared
+ with third parties or affiliates for marketing purposes.
+
+
+
Data retention and security
+
+ We retain personal information for as long as your account is active or as needed to
+ provide the service and meet legal obligations. We use administrative, technical,
+ and physical safeguards designed to protect your information; no method of
+ transmission or storage is completely secure.
+
+
+
Your choices and rights
+
+ You may access or update your account information at any time, opt out of SMS by
+ replying STOP, and request deletion of your account by contacting us. Depending on
+ your location, you may have additional rights under applicable privacy laws.
+
+
+ );
+}
diff --git a/src/app/(legal)/sms-opt-in/page.tsx b/src/app/(legal)/sms-opt-in/page.tsx
new file mode 100644
index 0000000..c8f8f81
--- /dev/null
+++ b/src/app/(legal)/sms-opt-in/page.tsx
@@ -0,0 +1,125 @@
+"use client";
+
+import { useState } from "react";
+import Link from "next/link";
+import { COMPANY, SMS_SENDER, SUPPORT_EMAIL } from "../legal-config";
+
+/**
+ * Public SMS opt-in web form for A2P 10DLC campaign verification. Contains every
+ * element Twilio/CTIA require: phone field, an un-pre-checked consent checkbox, a
+ * description of the messages, frequency, rates disclaimer, HELP/STOP instructions,
+ * and links to the Terms and Privacy Policy.
+ */
+export default function SmsOptInPage() {
+ const [phone, setPhone] = useState("");
+ const [consent, setConsent] = useState(false);
+ const [done, setDone] = useState(false);
+
+ const digits = phone.replace(/\D/g, "");
+ const valid = digits.length >= 10 && consent;
+
+ function onSubmit(e: React.FormEvent) {
+ e.preventDefault();
+ if (!valid) return;
+ // Records the opt-in. Consent + timestamp should be persisted server-side for your
+ // records; this confirmation is the user-facing acknowledgement.
+ setDone(true);
+ }
+
+ return (
+
+
{COMPANY} SMS Alerts
+
Sign up to receive text messages from {COMPANY}.
+
+
+ {COMPANY} sends text messages to help you use and secure your account. By opting
+ in below you'll receive account and service messages,
+ including:
+
+
+
One-time verification codes (OTP) when you sign in or register
+
Sign-in and security alerts
+
Roof inspection scheduling and status updates
+
Estimate and report notifications
+
+
+ {done ? (
+
+ You're signed up. We'll text account and service
+ messages to {phone}. Reply STOP at any time to unsubscribe, or{" "}
+ HELP for help.
+
Message frequency: varies — codes are sent when you request them (e.g. each sign-in or registration); notifications are occasional
+
Cost: Message and data rates may apply, per your mobile plan
+
+
+
How to opt out or get help
+
+ Reply STOP to any message to unsubscribe — you'll get one
+ confirmation and no further texts. Reply HELP for help, or contact
+ us at {SUPPORT_EMAIL}
+ {SMS_SENDER ? <> or {SMS_SENDER}> : null}. Messages are sent from {COMPANY}.
+
+
+
Your privacy
+
+
+ We do not sell, rent, or share your mobile phone number or your SMS opt-in
+ consent with any third parties or affiliates for their marketing purposes.
+ {" "}
+ See our Privacy Policy for full details.
+
+
+ );
+}
diff --git a/src/app/(legal)/terms/page.tsx b/src/app/(legal)/terms/page.tsx
new file mode 100644
index 0000000..8c77c50
--- /dev/null
+++ b/src/app/(legal)/terms/page.tsx
@@ -0,0 +1,85 @@
+import type { Metadata } from "next";
+import Link from "next/link";
+import { COMPANY, SUPPORT_EMAIL, LAST_UPDATED } from "../legal-config";
+
+export const metadata: Metadata = {
+ title: `Terms of Service — ${COMPANY}`,
+ description: `The terms governing your use of ${COMPANY}, including the SMS/text messaging program.`,
+};
+
+export default function TermsPage() {
+ return (
+
+
Terms of Service
+
Last updated: {LAST_UPDATED}
+
+
+ These Terms of Service ("Terms") govern your access to and use of the{" "}
+ {COMPANY} website, portal, and services (the "Service"). By using the
+ Service you agree to these Terms.
+
+
+
Use of the Service
+
+ You must provide accurate information, keep your credentials secure, and use the
+ Service only for lawful purposes and in accordance with these Terms. You are
+ responsible for activity that occurs under your account.
+
+
+
Accounts and verification
+
+ To protect your account we may verify your identity, including by sending one-time
+ codes to your email or mobile number. You agree to receive these verification
+ messages as part of using the Service.
+
+
+
SMS / text messaging program
+
+
+ By opting in on our SMS opt-in page or by
+ providing your mobile number and agreeing to receive texts, you consent to
+ receive account and service text messages from {COMPANY},
+ including one-time verification codes (OTP), security alerts, appointment and
+ inspection updates, and estimate notifications.
+
+
+ Message frequency varies.Message and data rates may
+ apply. Reply HELP for help or STOP to
+ unsubscribe at any time; after you send STOP we will send one confirmation and no
+ further messages. Carriers are not liable for delayed or undelivered messages.
+
+
+ We do not sell, rent, or share your mobile number or SMS consent with third
+ parties or affiliates for marketing. See our{" "}
+ Privacy Policy for details.
+
+
+
+
Acceptable use
+
+ You may not misuse the Service, attempt to access accounts or data you are not
+ authorized to access, interfere with the Service's operation, or use it to
+ send unlawful, harmful, or infringing content.
+
+
+
Disclaimers and limitation of liability
+
+ The Service is provided "as is" without warranties of any kind. To the
+ fullest extent permitted by law, {COMPANY} is not liable for any indirect,
+ incidental, or consequential damages arising from your use of the Service.
+
+
+
Changes to these Terms
+
+ We may update these Terms from time to time. Continued use of the Service after
+ changes take effect constitutes acceptance of the updated Terms.
+
+
+
Contact us
+
+ Questions about these Terms? Email us at{" "}
+ {SUPPORT_EMAIL}.
+