Thumbprint logo

Modal V2

Overlays to provide highly contextually user guidance

Modal variations

Modals can be opened or closed with a isOpen prop.

Terms & Conditions Modal

The Modal has a curtain (backdrop) at medium and large breakpoints. It appears fullscreen on small devices.

function DefaultModal() {
    const [isOpen, setIsOpen] = React.useState(false);
    const [licenseText, setLicenseText] = React.useState('');

    return (
        <React.Fragment>
            <Button
                onClick={() => {
                    setIsOpen(true);
                }}
            >
                Open modal
            </Button>
            <ModalV2
                isOpen={isOpen}
                onCloseClick={() => {
                    setIsOpen(false);
                }}
                onCloseFinish={() => {
                    console.log('Modal onCloseFinish');
                }}
                onOpenFinish={() => {
                    console.log('Modal onOpenFinish');
                }}
                pillText='Terms'
                pillColor='indigo'
                illustrationUrl='https://placehold.co/300x300/blue/white?text=Square+Illustration+300x300'
                title='Accept our terms, conditions and legal agreements'
                description='You must read and accept our terms and conditions before using the platform.'
                content={
                <div>
                    <img src="https://placehold.co/500x500/orange/white?text=Content" alt="Terms and Conditions" />
                    <div className="tp-wrap-snap tp-longread tp-longread--spacing">
        <h1>Terms of Use</h1>
        <p>Effective: June 9, 2025</p>
        <p>
            <strong>
                IMPORTANT NOTICE: THIS AGREEMENT CONTAINS A BINDING ARBITRATION PROVISION AND CLASS
                ACTION WAIVER. IT AFFECTS YOUR LEGAL RIGHTS AS DETAILED IN THE
                <a href="https://www.thumbtack.com/terms/#arbitration-and-class-action-waiver">
                ARBITRATION AND CLASS ACTION WAIVER SECTION</a>
                BELOW. EXCEPT WHERE PROHIBITED BY APPLICABLE LAW, THESE TERMS REQUIRE YOU TO
                ARBITRATE DISPUTES WITH US RATHER THAN RESOLVE DISPUTES THROUGH A JUDGE OR JURY
                TRIAL, OR ANY COURT PROCEEDINGS, OR CLASS ACTIONS OF ANY KIND. BY ACCESSING, OR
                USING THE PLATFORM, YOU HEREBY WAIVE ANY AND ALL RIGHTS TO INITIATE OR PARTICIPATE
                IN ANY CLASS ACTION LAWSUIT OR REPRESENTATIVE ACTION WITH RESPECT TO ANY DISPUTES OR
                CLAIMS ARISING OUT OF OR RELATING TO THESE TERMS OR THE PLATFORM. PLEASE READ
                CAREFULLY.
            </strong>
        </p>
        <h2 id="acceptance-of-these-terms">ACCEPTANCE OF THESE TERMS</h2>
        <p>
            This Terms of Use Agreement ("Terms"), including the
            <a href="https://www.thumbtack.com/terms/#arbitration-and-class-action-waiver">
            BINDING ARBITRATION AND CLASS ACTION WAIVER CONTAINED HEREIN</a>
            govern your access to, use of, and participation in the Platform made available by
            Thumbtack, Inc. or any of its subsidiaries (collectively, and including such entities
            operating under any other names (including, without limitation, Setter), "Thumbtack,"
            "we," "our," or "us") or through Thumbtack and the entirety of your relationship with
            Thumbtack. YOU UNDERSTAND AND AUTHORIZE THUMBTACK TO USE YOUR INFORMATION TO OBTAIN
            BACKGROUND CHECKS AND BUSINESS CREDIT CHECKS FROM OUR VENDORS AND/OR VERIFY YOUR
            IDENTITY THROUGHOUT YOUR USE OF THE SERVICE IN ACCORDANCE WITH APPLICABLE LAWS,
            INCLUDING BUT NOT LIMITED TO THE FAIR CREDIT REPORTING ACT (“FCRA”).
        </p>
        <p>
            THESE TERMS, OUR <a href="https://www.thumbtack.com/privacy/">PRIVACY POLICY</a>, AND
            ALL OTHER DOCUMENTS REFERENCED HEREIN GOVERN THE RELATIONSHIP BETWEEN YOU, THE USER OF
            THE PLATFORM, AND THUMBTACK. YOU HEREBY AGREE THAT THE AGREEMENT FORMED BY THESE TERMS
            IS EQUIVALENT TO ANY WRITTEN, NEGOTIATED AGREEMENT SIGNED BY YOU. PLEASE READ THE TERMS
            THOROUGHLY AND CAREFULLY. BY ACCESSING OR OTHERWISE USING THE PLATFORM, YOU AGREE TO BE
            BOUND BY THESE TERMS. IF YOU DO NOT AGREE TO THESE TERMS, THEN YOU MAY NOT ACCESS OR USE
            THE PLATFORM.
        </p>
        <p>
            All references to "you" or "your," as applicable, mean the person who accesses, uses,
            and/or participates in the Platform in any manner, and each of your heirs, assigns, and
            successors. If you use the Platform on behalf of an entity or other individual, you
            represent and warrant that you have the authority to bind that entity or individual, and
            to perform and otherwise undertake all of your obligations hereunder. Your acceptance of
            the Terms will be deemed an acceptance by that entity, and "you" and "your" herein will
            refer to that entity, its directors, officers, employees, and agents.
        </p>
        <h2 id="modifications">MODIFICATIONS</h2>
        <p>
            Thumbtack reserves the right, in our sole discretion, to modify these Terms, and any
            other documents incorporated by reference herein, at any time and without prior notice.
            Thumbtack will notify you of changes by posting the updated Terms on the Platform and
            may also, in our sole discretion, notify you by sending you a message and/or otherwise
            notifying you when you are logged into your account. Modifications will become effective
            30 days after the earliest of: (a) modifications being posted on the Platform; (b)
            Thumbtack's transmission of a message to you about the modifications (which may be made
            via a notice or communication on the Platform itself); or (c) you are otherwise notified
            when you are logged into your account. Your use of the Platform after the expiration of
            the 30 days will constitute your consent to the changes. If you do not agree, you may
            not access or use the Platform. Be sure to return to the Platform and this webpage
            periodically to ensure you are familiar with the most current version of these Terms.
            YOUR CONTINUED USE OF OR ACCESS TO THE PLATFORM AFTER SUCH EFFECTIVE DATE OF ANY SUCH
            MODIFICATION OR AMENDMENT INDICATES YOU ACCEPT AND AGREE TO BE BOUND BY THE MODIFIED
            TERMS.
        </p>
        <h2 id="additional-terms-and-policies">ADDITIONAL TERMS AND POLICIES</h2>
        <p>
            Please review
            <a href="https://www.thumbtack.com/privacy">Thumbtack's Privacy Policy</a>, incorporated
            herein by reference, for information and notices concerning Thumbtack's collection and
            use of your information. The provision and delivery of text messages by Thumbtack or our
            text message service providers is governed by our
            <a href="https://help.thumbtack.com/article/thumbtack-sms-terms-and-conditions">
            SMS Terms and Conditions</a>, which are expressly incorporated herein. The “Thumbtack Guarantee” is governed by the
            <a href="https://help.thumbtack.com/article/thumbtack-guarantee-terms">
            Thumbtack Guarantee Terms and Conditions</a>, which are expressly incorporated herein. Please review the full set of key
            <a href="https://help.thumbtack.com/article/thumbtack-policies">Thumbtack policies</a>
            that govern your use of the Platform and our interactions with you and third-parties,
            which are expressly incorporated herein. Certain areas of and/or products on the
            Platform may have different terms and conditions posted or may require you to agree with
            and accept additional terms and conditions or policies. If there is a conflict between
            these Terms and the terms and conditions or policies posted for a specific area or
            product, the latter takes precedence with respect to your use of that area or product.
        </p>
        <h2 id="key-terms">KEY TERMS</h2>
        <p>"Collective Content" means User Content and Thumbtack Content together.</p>
        <p>
            "Content" means text, graphics, images, music, software, audio, video, information or
            other materials, including but not limited to profile information, Pro Services
            requests, quotes, message threads, reviews, scheduling and calendar information, and
            other information or materials available on or through the Platform.
        </p>
        <p>
            "Consumer" means a User who is registered to search for Service Professionals on the
            Platform, seeks Pro Services from Service Professionals on the Platform, makes a booking
            with a Service Professional to purchase a Pro Service (or receive a quote in
            contemplation thereof), is registered for or undergoes a home specialist consultation or
            similar service with respect to their home, utilizes a Thumbtack plan to track
            maintenance on a home, is a Thumbtack Plus member, agrees to these Terms, or otherwise
            uses the Platform, including, without limitation, receive, pay for, review, or
            facilitate the receipt of Pro Services. Because a Consumer may be, or may become, a
            customer of a Service Professional, a Consumer is often referred to as a “customer” or a
            “Customer” on the Platform and in marketing materials related to the Platform. Please
            note that, for purposes of these Terms, “Consumer” includes, without limitation, any
            individual or agent you authorize to use your Account on your behalf.
        </p>
        <p>
            "Fee" means any amount charged by Thumbtack to a User in connection with the Platform.
        </p>
        <p>
            “Feedback” means any feedback, comments, questions, or suggestions provided by a User
            concerning Thumbtack or our services, including our Platform.
        </p>
        <p>
            "Platform" means all Thumbtack websites, mobile or other applications, software,
            processes, video consultations, subscription services, and any other services provided
            by or through Thumbtack.
        </p>
        <p>
            “Privacy Policy” means the Thumbtack Privacy Policy located at
            <a href="https://www.thumbtack.com/privacy/">https://www.thumbtack.com/privacy/</a>,
            including any amendments, supplements or modifications thereto made from time to time.
        </p>
        <p>
            "Pro Services" means the services listed, quoted, scheduled, offered, fulfilled or
            provided by Service Professionals, or sought, scheduled, paid for, or received by
            Consumers, through the Platform.
        </p>
        <p>
            "Service Professional" means a User who uses, or is registered to use, the Platform to
            offer, provide, receive payment for, or facilitate the provision of Pro Services.
            Service Professionals are often referred to as “pros” on the Platform.
        </p>
        <p>
            "Thumbtack Content" means all Content Thumbtack makes available on or through the
            Platform, including any Content licensed from a third-party, but excluding User Content.
        </p>
        <p>
            "User" means a person or entity who completes Thumbtack's account registration process,
            agrees to these Terms, utilizes any services offered by or through the Platform, or a
            person or entity who submits or receives a request through Thumbtack, including but not
            limited to Service Professionals and Consumers.
        </p>
        <p>
            "User Content" means all Content submitted, posted, uploaded, published, or transmitted
            on or through the Platform by any User or other user of the Platform, including but not
            limited to photographs, voice or audio recordings, videos, profile information,
            descriptions, postings, reviews, requests, messages, and payments made through the
            Platform, but excluding Thumbtack Content and
            <a href="https://www.thumbtack.com/terms/#feedback">Feedback</a>.
        </p>
        <h2 id="eligibility-service-professional-representations-warranties-and-use-of-the-platform">
            CHANGES, ELIGIBILITY, SERVICE PROFESSIONAL REPRESENTATIONS, WARRANTIES, AND USE OF THE
            PLATFORM
        </h2>
        <p>
            Thumbtack reserves the right at any time and with or without notice to you, to change
            (i) the Platform, including, without limitation, eliminating, supplementing, modifying,
            adding, or discontinuing any content, feature, data, or service on or available through
            the Platform, or the hours during which they are available; and (ii) the prices and Fees
            (if any) for access to or use of the Platform or any component thereof. We will not be
            liable to you or any third-party for any modification, price change, suspension, or
            discontinuance of the Platform, or any component or services on the Platform. We reserve
            the right to limit the availability of the Platform, Content, or Pro Services offered
            thereon to any person, geographic area, or jurisdiction we so desire, at any time and in
            our sole discretion.
        </p>
        <p>
            Access to and use of the Platform is available only to individuals who are at least 18
            years old and can form legally binding contracts under applicable law. By accessing or
            using the Platform, you represent and warrant that you meet these requirements.
            Thumbtack, at all times, strives to maintain compliance with all laws applicable to its
            performance under these Terms and its provision of the Platform. Thumbtack also uses its
            best efforts to stay up to date on updates to those applicable laws.
        </p>
        <p>
            By registering or using the Platform to offer, post, or provide Pro Services, Service
            Professionals represent and warrant that they, and the employees, agents, suppliers
            contractors, and subcontractors who may perform work for them, (i) are properly and
            fully qualified and experienced, and licensed, certified, bonded, and insured, as
            required by applicable laws or regulations to which they may be subject in the
            jurisdiction(s) in which they offer their Pro Services and in relation to the specific
            job they are performing; (ii) comply and will continue to comply with all applicable
            laws, including, without limitation, applicable privacy and marketing laws, in their use
            of the Platform and any personal information obtained from the Platform; (iii) will
            perform the Pro Service as outlined in their agreement with the Consumer and work to
            remedy any material deviations from such contract; and (iv) will perform the Pro
            Services in a professional, workmanlike manner in accordance with industry standards and
            in accordance with these Terms.
        </p>
        <p>
            Thumbtack does not sell or otherwise provide Pro Services. Thumbtack may directly
            provide home project consultations and related on-Platform services to Consumers, but
            any Pro Services solicited as a result of any such consultations or on-Platform services
            are provided by an independent Service Professional without any representation,
            warranty, guarantee, or endorsement from Thumbtack other than as expressly provided for
            herein. Thumbtack also facilitates Pro Service transactions, which facilitation may
            include displaying a list of Service Professionals profiles, allowing Consumers and
            Service Professionals to send messages to each other, allowing for the booking of an
            appointment for the provision of Pro Services, assisting in the selection of a Service
            Professional for certain Consumers, and processing payment for certain Pro Services.
            Consumers understand that any such facilitation does not constitute a warranty,
            guarantee, or endorsement in relation to the Pro Services. Without limiting the
            foregoing, we make no representation—and you acknowledge that we make no
            representation—that the Platform, or Pro Services available through the Platform, are
            appropriate or available for use in all locations. Those who choose to access the
            Platform and Pro Services therein do so of their own initiative and at their own risk
            and are responsible for compliance with applicable federal, state and other local laws.
            Service Professionals understand and agree that using the Platform does not guarantee
            that anyone will engage them for Pro Services. Consumers understand that any Pro
            Services they solicit and/or pay for using the Platform are solicited directly from the
            Service Professional providing such Pro Services.
        </p>
        <p>
            Service Professionals understand and agree that they are customers of Thumbtack, and are
            not Thumbtack employees, contractors, consultants, joint venturers, partners, or agents.
            Service Professionals acknowledge that they provide their own equipment, select their
            own jobs, develop their own expertise, are free to do jobs through other platforms and
            lead sources, and determine their own work schedule. Thumbtack does not control, and has
            no right to control, the services a Service Professional provides (including the details
            of how the Service Professional provides such services) if the Service Professional is
            engaged by a Consumer or any other person, except as specifically noted herein or on the
            Platform.
        </p>
        <p>
            Thumbtack, as permitted by applicable laws, obtains reports regarding Service
            Professionals, which may include history of criminal convictions or sex offender
            registration, and we may limit, block, suspend, deactivate, or cancel a Service
            Professional's account based on the results of such a report, with or without notice. As
            a Service Professional, you agree and authorize us to use your personal information,
            such as your full name and date of birth, to obtain such reports from Thumbtack's
            vendors. Please see our
            <a href="https://www.thumbtack.com/privacy/">Privacy Policy</a> for more information.
            Service Professionals agree to inform Thumbtack of any material criminal convictions
            that occur after any such reports are run.
        </p>
        <h2 id="account-registration-and-other-submissions">
            ACCOUNT REGISTRATION AND OTHER SUBMISSIONS
        </h2>
        <p>
            <em>Contact Information</em>: If you have any questions about these Terms or the
            Platform, please contact us by sending an email to
            <a href="mailto:support@thumbtack.com">support@thumbtack.com</a>.
        </p>
    </div>
</div>}
                primaryCta={
                    <Button
                        onClick={() => {
                            console.log('Primary button clicked');
                            setIsOpen(false);
                        }}
                    >
                        Accept
                    </Button>
                }
                secondaryCta={
                    <Button
                        theme="secondary"
                        onClick={() => {
                            console.log('Secondary button clicked');
                            setIsOpen(false);
                        }}
                    >
                        Back
                    </Button>
                }
                tertiaryCta={
                    <Button
                        theme="tertiary"
                        onClick={() => {
                            console.log('Secondary button clicked');
                            setIsOpen(false);
                        }}
                    >
                        Restart
                    </Button>
                }
                disclaimer='By clicking "Accept", you agree to our terms and conditions.'
            />
        </React.Fragment>
    );
}

