Put your client intake portal and appointment booking directly on your own site. Clients submit documents and book time without ever leaving your website.
One script tag installs your FinishTax intake portal on any website — as a floating button, an inline form, or a shareable link — plus a drop-in scheduling embed for appointment booking. Every submission lands in your FinishTax dashboard exactly like a portal submission.
A floating button or inline form on your site. Clients drop documents via Quick Drop or complete a Full Intake — fully brandable.
A popup or inline booking form that writes appointments straight to your FinishTax calendar.
Your own yourfirm.finish.tax client portal with your logo and colors — share it as a link or QR code, no code on your site at all.
A button in the corner of your site that opens your intake portal in a full-screen modal. Paste one script tag just before </body> (or in your platform's footer-code slot):
<script src="https://www.finish.tax/embed.js" data-embed-id="emb_XXXXXXXX"></script>Replace emb_XXXXXXXX with your embed ID from the install-code modal — the snippet you copy from the app already has it filled in.
The portal embedded directly inside your page content. Paste both the container and the script tag where you want the form to appear:
<div id="pp-inline-portal" data-embed-id="emb_XXXXXXXX"></div>
<script src="https://www.finish.tax/embed.js" data-embed-id="emb_XXXXXXXX"></script>The form sizes itself automatically. If your page constrains it, give the container a minimum height:
<div id="pp-inline-portal" data-embed-id="emb_XXXXXXXX" style="min-height: 800px;"></div>A direct URL or scannable QR code that opens your intake portal — no code on your site at all. Use it in email signatures, social posts, or printed mailers:
https://www.finish.tax/portal/?p=YOUR-PORTAL-CODE&ref=emb_XXXXXXXXThe app generates the exact link and a downloadable QR code for you, and the ref parameter keeps your analytics attributed to this embed.
Take bookings on your own site with a single script tag. By default it renders a "Book an Appointment" button that opens your booking page in a popup; switch to inline mode to embed the booking form directly in the page.
Booking button (popup)
<script src="https://www.finish.tax/schedule-embed.js"
data-slug="your-booking-page"
data-text="Book an appointment"
data-color="#0c5c3c"
async defer></script>data-color is optional — omit it to keep the adaptive glass style that matches light and dark sites automatically.
Inline booking form
<div id="ft-schedule"></div>
<script src="https://www.finish.tax/schedule-embed.js"
data-slug="your-booking-page"
data-mode="inline"
data-target="#ft-schedule"
async defer></script>| Attribute | Values | What it does |
|---|---|---|
data-slug | your booking-page slug | Required. Identifies your booking page — copy it from the Scheduling section of the app. |
data-mode | button (default) · inline | button shows a button that opens a popup; inline embeds the booking form in the page. |
data-color | any hex color | Solid brand color for the button. Omit it for the adaptive glass style that matches light and dark sites automatically. |
data-text | any label | Button label. Default: "Book an Appointment". |
data-target | a CSS selector | Where to render the button or form (e.g. #ft-schedule). Omit it to render right where the script tag sits. |
The inline form auto-resizes to fit its content — no scrollbars, no fixed heights to maintain.
Every intake-embed option is configured in the FinishTax app — edit your embed and the change goes live everywhere it's installed, with no snippet update. The embed editor shows a live preview as you adjust:
| Option | Choices | Notes |
|---|---|---|
| Button text | any label | Default: "Submit Documents". |
| Position | bottom-right · bottom-left · bottom-center | Where the floating button sits. |
| Size | small · medium · large | Button height, padding, and font scale together. |
| Appearance | glass · solid | Glass is the frosted translucent default; solid uses your button color and text color. |
| Corners | pill · rounded · square | Button corner radius. |
| Icon | upload · document · briefcase · none | The small icon on the button, before the label. Choose none for a text-only button. |
| Edge offsets | X and Y, 0–120 px | Nudge the button away from cookie banners or chat widgets. |
| Intake mode | Inherit portal setting · both · Quick Drop only · Full Intake only | Limit which intake path clients see when the portal opens. Inherit (the default) follows your portal-wide setting. |
| Firm name | any name | Shown in the modal header. |
| Header color | inherit · any hex color | By default (“Use portal branding color” checked) the header inside the embed uses your portal branding color. Pick a color to override that branding for this embed only. |
| Hide "Powered by FinishTax" | on / off | Available on the Firm plan and up. |
| Domain restrictions | list of domains | The embed only runs on sites you allow; subdomains are included automatically. Leave blank to allow all. |
Branding colors and your firm logo come from Portal Settings → Branding (PNG, JPG, SVG, or WebP, max 2 MB).
<div> and the <script>) and publish<div> and <script> tags and save<div> and <script> tags and publishClaim your own yourfirm.finish.tax portal address in Portal Settings and share it anywhere — it carries your logo and colors, with nothing to install on your site.
Serve your portal and embeds from your own domain:
intake.yourfirm.com)intake.yourfirm.com CNAME finish.taxEvery embed tracks its own funnel, so you can see which pages actually convert:
View analytics by clicking the chart icon on any embed, or click "View Analytics" in the install-code modal.
<body>, ideally just before </body>Embeds are available on every plan; hiding FinishTax branding unlocks on the Firm plan and custom domains on the Agency plan. See pricing for the full plan breakdown, or browse all integrations.
Start free, create your first embed, and paste one script tag. No credit card required to begin.