Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions app/components/booking/BookingSteps.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ export function ScheduleStep({
setSmsOptin,
privacyUrl,
termsUrl,
companyName,
}: {
inspectionDate: string;
setInspectionDate: (v: string) => void;
Expand All @@ -132,7 +133,10 @@ export function ScheduleStep({
setSmsOptin: (v: boolean) => void;
privacyUrl: string | null;
termsUrl: string | null;
companyName: string;
}) {
// Twilio/CTIA require the opt-in to be branded with the end business name.
const company = companyName?.trim() || "your inspection company";
return (
<section className="space-y-8">
<div className="space-y-5">
Expand Down Expand Up @@ -231,10 +235,10 @@ export function ScheduleStep({
className="mt-0.5 h-4 w-4 rounded border-ih-border text-ih-primary focus:ring-ih-primary"
/>
<span className="text-[13px] text-ih-fg-3 leading-relaxed">
Text me appointment &amp; report updates. By checking this box you agree to
receive automated text messages about your inspection. Message frequency varies
by your inspection activity. Message &amp; data rates may apply; reply STOP to opt
out, HELP for help. Consent is not a condition of booking.
Text me appointment &amp; report updates from {company}. By checking this box you
agree to receive automated text messages from {company} about your inspection.
Message frequency varies by your inspection activity. Message &amp; data rates may
apply; reply STOP to opt out, HELP for help. Consent is not a condition of booking.
{(privacyUrl || termsUrl) && (
<>
{" "}
Expand Down
1 change: 1 addition & 0 deletions app/components/booking/BookingWizard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ export function BookingWizard({
setSmsOptin={setSmsOptin}
privacyUrl={privacyUrl}
termsUrl={termsUrl}
companyName={profile.company}
/>
)}

Expand Down
2 changes: 1 addition & 1 deletion server/api/sms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ import type { HonoConfig } from '../types/hono';
// STOP-set → revoke; START-set → grant; HELP-set → informational auto-reply
// (TCPA/CTIA + Twilio toll-free verification require HELP to respond); anything
// else is logged, not a state change.
const STOP_WORDS = new Set(['STOP', 'STOPALL', 'UNSUBSCRIBE', 'CANCEL', 'END', 'QUIT']);
const STOP_WORDS = new Set(['STOP', 'STOPALL', 'UNSUBSCRIBE', 'OPTOUT', 'CANCEL', 'END', 'REVOKE', 'QUIT']);
const START_WORDS = new Set(['START', 'UNSTOP', 'YES']);
const HELP_WORDS = new Set(['HELP', 'INFO']);

Expand Down
Loading