Promo Modal

A modal that includes a promotionImageUrl is considered a promo modal. This modal type forgoes the use of the illustrationUrl, and uses the promo image as background for the top of the modal.

function PromoModal() {
    const [isOpen, setIsOpen] = React.useState(false);
    const [licenseText, setLicenseText] = React.useState('');

    return (
        <React.Fragment>
            <Button
                onClick={() => {
                    setIsOpen(true);
                }}
            >
                Check it out
            </Button>
            <ModalV2
                promotionImageUrl='http://placehold.co/600x300/orange/white?text=Promotion'
                isOpen={isOpen}
                onCloseClick={() => {
                    setIsOpen(false);
                }}
                onCloseFinish={() => {
                    console.log('Modal onCloseFinish');
                    setIsOpen(false);
                }}
                onOpenFinish={() => {
                    console.log('Modal onOpenFinish');
                }}
                title='10% off on your first 3 leads!'
                description='Purchase today to take advantage of this offer.'
                primaryCta={
                    <Button
                        onClick={() => {
                            console.log('Primary button clicked');
                            setIsOpen(false);
                        }}
                    >
                        Accept
                    </Button>
                }
                secondaryCta={
                    <Button
                        theme="secondary"
                        onClick={() => {
                            console.log('Secondary button clicked');
                            setIsOpen(false);
                        }}
                    >
                        Cancel
                    </Button>
                }
            />
        </React.Fragment>
    );
}

