Skip to main content
The subscriber sync mirrors Funding Machine subscriptions into the My Funding Machine CRM account. Each subscribing business has one opportunity named after the business and linked to its confirmed main owner’s contact. Several businesses can share an owner and still have separate opportunities. The source location ID identifies the business. Renaming it, pausing service, canceling, or reactivating does not create a replacement opportunity.

Enrollment and subscription stages

Only Active accounts enter the pipeline for the first time. Newly trialing, past-due, paused, and canceled accounts wait until they become active. Once an opportunity is managed, its subscription stage follows Active, Trialing, Past Due, Paused, or Canceled. Unpaid subscriptions use Past Due. Unrecognized states require review. These stages are separate from the opportunity’s open, won, lost, or abandoned status. Existing opportunity status stays unchanged, including on reactivation. New opportunities start open. Nothing is deleted on cancellation.

Owners, billing contacts, and account users

Staff must confirm the main owner’s source user ID before an opportunity is created. An admin role, billing contact, or position in the user list does not establish ownership. The confirmed user must remain assigned to that source account and have an email address. The sync searches for an exact email match in the destination. Multiple matches require review; no match creates a destination contact. Existing contact names, phone numbers, assignments, notes, and other fields stay unchanged. Source contact IDs are never reused as destination contact IDs. Billing contact information is recorded separately from the main owner. The account’s assigned users are stored in a separate staff-only roster linked by source location ID. Agency staff and deleted users are excluded. The opportunity stores the user count, rather than repeated fields for individual users. Changing the main owner preserves the opportunity and raises a primary-contact relink exception. The current CRM API does not expose that change through the opportunity update operation. Staff must relink the existing opportunity in the CRM; the next run verifies the new contact instead of replacing the opportunity.

Fields maintained by the sync

The sync owns the business name, subscription stage, and its eight dedicated custom fields: source location ID, plan, amount, billing frequency, next billing date, user count, last sync time, and billing contact. Amount is the catalog recurring plan price in dollars, before discounts, taxes, or one-time charges. Annual prices remain annual amounts. Next billing information comes from the matching payment subscription. A subscription scheduled to cancel instead of renew shows No renewal scheduled. Unavailable billing information remains an exception; it never becomes an invented zero or date. Known fields and stage can still update when optional billing information is unavailable. The last full sync time advances only when all required reads and the destination readback succeed. Manual notes, assignments, followers, lifecycle status, monetary value, and unrelated custom fields are not included in update requests. Existing CRM workflows are not edited. CRM workflows that already react to contact or opportunity changes may still run; review their triggers before activation.

Preview and exceptions

The automation ships disabled. A staff maintainer first runs the read-only preview, which shows source accounts, missing sources, required configuration, proposed fields, rosters, and owner/contact exceptions. Preview does not refresh tokens, save records, or enqueue writes. Expired credentials block it explicitly. After activation, the sync checks every six hours. Account work is serialized, with durable progress and a readback after each opportunity write. Staff can inspect the run counts and each account’s latest exception through the internal maintenance commands in the repository runbook. A missing source account is held for review, even after a complete directory read. Missing does not mean canceled. Failed or incomplete searches never count as evidence that a contact or opportunity does not exist. If a create request times out, a later run first tries to reconcile the existing record. It does not blindly send the create again. An unresolved attempt stays visible for staff review. Disabling the sync stops new workers; the current worker may finish. Re-enabling resumes reconciliation without deleting records.