IntoMetrics Booking & CRM Light

Description

IM Form is a complete booking and client management solution for WordPress — purpose-built for service businesses such as clinics, salons, studios, law firms, photography businesses, and consultancies.

Create polished multi-step booking forms, manage your leads in a built-in CRM, view appointments on a visual calendar, track revenue and conversion rates, and automate email/Slack notifications — all from your WordPress dashboard with no coding required.

Core Features

  • Drag-and-drop Form Builder — Build multi-step booking forms with service selection, staff picker (card/list/dropdown styles), add-ons, date/time, and custom fields
  • Leads CRM — Full client record with lead scoring (Hot/Warm/Cold), status pipeline, payment tracking, and invoice generation
  • Staff & Availability Management — Per-staff working hours, day-off management, and automatic time-slot filtering based on who the client selects
  • Visual Calendar — Monthly calendar view of all appointments with click-to-view booking details
  • Analytics Dashboard — Charts for leads, bookings, and revenue; paid/unpaid breakdown; conversion rate tracking
  • Shareable Booking Pages — Generate a public booking URL for any form — no WordPress page required
  • Email Confirmations — Automatic HTML booking confirmation email sent to each client immediately after booking
  • Pro: Integrations — Google Sheets, Google Calendar, Slack, Zapier, HubSpot, and custom webhooks
  • Pro: Automations — Visual workflow builder for timed email sequences, Slack alerts, CRM updates, and more
  • Pro: Payment Support — Accept payments via Wise/Bank Transfer (with manual confirmation), PayMongo, and Stripe
  • Tracking — Google Analytics and Facebook Pixel event firing on form submission

Display Styles for Staff
Choose between Dropdown, Card Grid (photo + name + title), or List (photo + name + title rows) — all configurable per form in the form builder.

Add-ons
Attach optional add-ons to your services (e.g. “with props +$10”, “home service +$159”). Add-ons can be restricted to specific services so customers only see relevant options.

Invoice PDF
Every lead in the CRM has a printable invoice page — open it and click “Print / Save PDF” to generate a clean PDF invoice with your business branding, client details, line items, and payment status.

Third Party Libraries

This plugin includes the following bundled third-party libraries:

jsPDF

Used for generating PDF invoices.
Version: 4.2.1
License: MIT
Source: https://github.com/parallax/jsPDF

Chart.js

Used for rendering analytics charts (leads, revenue, bookings) in the admin dashboard.
Version: 4.5.1
License: MIT
Source: https://www.chartjs.org / https://github.com/chartjs/Chart.js

IM PDF (custom)

A lightweight, self-contained pure-PHP PDF generator used for invoice generation.
No external dependencies. Built-in fonts only (Helvetica/PDF standard).
License: GPL-2.0-or-later (included with this plugin)

External Services

This plugin connects to the following third-party services. Data is only transmitted when the corresponding feature is explicitly enabled by the site administrator.

IntoMetrics License Server

Used for license key activation and deactivation, and automation workflow delivery (when automation features are configured by the site admin).
What is sent: license key, site domain, plugin version, WordPress version, and PHP version (on activation/deactivation only). Automation workflow definitions are fetched from the server (no personal/client data is sent to IntoMetrics). When automations run, only the run status is logged back to the server.
When: on license activation or deactivation; when automation workflows are triggered by a booking (if configured by site admin).
Service: https://intometrics.com
Privacy policy: https://intometrics.com/privacy-policy/
Terms of use: https://intometrics.com/terms/

Google Analytics

Used to fire pageview and booking conversion events on your public booking pages.
What is sent: standard GA4 measurement data (page URL, event name) to Google’s servers.
When: only if a GA4 Measurement ID is entered in IM Form Tracking.
Service: https://marketingplatform.google.com/about/analytics/
Privacy policy: https://policies.google.com/privacy
Terms of use: https://marketingplatform.google.com/about/analytics/terms/us/

Facebook Pixel