Confirmation Modal

The Confirmation Modal is a basic modal that disallows illustration, promo image, and content. It is intended as a simple modal with a title, description and two buttons. It's size is expected to be "small".

function ConfirmationModal() {
    const [isOpen, setIsOpen] = React.useState(false);
    const [licenseText, setLicenseText] = React.useState('');

    return (
        <React.Fragment>
            <Button
                onClick={() => {
                    setIsOpen(true);
                }}
            >
                Confirm Save
            </Button>
            <ModalV2
                isOpen={isOpen}
                onCloseClick={() => {
                    setIsOpen(false);
                }}
                onCloseFinish={() => {
                    console.log('Modal onCloseFinish');
                    setIsOpen(false);
                }}
                onOpenFinish={() => {
                    console.log('Modal onOpenFinish');
                }}
                title='Are you sure you want to save your credit card?'
                description='By storing your credit card, you can make purchases faster and easier.'
                primaryCta={
                    <Button
                        onClick={() => {
                            console.log('Primary button clicked');
                            setIsOpen(false);
                        }}
                    >
                        Accept
                    </Button>
                }
                secondaryCta={
                    <Button
                        theme="secondary"
                        onClick={() => {
                            console.log('Secondary button clicked');
                            setIsOpen(false);
                        }}
                    >
                        Cancel
                    </Button>
                }
            />
        </React.Fragment>
    );
}

