> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myfundingmachine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Automatic onboarding account links

> Connect a SaaS subscription to its opportunity in the Onboarding pipeline and keep compliance review separate.

**Admin → Onboarding** is the primary staff workspace for account links and exceptions.
The Operator sees their required steps and the name of the person who must complete KYC.

## What connects automatically

When automatic linking is enabled, opening or refreshing an eligible Location’s setup
checks its agency SaaS subscription, the subscription’s Operations contact, its CRM
payment subscription, and the matching Stripe subscription and saved card. A missing
cardholder name does not block this process. The name displayed for KYC comes from the
Operations contact. Compliance remains responsible for confirming card ownership and
the signed agreement; automatic linking does not record either review as complete.

For a new link, there must be exactly one unassigned, open opportunity for that contact
in **Onboarding → New - Paid**, and exactly one CRM payment subscription on the contact.
The app fills that opportunity’s **Product Location ID** with the customer’s SaaS
Location ID, confirms the write, and saves the Operations contact mapping in setup.
It reuses the opportunity; it does not create one or change its stage.

A valid existing Product Location ID in the **Onboarding** pipeline takes precedence
and survives movement to later stages. Account linking and identity verification resolve
the mapping only in that pipeline. An opportunity in another pipeline, including
**3. FM Client Onboarding**, can carry the same Product Location ID without blocking
the link. Those other opportunities are not selected or changed. Duplicate mappings
within **Onboarding**, conflicting contacts or Locations, and incomplete searches still
need review rather than a name or email match.

The identity panel says the account was linked from its subscription. No compliance
checkbox or reviewer timestamp is manufactured. Matching Stripe identity verification
still completes KYC automatically after the CRM result is confirmed. Linking alone does
not mark KYC complete, import an existing CRM Verified value, or confirm payment collected.
A trial subscription with a saved card is eligible; its trial status is not proof of payment.
Previously staff-reviewed identity evidence is preserved.

## Check or retry a link

1. Open the client in **Admin → Onboarding**.
2. Open **Account connection**. Missing mappings show connection guidance directly; raw contact corrections remain under **Troubleshooting**.
3. Under **Connect the SaaS account**, enter the customer’s SaaS Location ID if the
   opportunity has no Product Location ID yet, then choose **Check account links**.
4. Read the result. The app checks that the selected opportunity is the one belonging
   to that account before updating anything.

New installations and completed provisioning jobs also try the guarded linker,
with bounded retries for a delayed subscription or opportunity. The feature must
already be enabled for that Location, either manually or through the separately
configured [new customer enrollment](/staff/onboarding-enrollment) rule.
See [Account reconciliation](/staff/onboarding-reconciliation)
for the full-agency report, including accounts without an app installation.

Normal setup refreshes retry at least one minute apart. While the customer’s setup
page is visible, its existing five-minute refresh also retries. Selecting an already mapped client in Admin only reads saved state. An explicit **Refresh setup** in Troubleshooting runs provider checks. An eligible client whose setup has never been opened can also be linked from admin or through the separately enabled background recovery below.
Provider delays or a lost write response are checked again against current CRM data.
A successful earlier mapping is not written twice.

## Background recovery

When `ONBOARDING_AUTO_LINK_RECOVERY_ENABLED=true` and automatic linking is enabled,
an hourly check selects up to ten eligible installed customer Locations in the
Operations agency. **Onboarding & Setup** must already be enabled. Missing link
attempts and pending attempts last checked at least an hour ago qualify; the
oldest attempts go first. Dispatches are spaced ten seconds apart and use the
existing guarded linker and its bounded one-, five- and fifteen-minute retries.

Completed links, active locks, internal Locations, ambiguous ownership and
review-required records are skipped. Recovery does not turn Labs on, clear review
holds, mark compliance or payment complete, or activate the communications engine.
The linker retains its existing separately gated Slack refresh behavior.

Repairing **Product Location ID** in CRM does not itself save the app's internal
contact binding. After reviewing a conflict and repairing the CRM field, choose
**Check account links** to revalidate the subscription and finish the binding.
Background recovery deliberately leaves review holds for this staff action.

Turning the recovery setting off stops queued recovery work and its later retries;
an already-running attempt can finish. Turning automatic linking off also stops
further linker writes. Existing links remain intact. Re-enable recovery to resume.
The inventory is read in pages of 100 with separate database budgets and is
bounded at 2,000 installations; exceeding it fails the sweep
instead of silently treating a partial inventory as complete.

A failed CRM opportunity lookup can leave an otherwise valid account pending. After
the connection issue is corrected, use **Check account links** again; the app reuses
the existing mapped opportunity. Do not create a duplicate opportunity to bypass a
pending lookup.

A failure before any CRM write releases its temporary reservation, so correcting the
opportunity and retrying can succeed. Interrupted pre-write attempts are released when
their five-minute lease expires. If a write might have reached CRM, its reservation is
retained for readback rather than silently switching opportunities. Confirmed mappings
and older reservations without dispatch information also remain protected.

An account-link review blocks starting a new verification. A customer who already has
a Stripe session can still resume that same session from the account that started it;
this does not change the saved verification subject or clear the account-link review.

## Resolve exceptions

* **Multiple Onboarding opportunities or subscriptions:** review the records, set Product Location ID
  on the correct existing Onboarding opportunity in CRM, then retry from admin. The app
  will not select the newest payment or assume that a shared contact means one account.
* **Wrong saved contact or Location:** verify the subscription’s account ownership first.
  Correct the CRM Product Location ID and use the existing admin contact-mapping controls.
  An active identity attempt must be reconciled/reopened before its contact can change.
* **Changed name or subscription identity:** compliance must review the existing evidence.
  Automatic linking preserves the existing verification instead of changing its subject.
  Use **Correct identity evidence** for a reviewed exception (reopen an active attempt
  first), record the actual staff confirmation, then choose **Check account links**.
* **Missing opportunity or card:** finish provisioning in the CRM or Stripe, then retry.
* **Connection unavailable:** reconnect the relevant agency/Operations connection in admin.

Do not create a second opportunity to recover a failed link. A reserved opportunity that
needs reassignment to a different account requires technical review; automatic retries
never move it between Locations. Turning automatic linking off stops further automatic
writes and preserves existing links and verification history.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.