Used to fire PageView and Lead events on your public booking pages.
What is sent: standard Pixel event data to Facebook’s servers.
When: only if a Facebook Pixel ID is entered in IM Form Tracking.
Service: https://www.facebook.com/business/tools/meta-pixel
Privacy policy: https://www.facebook.com/privacy/policy/
Terms of use: https://www.facebook.com/legal/terms/

Open Exchange Rates (open.er-api.com)

Used for currency conversion when PayMongo is enabled (PayMongo requires PHP — Philippine Peso).
What is sent: the source currency code only (e.g. “USD”). No personal data is transmitted.
When: only when a customer submits a booking form with PayMongo as the payment gateway and the site currency is not PHP.
Service: https://www.exchangerate-api.com/
Privacy policy: https://www.exchangerate-api.com/privacy
Terms of use: https://www.exchangerate-api.com/terms

PayMongo

Used to create payment checkout sessions for accepting card payments.
What is sent: booking amount, currency, customer name and email (if provided), and success/cancel redirect URLs.
When: only when a customer submits a booking form with PayMongo configured as the payment gateway.
Service: https://www.paymongo.com/
Privacy policy: https://www.paymongo.com/privacy
Terms of use: https://www.paymongo.com/terms

Stripe

Used to create payment checkout sessions for accepting card payments.
What is sent: booking amount, currency, customer email (if provided), and success/cancel redirect URLs.
When: only when a customer submits a booking form with Stripe configured as the payment gateway.
Service: https://stripe.com/
Privacy policy: https://stripe.com/privacy
Terms of use: https://stripe.com/legal/end-users

Google Sheets

Used to append booking data to a connected Google Sheet.
What is sent: customer name, email, phone, service, date, time, staff, add-ons, and total amount.
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.
Service: https://workspace.google.com/products/sheets/
Privacy policy: https://policies.google.com/privacy
Terms of use: https://workspace.google.com/terms/service-terms/index.html

Google Calendar

Used to create calendar events for new appointments.
What is sent: appointment details (title, date/time, description with client name and service).
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.
Service: https://calendar.google.com/
Privacy policy: https://policies.google.com/privacy
Terms of use: https://workspace.google.com/terms/service-terms/index.html

Slack

Used to send booking notification messages to a Slack channel.
What is sent: customer name, email, phone, service, date, time, and form name.
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.
Service: https://slack.com/
Privacy policy: https://slack.com/intl/en-us/trust/privacy/privacy-policy
Terms of use: https://slack.com/terms-of-service

Zapier

Used to trigger Zaps on booking submission.
What is sent: full booking payload (name, email, phone, service, date, time, staff, add-ons, total).
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.
Service: https://zapier.com/
Privacy policy: https://zapier.com/privacy
Terms of use: https://zapier.com/terms

HubSpot

Used to create or update contacts and deals in HubSpot CRM.
What is sent: customer name, email, phone, and booking amount.
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.
Service: https://www.hubspot.com/
Privacy policy: https://legal.hubspot.com/privacy-policy
Terms of use: https://legal.hubspot.com/terms-of-service

Trello

Used to create Trello cards for new bookings.
What is sent: customer name, email, phone, service, date, time, and add-ons.
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.
Service: https://trello.com/
Privacy policy: https://www.atlassian.com/legal/privacy-policy
Terms of use: https://www.atlassian.com/legal/cloud-terms-of-service

Mailchimp

Used to subscribe booking customers to a Mailchimp audience.
What is sent: customer email address, first name, and last name.
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.
Service: https://mailchimp.com/
Privacy policy: https://mailchimp.com/legal/privacy/
Terms of use: https://mailchimp.com/legal/terms/

Custom Webhooks

Used to POST booking data to any URL you configure.
What is sent: full booking payload to the URL you specify — contents are under your control.
When: only when this integration is enabled in IM Form Integrations and a booking is submitted.

Privacy

IM Form stores booking data (client name, email, phone, service, appointment date/time) in the local WordPress database only. This data is never automatically shared with IntoMetrics or any third party.

Data is only transmitted to external services (Google Sheets, Slack, etc.) when the site administrator explicitly enables and configures those integrations.