Props

ModalV2

  • onCloseClick
    required

    (required: to cause modal to close via outside click/escape press) Function that closes the modal and acts at the same time.

    Type
    () => void
  • promotionImageUrl

    promotion Image URL that appears in the Modal > Header section (for Promotion only). This differentiates the Promotion modal from the Default modal as the Promotion modal has a background image in the header that will take up 100% width with a 2:1 aspect ratio. The image should be 624px width and 312px height for desktop and 390px x 195px for mobile.

    Type
    string
  • illustrationUrl

    illustration URL that appears in the Modal > Header section (for Default only). For Default this will be the image that appears in the top left corner of the modal.

    Type
    string | React.ReactNode
  • pillText

    PillText is an optional small hashtag of text/content in the Modal > Header section.

    Type
    string
  • pillIcon

    PillIcon is an optional icon for the left side of the Modal > Header > pill section.

    Type
    React.ReactNode
  • pillColor

    PillIcon is an optional icon for the left side of the Modal > Header > pill section.

    Type
    PillProps['color']
  • title

    Title: large text that appears in the Modal > Header section. This should be used in all modals.

    Type
    string | React.ReactNode
  • description

    Description: subtitle text that appears in the Modal > Header section. This can be used in all modals.

    Type
    string | React.ReactNode
  • content

    Content that appears in the Modal > Main > Content section (for Promotion / Default only). This should not be included in Confirmation modals.

    Type
    React.ReactNode
  • primaryCta

    primary CTA (ex. Next button) that appears in the Modal > Footer > Action Bar. This should be used in all modal types (guidance: use primary or caution themed button).

    Type
    React.ReactNode
  • secondaryCta

    secondary CTA (ex. Cancel button) that appears in the Modal > Footer > Action Bar. This should be used in all modal types (guidance: use secondary or caution themed button).

    Type
    React.ReactNode
  • tertiaryCta

    tertiary CTA (ex. Cancel button) that appears in the Modal > Footer > Action Bar. This may be used in all modal types (guidance: use tertiary themed button).

    Type
    React.ReactNode
  • disclaimer

    disclaimer text that appears in the Modal > Footer > Disclaimer section. It may be used in all modal types.

    Type
    string | React.ReactNode
  • onOpenFinish

    Function that fires once the modal has opened and transitions have ended.

    Type
    () => void
  • onCloseFinish

    Function that fires after the modal has closed (after onCloseClick).

    Type
    () => void
  • shouldHideCloseButton

    Determines if the close button should be rendered. This is generally discouraged and should be used carefully. If used, the contents passed into the modal must contain a focusable element such as a link or button.

    Type
    boolean
    Default
    false
  • shouldCloseOnCurtainClick

    Determines if the modal should close when clicking outside of the modal, in the background area.

    Type
    boolean
    Default
    true
  • isOpen

    Should the modal appear open.

    Type
    boolean
    Default
    false
  • width

    Sets the max-width of the modal container (for screens wider than mobile / small). For mobile 100% width is always used. For screens larger than mobile the following sizes are available: small: 512px (default size for Confirmation modals). default: 624px (only expected size for Promotion modals). medium: 740px large: 1025px

    Type
    'small' | 'default' | 'medium' | 'large'