Release Notes
What's new in ClientLoop, newest first.
July 16, 2026
- Look up a payment session through the public API — the
paymentSessionquery is now available on the public API, scoped to your own organization. Agency keys can read sessions for every organization under the agency. - Webhook delivery documented — the webhook events documentation now states that events are delivered as an HTTP
POSTwith aContent-Type: application/jsonheader.
July 15, 2026
- Card payments now appear alongside bank payments — completed card captures now create payment records, so card and bank activity show up together in one place. Duplicate notifications from the card processor collapse into a single payment.
- Organization members can see their API credentials, origins, and webhooks — these were previously hidden from everyone but agency staff. Managers can create, edit, delete, and rotate them; other members get read-only access.
- User management and developer tools moved — managing users, documentation, and webhooks now live in the new ClientLoop interface, and the duplicate screens have been removed from the dashboard.
- Require a password change at next sign-in — administrators can now flag an account so the user must set a new password the next time they log in, useful for issuing temporary passwords.
- Organization name in the sidebar — the sidebar header now shows the organization's name and initials instead of a generic "Organization" label, so it's clear which organization you're viewing.
- Fixed the contacts list failing to load — an error when listing an organization's contacts has been resolved.
July 14, 2026
- Breaking: the copyable Configuration ID for an apply configuration is now the bare identifier, without the
ApplyConfiguration#prefix. If you hard-coded the prefixed form in an embed, copy the ID again from the configuration screen. - Smoother sign-in when your session expires — an authentication error no longer briefly flashes on screen before you're redirected to the login page after a session expires.
- Fixed the bank-linking popup reopening after you close it — exiting the bank-linking window without connecting an account no longer immediately reopens it; it waits for you to choose "Link bank account" again.
- Clearer bank-link labels — when only one payout method is offered, the button now reads "Link bank account" instead of "Link bank account for ACH"; the "for ACH" / "for Cards" qualifier appears only when both are offered.
- ACH bank linking follows your configuration — the apply flow now offers ACH bank linking whenever it's turned on for the apply configuration, instead of only above a minimum average order amount.
July 13, 2026
- Owner details on applications — the application view now shows the business owner's information.
July 12, 2026
- Sole proprietors can now link a bank account — fixed an error that stopped sole-proprietorship businesses from completing the "Link bank account" step during onboarding.
July 10, 2026
- Bare object ids for payments — the public API now returns plain ids (KSUIDs) for payments and payment plans, matching contacts, and the same bare ids are used in the payment, organization, and application status webhook payloads.
- Breaking: payment and payment plan ids changed from the prefixed form (
Payment#…/PaymentPlan#…) to bare ids, and status webhooks now send bare ids as well — integrations that parsed or stored the prefixed form must update. - Fixed payment plans failing to load when a linked contact was deleted — a payment plan or its sessions linked to a since-removed contact no longer errors the whole list; the missing contact is now returned as empty.
July 8, 2026
- Refetch objects by ID on the public API — the public GraphQL API now exposes
node(id), so integrations can refetch a contact — or any object with a global id — directly by its id. Access is scoped to what your API key is allowed to read.
July 7, 2026
- Fixed payment plans and contacts failing to load — resolved an error that could prevent payment plans from loading, caused by contacts that went missing after a recent update. The affected contacts were restored, and payment plans now load even when a linked contact is missing.
- Cursor pagination for contacts, newest first — the public contacts list is now a paginated connection (
first/after/last/before) that returns your most recently created contacts first, and each contact now has a global id. - Breaking: the public contacts list changed from a plain array to a Relay connection — integrations that read
contactsas a list must switch to readingedges { node }, and contact ids are now global ids (Contact#…).
July 5, 2026
- Owner "decision maker" now defaults to Yes — the "Is this owner a decision maker for the business?" question in the owner form now starts on Yes, since most owners are, so there's one less thing to set for the common case.
- Accept and submit in one step — when accepting your agreements is the last thing left, the button now reads "Accept and submit" and finishes the application in a single action instead of sending you back to the checklist.
- Your first owner is pre-filled after identity verification — once identity verification is complete, your first business owner is now pre-filled from the verified identity details, so you land on the owners step ready to review rather than re-typing it. You still confirm your ownership percentage before submitting.
- Identity verification now comes first — the business details, business owners, and products & services steps unlock only after identity verification is complete, matching how the agreements and bank-linking steps already worked.
July 2, 2026
- Plaid bank linking now requires a transfer configuration — you can no longer turn on Plaid bank linking for an agency until a Plaid transfer configuration is assigned to it. The apply configuration screen explains what's needed and blocks the change until it's set.
- Copyable Configuration ID in the apply config editor — the agency Apply Configuration edit screen now shows a read-only, copyable Configuration ID — the
configuration-idvalue you use when embedding theapply-sessioncomponent on your own website. - Sign in with email and password — you can now set a password and sign in with your email and password, in addition to Google and Microsoft. Set or change your password anytime from Preferences.
- Fixed an error when loading payments — resolved an issue that could cause payments to fail to load, most often on larger pages.
July 1, 2026
- Switch between your contexts — if your account has access to more than one context, you can now choose one when you sign in and switch between them in the portal, based on your roles.
June 30, 2026
- Manage embedding origins and API credentials in the portal — the ClientLoop portal now has screens to manage your allowed embedding origins (CORS allowlist) and API credentials directly, instead of configuring them by hand.
- Edit apply configurations in the portal — apply configurations are now fully editable in the portal, with a per-row edit action. New configurations default ACH bank linking off.
- Bank-linking controls and signup polish — apply configurations now have separate toggles for Plaid and CLP bank linking, and the apply flow only shows a bank-linking step when one of them is enabled. The signup page also gets copy and layout refinements. Also fixes an error that could occur when saving the default apply configuration.
- Re-brand the embedded apply flow — the
<apply-session>component now accepts aniconoverride (inline SVG or image URL) so you can show your own mark, mirroring the existing theme override. - Docs follow your system theme — the documentation site now defaults to your light/dark system preference when you haven't chosen a theme yourself.
- ClientLoop icon in the portal tab — the portal browser tab now shows the ClientLoop icon instead of a leftover default icon.
June 29, 2026
- Payment plan sessions in the public API — create and update payment plan sessions through the public GraphQL API, including
brandLogoUrlandbrandNameoverrides for the logo and business name shown to payers (matching payment sessions). An authenticated API key is still required. - New
payment.status.changed.v1webhook event — get notified whenever a payment's status changes. It's delivered to both the agency's and the payment org's webhooks, and it's now documented in the webhook events catalog. - Consistent
orgIdin webhook payloads — webhook events now emitorgIdas a global id (Org#…), so it's consistent across the organization, application, and payment status-changed events. Update any integration that parsed the raw org id from these payloads. - Email payment links to a merchant contact —
sendPaymentSessionLinkcan now email a payment session created from a merchant-supplied contact, not just a platform contact, and honors an explicit recipient override.
June 28, 2026
- Website verification on applications — a website entered on an application must now resolve to a live page, catching mistyped or dead domains before they're saved. The field stays optional.
- Breaking: the
PaymentSessionLinkChannelvalueSmshas been renamed toPhonefor payment-session and payment-plan link delivery. Clients sendingSmswill now get a validation error. (Phone delivery itself is not yet available.) - Self-service signup — prospective merchants can now apply directly at
/signup, an embedded apply experience with light and dark themes. - Fixed loading older organizations — resolved an error that could occur when reading organizations created before the status field was introduced.
June 26, 2026
- New
org.status.changed.v1webhook event — fires whenever an organization's status changes, so you can react to onboarding progress in real time. The webhook events documentation now also includes a full event index.
June 25, 2026
- Manage webhooks through the API — create, update, and delete webhook subscriptions via the public GraphQL API instead of by hand.
- Versioned webhook payloads — webhook deliveries now carry a payload version and a
cl-request-idheader to make handling and support easier. - Branding on payment sessions — override the logo and business name shown to payers with
brandLogoUrlandbrandName. - Onboarding for publicly-listed businesses — applications can now capture stock-exchange details for public companies.
- Fixed a checkout error — resolved a 401 when starting a Plaid session during anonymous checkout.
- Clearer API reference — payment operations are now grouped by category and the reference navigation is alphabetized.
June 23, 2026
- Themed apply sessions — the embedded apply component now accepts a dynamic theme override so it can match your brand.
- Fractional line-item quantities — order line items now accept decimal quantities. If you use generated client types, regenerate them against the latest schema.
June 20, 2026
- GoHighLevel invoice tipping — the GoHighLevel integration now supports tips on invoices.
June 19, 2026
- Environment selection on Contact IDV — the
<contact-idv-session>component now takes anenvattribute, so you no longer wire up a raw endpoint URL.
June 18, 2026
- More API examples — the GraphQL API reference now includes PHP, Java, and .NET examples alongside the existing ones.
June 17, 2026
- Credit card surcharging guide — a new guide walks through enabling and configuring surcharging.
- Surcharge and tip handling at checkout — adding a surcharge or tip no longer blocks payment; unsupported pay-over-time options are simply disabled instead.
- Fixed a sign-out error — resolved a 500 that could occur when signing out.
June 16, 2026
- Interactive "Try it" in the docs — run GraphQL operations directly from the API reference.
- Simpler component setup — ClientLoop session components now take an
envattribute instead of a raw graph URL. - Quieter console — stopped a spurious 401 from the session probe used by embedded components.
June 15, 2026
- Client package import — the generated GraphQL schema is now exported from the
@clientloop/clientpackage root.
June 14, 2026
- Richer API reference — type pages now show a "Used by" section, and operation pages include ready-to-run curl and fetch examples.
June 13, 2026
- Developer docs site — the ClientLoop developer documentation now lives at docs.clientloop.com, including the embeddable component guides.
June 12, 2026
- Contact mutations in the public API — contact operations are now exposed in the public GraphQL graph under the Contact category.
- Better type docs — GraphQL operation pages now show the definitions of the types they reference.
June 10, 2026
- Redesigned API keys — create and manage API keys with roles and soft-delete, each scoped to its owner.
- Checkout component attributes — checkout web components now use kebab-case attribute names (for example
brand-name). Update any existing embeds that use the old casing. - Auth requirements in the docs — the API reference now shows which operations require authentication.
June 9, 2026
- Verified apply sessions — the new
applySessionCreatemutation issues a verified, embeddable apply session. - Stronger address validation — applications now reject PO box and PMB addresses.
- Automatic business verification — submitting an application now places a business-verification order automatically.