Site administrators are responsible for their own compliance with applicable privacy laws (GDPR, Philippine Data Privacy Act, etc.) when using this plugin to collect client data.

The “Powered by IntoMetrics” attribution shown on Basic plan booking forms can be removed by upgrading to the Pro plan.

Screenshots

Installation

  1. Upload the im-form folder to /wp-content/plugins/
  2. Activate the plugin through Plugins in your WordPress dashboard
  3. Go to IM Form License and enter your license key from intometrics.com
  4. Go to IM Form Services and add your services, staff, and add-ons
  5. Go to IM Form Availability and set your working hours
  6. Go to IM Form Forms, create a form, and copy the shortcode
  7. Paste the shortcode on any WordPress page, or share the public booking URL directly

After activation, go to Settings Permalinks and click Save Changes to flush rewrite rules so shareable form URLs work correctly.

FAQ

Do I need a license key?

A license key is required to use IM Form. Get yours at intometrics.com/im-pricing/. Both Basic and Pro plans include a full set of core features; Pro adds integrations, automations, and payment support.

Can I use the form on multiple pages?

Yes. Use [imform_booking] on as many pages as you need. Each form you build has its own unique shortcode and shareable URL.

Does it work with any WordPress theme?

Yes. The booking form is fully self-contained with its own styles and does not depend on theme CSS. The shareable public form pages bypass the theme entirely for a clean experience.

How do I accept payments?

Configure Wise/Bank Transfer in IM Form License Server Settings for manual bank transfers, or connect PayMongo/Stripe. When a customer pays, update the lead payment status in the CRM — the amount is preserved and reflected in the Analytics revenue chart.

How do staff time slots work?

When a client selects a staff member on the form, the calendar automatically filters available time slots based on that staff member’s configured working hours and existing bookings — preventing double-booking.

Is my clients’ data safe?

All booking data is stored locally in your WordPress database. IM Form does not send client data to any external server unless you explicitly configure an integration (Google Sheets, Slack, etc.).

How do I generate an invoice?

In IM Form Leads CRM, click any client name to open the preview panel, then click 🧾 Invoice PDF. The invoice opens in a new tab — click “Print / Save PDF” to save it.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“IntoMetrics Booking & CRM Light” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.43

  • Moved assets/im-logo.png to a root-level img/ folder; the assets folder has been removed since it no longer held any content

1.0.42

  • Fixed “Don’t show again” on the SMTP setup notice leading to a blank page — the dismiss link’s admin-post action name (imformlight_dismiss_smtp_notice) didn’t match the registered handler (im_dismiss_smtp_notice), a leftover from the prefix rename, so the request had nothing to fire and the notice never actually dismissed
  • Restructured asset folders: assets/css and assets/js moved to root-level css/ and js/; assets/img/im-logo.png moved directly into assets/

1.0.41

  • Removed the logo/icon from the “IM Form” item in the WP admin toolbar — now shows text only

1.0.40

  • Added the same “IM Form Light / Upgrade to Pro” banner from the Docs page to the Dashboard page
  • Other plugins’ and themes’ admin notices (SMTP nags, theme companion-plugin prompts, etc.) are now suppressed while viewing any of our own plugin pages, so the dashboard stays focused — our own license-change notice still shows when relevant

1.0.39

  • Fixed “IM Form IM Form” duplicated text in the WP admin toolbar (logo icon’s alt text was rendering as visible fallback text next to the adjacent label — alt text is now empty since the icon is decorative)
  • Fixed the custom menu icon CSS selector left pointing at the pre-rename “im-dashboard” DOM ID after the prefix rename, which had silently broken the sidebar icon
  • Removed “Free” from the Docs page upgrade banner (“You are using IM Form Free (Light)” “You are using IM Form Light”)

1.0.38

  • WP.org compliance: renamed every short “im_”/”im-” prefixed function, option, AJAX action, nonce, menu slug, script/style handle, and JS global to the “imformlight_”/”imformlight-” prefix (previous prefix was under the required 4-character minimum)
  • WP.org compliance: removed “Free” from the plugin name (plugins on WordPress.org are inherently free)
  • WP.org compliance: public booking-availability endpoint no longer returns raw payment/booking-status strings — only a minimal “paid” boolean needed by the calendar UI
  • WP.org compliance: that same endpoint’s nonce check is now actually enforced (was passing a soft-fail flag that let it through even when missing/invalid)
  • WP.org compliance: added capability checks to admin-only AJAX endpoints that previously relied on the nonce alone (leads list, CSV export, calendar data, form entries)
  • WP.org compliance: added missing phpcs:ignore justifications for the few remaining standalone-page inline tags
  • Added a one-time migration so existing installs keep their settings when upgrading from the old “im_” option names to the new “imformlight_” names

1.0.37

  • WP.org compliance: removed remote kill switch, remote automation fetch, and unauthenticated AJAX endpoint
  • WP.org compliance: all features now work without a license key (license page is optional account linking)
  • WP.org compliance: fixed phpcs:ignore placement for script/style tags (must be on same line as violation)
  • WP.org compliance: added wp_unslash() to REQUEST_URI usage in license.php
  • WP.org compliance: added reasons to all phpcs:ignore comments
  • WP.org compliance: replaced extract() with explicit variable assignments in public-form-page.php
  • WP.org compliance: added phpcs:ignore reasons to all direct database queries
  • Added built-in admin notification email on new booking (replaces removed automation system)
  • Added uninstall.php for clean plugin removal
  • Added load_plugin_textdomain() for i18n support
  • Added Domain Path, Requires at least, and Tested up to to plugin header
  • Documented Chart.js and IM PDF in Third Party Libraries section of readme.txt
  • Fixed jsPDF library documentation (v4.2.1)
  • Removed dead fpdf.php placeholder file
  • Fixed “Tested up to” version (was incorrectly 7.0, corrected to 6.7)
  • Multiple embedded form layout fixes (sidebar stacking, container queries, calendar popup)
  • Time slot staggered animation on date selection
  • Collapsible sidebar button moved to bottom

1.0.37

  • Fixed admin layout broken by overflow:hidden leaking from form-builder CSS into admin.css
  • Fixed plugin icon rendering as oversized image in WP sidebar (now uses CSS background-image)
  • Fixed header white gap — header now correctly positioned inside .wrap container
  • Replaced plugin logo with custom branded icon
  • Removed remote brand sync that was overwriting the plugin logo
  • Bumped version to force cache-bust of all enqueued CSS/JS assets

1.0.30

  • Removed all remaining custom CSS/JS/PHP injection features completely
  • Extracted standalone preview page CSS to im-preview.css (static), minimal dynamic-only inline style remains
  • Removed all custom_css (im_form_custom_css) references from plugin code
  • All admin view inline styles migrated to admin.css via wp_add_inline_style
  • All admin view inline scripts migrated via wp_add_inline_script / ob_start pattern
  • All client-side booking form styles migrated via wp_add_inline_style
  • All client-side booking form scripts migrated via wp_add_inline_script
  • Updated jsPDF from 4.2.1 to 4.2.1
  • Added complete External Services section to readme.txt

1.0.29

  • Removed arbitrary custom head/footer code injection fields (WP.org guideline compliance) — use a dedicated tag manager plugin instead
  • Updated bundled jsPDF library from 4.2.1 to 4.2.1
  • Added External Services documentation to readme.txt disclosing all third-party API connections
  • Moved all admin page inline blocks to the enqueued admin.css stylesheet
  • Converted all admin page inline blocks to use wp_add_inline_script()
  • Cleaned up legacy im_custom_head_code and im_custom_footer_code options on upgrade

1.6.21

  • Amount confirmed on booking now shown in Leads CRM payment column
  • Currency pulled from site settings (no more hardcoded symbols)
  • Revenue totals preserved on lead edit — updating payment status no longer zeros the amount
  • Analytics: Revenue & Paid Bookings chart (last 30 days)
  • Invoice PDF page for every CRM lead

1.5.4

  • Booking confirmation email sent to customer after every successful booking
  • Lead edit modal now pre-populates all fields including payment status and gateway
  • Fixed payment status not saving on lead edit
  • Total amount field added to lead edit modal

1.5.3

  • Google Analytics enqueue compliance fix (WordPress Plugin Check)

1.5.2

  • Integrations and Automations promo pages added to admin menu
  • Pricing page link corrected

1.5.1

  • Fixed fatal error: missing class closing brace in booking form (caused by sync_to_gcal removal)
  • Fixed Segoe UI apostrophe parse error in email template

1.5.0

  • Fixed plugin activation fatal (orphan closing brace)

1.4.9

  • Removed duplicate JS function in license page

1.4.8

  • Fixed unescaped apostrophe in booking confirmation email causing PHP fatal

1.4.7

  • Integrations and Automations admin tabs (upgrade promo pages)

1.4.6

  • Removed dead code: intercept_public_form_request, add_form_query_var, sync_to_gcal
  • Removed debug comment exposing PayMongo internals

1.4.5

  • Booking confirmation email to customer after successful booking

1.4.4

  • Fixed form builder field properties panel freezing on second field click
  • Added booking summary email on successful booking

1.4.3

  • Fixed field properties panel auto-populating on field switch in form builder

1.4.2

  • WordPress Plugin Check compliance: escaped outputs, wp_unslash, nonce comments
  • Google Analytics loaded via wp_enqueue_script/wp_add_inline_script

1.4.1

  • Share page bottom padding fix (moved trust badges and footer outside body div)

1.4.0

  • Fixed bottom padding on share page

1.3.9

  • Share page trust badge and footer spacing

1.3.8

  • Add-on card redesign: icon top-left, checkbox top-right, price bottom-right

1.3.7

  • Staff photos enlarged: 96px cards, 72px list, 44px dropdown

1.3.6

  • Homepage button on booking confirmation links to installed site domain
  • HOME_URL JS variable from WordPress home_url()

1.3.5

  • Share page form centering fixed
  • Tabs (imfv3-tabs) increased in size

1.3.4

  • Share page sticky header and form centering
  • filterAddons null error fix

1.3.3

  • Fixed orphan brace causing PHP fatal (cascaded from addon block restructuring)

1.3.2

  • Replaced color-mix() CSS with safe equivalents for server compatibility

1.3.1

  • Share page redesigned: sticky header bar, clean card layout, proper CSS/JS loading
  • Staff and addon card borders: transparent by default, visible only on hover/selected

1.3.0

  • Staff and add-on fields now collapsed behind a trigger (“Select a staff member…”)
  • imfv3ToggleAsnPanel_ and imfv3ToggleAddonPanel_ functions added

1.2.9

  • Share page 500 error fixed (removed ob_start/ob_get_clean complexity)
  • Add-on card grid trigger added

1.2.8

  • Share page variable name fix ($business_name vs $biz_name)

1.2.7

  • Share page double ob_start conflict fixed

1.2.6

  • Fixed critical error from staff/addon PHP block restructuring (services.php $services $svcs)

1.2.5

  • Staff and addon filtering by selected service
  • Addon services assignment in admin (Show only for Services)
  • Display style not reflecting fixed (display_style added to field save whitelist)

1.2.4

  • Fixed display_style being stripped on form save (missing from field save whitelist)

1.2.3

  • Staff display style option in form builder (Dropdown / Cards / List)
  • Larger staff photo sizes across all display modes

1.2.2

  • Plugin URI and Author URI must be different (WordPress Plugin Check)

1.2.1

  • External services disclosure in readme
  • “Powered by IntoMetrics” on landing page gated behind non-Pro check

1.2.0

  • Sale pricing: per-plan enable toggle, % or fixed discount
  • Sale price shown on checkout and license page with strikethrough

1.1.9

  • phpcs:ignore inline on the same line as $data = (server-to-server AJAX)

1.1.8

  • WordPress Plugin Check compliance fixes: absint(), esc_html(), wp_unslash()

1.1.0

  • Staff display style option in form builder
  • Add-on card grid display
  • Public share page redesign

1.0.28

  • Initial release