The Business Situation

Cedar Vale Advisory is a fictional 68-person operations and technology consultancy. The firm receives prospective-client introductions from accounting practices, marketing agencies, independent advisers, and technology partners.

Note: This case study is provided as a representative example of the types of AI integration and digital transformation solutions Intelligex designs and delivers. Actual engagements are tailored to each client’s goals, constraints, existing systems, timeline, and available resources, so the approach, tools, and outcomes may vary.

The referral program involves 24 active partners. It receives approximately 45 submissions per month, of which about 28 are accepted for sales follow-up and 14 progress to an opportunity. Approximately five referred opportunities reach Closed Won in an average month.

The people involved are:

  • A partner development manager who owns partner relationships.
  • A revenue operations manager who checks attribution and maintains Salesforce.
  • Six sales consultants who qualify and progress opportunities.
  • A finance coordinator who validates fee calculations and records payments.
  • A finance manager who approves higher-value referral fees.
  • A marketing operations analyst who prepares channel and partner reporting.

The consultancy already uses Salesforce as its CRM, Google Workspace for forms and spreadsheets, Slack for internal communication, and Make for selected integrations. However, the tools were not operating as one referral system.

Partners sent introductions through email, informal messages, and an inconsistently used Google Form. Revenue operations copied submissions into Google Sheets and asked sales representatives to update Salesforce. The partner manager maintained a separate fee spreadsheet and regularly contacted sellers to determine whether a referral had become an opportunity.

This process created disputes about when a lead was received, which partner deserved attribution, whether a deal was still active, and which fee rule applied. The business needed a controlled process before expanding the partner program because a larger volume would have increased reconciliation work and commercial risk.

The Existing Process

The original workflow usually followed this sequence:

  1. A partner sent a referral by email or submitted the Google Form.
  2. The partner manager checked whether the prospect appeared familiar.
  3. Referral details were copied into a shared spreadsheet.
  4. A Slack message or email asked a salesperson to follow up.
  5. The salesperson manually created a Salesforce Lead, Contact, or Opportunity.
  6. The partner manager periodically asked for a status update.
  7. If the opportunity closed, finance searched Salesforce and the spreadsheet for the agreed fee rate.
  8. The fee was calculated in a separate spreadsheet and approved through email.
  9. The partner manager manually updated the partner after payment.

Process issue

  • Referral details were entered more than once.
  • Partner names and prospect names were inconsistent.
  • Salesforce records were not always linked to a referral.
  • Referral rules could change without preserving the original terms.
  • Status updates depended on individual follow-up.
  • Fee approvals were documented across email and spreadsheets.

Business effect

  • Revenue operations spent time reconciling records.
  • Duplicate referrals were difficult to recognize.
  • Partner-attributed revenue was underreported or disputed.
  • Staff could not reliably reconstruct which rate applied.
  • Partners received inconsistent updates.
  • Finance had a weak audit history for fee payments.

The spreadsheet was useful as a working list, but it had no enforced relationships between partners, referrals, opportunities, and fee records. A single row could contain several opportunity identifiers, free-text statuses, and manually typed percentages.

Salesforce contained the authoritative sales stages and opportunity values, but referral attributes were often stored in notes. Google Sheets contained the referral history, but its opportunity stages became stale. Neither system showed which records had failed during an attempted update.

There was also no consistent ownership rule. A referral might be assigned to the partner manager, a salesperson, or nobody. When a salesperson was unavailable, reminders continued to be sent to that person without escalation.

What the New System Needed to Do

The team defined the business rules before selecting the final implementation. The requirements distinguished deterministic workflow rules from decisions that required commercial judgment.

Referral system requirements
Area Requirement Control
Intake Capture a standard set of partner and prospect details. Required fields and controlled values.
Identity Assign an immutable referral ID and preserve the original submission time. Salesforce auto-number and submission key.
Validation Confirm that a partner code is active and that contact details are usable. Partner lookup and format validation.
Duplicate control Detect a replayed form row and flag possible repeat referrals for the same prospect. Unique submission key plus domain and attribution-window matching.
Attribution Link accepted referrals to Leads and Opportunities. Referral key mapped through Salesforce records.
Ownership Assign a named sales owner or a revenue operations fallback owner. Partner profile and service-line assignment rules.
Status Show the current referral, opportunity, and fee status without overwriting history. Separate status fields and tracked changes.
Partner updates Remind owners when an update is due without automatically disclosing deal details. Slack reminders and a human-reviewed update.
Fees Snapshot the applicable fee rule and calculate a proposed amount. Deterministic formula and finance approval.
Exceptions Create a visible task when data is missing, duplicated, or inconsistent. Salesforce Task, error register, and Slack alert.
Reporting Report submissions, acceptance, attributed pipeline, wins, fees, aging, and failures. Salesforce reports and a synchronized Google Sheets tracker.
Audit evidence Record who approved attribution and payment, when they acted, and what rule was used. Approval fields, history tracking, and activity records.
Manual override Allow authorized staff to correct ownership, attribution, and exceptions. Role-based Salesforce permissions and reason fields.

The team specifically excluded automatic acceptance, automatic rejection, automatic payment release, and unsupervised partner communications. Those actions could materially affect a partner relationship or financial obligation.

Implementation Approaches Considered

Comparison of practical implementation approaches
Approach Connected tools Strengths Limitations Fit
Improve Google Forms and Sheets Google Forms, Sheets, Apps Script Familiar, quick intake, flexible formulas. Weak relationship controls, duplicated CRM data, more scripting and spreadsheet governance. Low-volume programs without a CRM.
Build an Airtable referral base Airtable, form, Salesforce connector Good related records, views, and approachable administration. Introduces another operational database and still requires CRM synchronization. Teams without an established Salesforce operating model.
Use Salesforce only Salesforce forms or portal, Flow, reports Strong record relationships, permissions, and sales attribution. External partner intake may require additional Salesforce capabilities and administration. Programs with an authenticated partner portal or extensive Salesforce resources.
Connect Salesforce, Google, Make, and Slack Google Forms, Sheets, Salesforce, Make, Slack Retains familiar intake, makes Salesforce authoritative, and supports visible routing and alerts. Requires integration monitoring and careful duplicate handling. Selected for the representative scenario.
Purchase partner relationship management software Dedicated partner platform and CRM Partner portals, deal registration, enablement, and program administration in one product category. Higher implementation effort and may exceed the needs of a 24-partner program. Larger or strategically complex partner ecosystems.

Google Forms and Sheets

Google Forms was appropriate for external intake because partners already understood it and did not need Salesforce access. Google Sheets remained useful for an operational tracker and ad hoc analysis. It was not selected as the authoritative database because partner, referral, opportunity, and fee relationships require stronger controls than a shared spreadsheet normally provides.

Airtable

Airtable could have modeled partners, referrals, deals, and fees effectively. The disadvantage was the creation of a second operational database beside Salesforce. The team would still have needed bidirectional synchronization, permissions, duplicate controls, and a process for deciding which system won a conflict.

Salesforce

Salesforce was the strongest system of record because sales staff already managed Leads and Opportunities there. Custom objects could preserve referral terms, relationships, approval evidence, and fee records. The selected approach therefore extended Salesforce rather than replacing it.

Make, Zapier, and n8n

Make was selected because the company already used it and the workflow required branching, record searches, updates across several systems, and centralized error routes. Zapier would also have been suitable for a simpler linear workflow. n8n would have provided greater control over custom API requests and self-hosting, but it would have required more operational ownership for hosting, upgrades, credentials, and monitoring.

The selection did not imply that Make was universally preferable. An organization already operating Zapier or n8n successfully should include migration effort, support skills, security requirements, and existing automation inventory in its decision.

The Selected Solution

The selected implementation used Google Forms for partner intake, Salesforce as the system of record, Make as the integration layer, Google Sheets as a controlled working tracker, and Slack for internal notifications. Salesforce Files stored partner agreements and supporting documents.

Responsibility of each selected tool
Tool Responsibility Authoritative data
Google Forms Collect standardized external referral submissions. Original submitted answers only.
Google Sheets Receive form responses, show synchronized working views, and record automation errors. Original response row and operational error register.
Salesforce Store partners, referrals, Leads, Opportunities, activities, fee records, approvals, and audit fields. All referral, attribution, sales, and fee statuses.
Make Validate data, connect systems, synchronize events, route exceptions, and schedule reminders. No master business records. It maintains execution state and logs.
Slack Notify internal owners and send exception or reminder messages. No authoritative status.
Salesforce Files Store partner agreements and approved supporting documents. Current controlled document versions.
Salesforce reports and Google Sheets Provide management, operating, and reconciliation views. Reports derive from synchronized Salesforce records.
Optional AI service Suggest a summary and service-line classification for unstructured referral notes. Suggestions only, subject to human confirmation.

This combination retained the company’s existing tools. It removed manual copying of accepted referrals, manual opportunity-stage updates in the tracker, repeated fee-rate lookups, and most routine reminder messages.

Humans continued to decide whether a referral was valid, whether two submissions represented the same prospect, which partner received disputed attribution, whether revenue was fee-eligible, whether a fee should be approved, and what information could be communicated to a partner.

System Architecture and Data Flow

  • Intake: Google Forms with responses written to a protected Google Sheets tab.
  • System of record: Salesforce custom Partner Profile, Referral, and Referral Fee objects, plus standard Leads, Opportunities, Tasks, and Events.
  • Automation layer: Make scenarios using secured OAuth connections.
  • Document storage: Salesforce Files related to the relevant Partner Profile or Referral.
  • Notifications: Slack messages containing limited data and a Salesforce record link.
  • Reporting: Salesforce reports for authoritative metrics and Google Sheets for the working tracker and reconciliation.
  • AI layer: An optional structured-output classification step invoked by Make after the core workflow succeeds.
  1. Partner submission: A partner submits Google Forms data. Google Sheets receives the timestamp and answers. If the write fails, Google Forms retains the response for administrator review.
  2. Submission trigger: Make detects a new protected response row. It creates a deterministic submission key from the UTC timestamp and response row number.
  3. Validation: Make validates the partner-code pattern, email format, consent confirmation, prospect name, and prospect website or domain. Invalid submissions are routed to manual review.
  4. Partner lookup: Make searches Salesforce for one active Partner Profile with the submitted partner code. No match or multiple matches create an exception.
  5. Duplicate checks: Make first searches for the exact submission key. It then searches for an open or recently received referral with the same normalized prospect domain and partner or attribution window.
  6. Referral creation: If the event is new, Make creates a Salesforce Referral. Salesforce returns the record ID and auto-number. Make writes both values to the source response row.
  7. Review and assignment: The partner development manager or revenue operations manager reviews the referral. On acceptance, Make creates a Salesforce Lead if one does not already exist and assigns it using the Partner Profile’s default owner.
  8. Opportunity attribution: When a Lead is converted or an Opportunity is otherwise linked, Make finds the Referral by its unique referral key, writes the Referral lookup to the Opportunity, and updates the working tracker.
  9. Activity synchronization: New or changed Salesforce Tasks and Events update the Referral’s last-activity and next-action fields. Missing follow-up creates an exception task and Slack reminder.
  10. Deal-stage synchronization: Opportunity changes update the Referral status, Google Sheets working tracker, and selected Slack notifications. The Salesforce Opportunity ID remains the returned external identifier.
  11. Fee creation: Closed Won creates or updates one draft Referral Fee per eligible Opportunity. The applicable rate is copied from the Partner Profile as a snapshot. Missing basis data creates a finance exception instead of estimating a payment.
  12. Approval and payment tracking: Revenue operations confirms attribution, finance confirms eligible revenue, and an authorized approver approves the fee. Payment execution remains outside this automation. Finance records the payment reference and date after payment.
  13. Reporting and reconciliation: Scheduled synchronization updates Google Sheets. A daily reconciliation compares Salesforce records with tracker rows and adds unresolved differences to the automation error register.

Make processes records using idempotent keys. Reprocessing the same form row or Opportunity event therefore updates the existing record instead of creating another one.

Data Structure

Partner Profile

Important Partner Profile fields in Salesforce
Field Type Required Source and allowed values Purpose
Partner Name Text Yes Revenue operations Human-readable organization name.
Partner Code Text, unique Yes Uppercase letters, numbers, and hyphens Stable intake lookup key.
Partner Type Picklist Yes Accountant, Agency, Adviser, Technology Partner, Other Program segmentation.
Active Checkbox Yes True or false Controls whether new submissions can be accepted.
Primary Contact Email Email Yes Partner manager Partner contact reference. It is not used for automatic deal disclosure.
Partner Owner User lookup Yes Sales or partner team user Internal relationship owner.
Default Referral Owner User lookup No Approved sales user Initial Lead assignment.
Attribution Window Days Number Yes Approved positive integer Controls possible duplicate and attribution review.
Fee Rate Percent No Approved agreement Default rate copied to a fee snapshot.
Fee Basis Type Picklist No Eligible Contract Value, Eligible Collected Revenue, Fixed Amount Determines how finance supplies the basis.
Currency Currency code No Supported company currencies Prevents cross-currency assumptions.
Agreement Status Picklist Yes Draft, Active, Expired, Suspended Blocks fee approval without an active agreement.
Agreement Effective and Expiry Dates Date No Approved agreement Determines which terms apply at referral receipt.

Referral

Important Referral fields in Salesforce
Field Type Required Source Validation and automation use
Referral ID Auto-number Yes Salesforce Immutable display identifier such as REF-000418.
Submission Key Text, unique external ID Yes Make Prevents duplicate form-event creation.
Created Date Date and time Yes Salesforce System audit field.
Original Submission Time Date and time Yes Google Forms Preserves when the partner submitted the referral.
Partner Partner Profile lookup Required before acceptance Make lookup or manual review Establishes attribution relationship.
Submitted Partner Code Text Yes Google Forms Preserved even if the Partner lookup fails.
Requester Name and Email Text and email Yes Google Forms Identifies the submitting partner contact.
Prospect Name Text Yes Google Forms Displayed to internal reviewers.
Prospect Domain Text Required when available Normalized by Make Lowercase domain used for possible-duplicate matching.
Prospect Contact Text and email Conditional Google Forms Required when the partner has permission to share it.
Service Interest Picklist Yes Google Forms Operations, Data and Analytics, Technology Enablement, Other.
Owner Standard Salesforce owner Yes Make, then authorized user Controls the accountable internal owner.
Status Picklist Yes Human and automation Controlled workflow state.
Priority Picklist Yes Human reviewer Low, Normal, High. AI cannot set final priority.
Lead ID Text No Make Returned Salesforce Lead identifier.
Last Activity At Date and time No Make from Salesforce activity Supports aging and follow-up monitoring.
Next Action Date Date No Salesforce Task or user Controls reminder timing.
Last Partner Update Date No Logged human activity Measures partner communication cadence.
Approval Status Picklist Yes Human reviewer Not Submitted, Pending, Approved, Rejected, Returned.
Exception Type Picklist No Make or user Duplicate, Invalid Partner, Missing Data, Attribution Conflict, Integration Failure, Other.
Document Link URL No User or Salesforce file relation Optional supporting-document reference.
Automation Status Picklist Yes Make Pending, Processing, Complete, Exception, Retry Scheduled.
Last Automation Run Date and time No Make Shows the latest successful or failed processing attempt.
Retry Count Number Yes Make Starts at zero and increments only for automated retries.
Error Message Long text No Make Stores a sanitized operational error.
Notes Long text No Form and human reviewer Unstructured context with sensitive details excluded.

Opportunity and activity additions

The standard Opportunity receives a Referral lookup, a unique Referral Key text field, Eligible Referral Revenue, Fee Eligibility, and Attribution Review Status. Lead has a Referral Key field mapped to Opportunity during Lead conversion. Make uses that key to populate the Opportunity lookup if conversion does not populate the relationship directly.

Tasks and Events use activity fields for Automation Generated, Exception Key, Partner Update Activity, and Referral ID. Automated exception tasks are marked so the activity synchronization scenario does not treat them as genuine sales activity.

Referral Fee

Important Referral Fee fields
Field Type Required Purpose
Fee ID Auto-number Yes Immutable identifier.
Fee Key Text, unique external ID Yes Referral ID plus Opportunity ID for idempotency.
Referral Lookup Yes Links the fee to the original submission.
Opportunity Lookup Yes Links the fee to the qualifying deal.
Partner Lookup Yes Identifies the proposed payee.
Fee Basis Type Snapshot Picklist Yes Preserves the rule used when the fee was created.
Fee Rate Snapshot Percent Conditional Preserves the historical percentage.
Fee Basis Amount Currency Conditional Entered or confirmed by finance.
Calculated Fee Currency formula Yes Basis multiplied by the rate, or approved fixed amount.
Status Picklist Yes Draft, Awaiting Basis, Pending Attribution Review, Pending Finance Review, Approved, Paid, Disputed, Cancelled.
Attribution Approver and Date User lookup and date Conditional Evidence of commercial attribution review.
Finance Approver and Date User lookup and date Conditional Evidence of financial approval.
Payment Reference and Paid Date Text and date Required for Paid Records payment evidence without executing payment.
Exception Type and Error Message Picklist and long text No Records missing terms, currency mismatch, or integration failure.

The relationships are one Partner Profile to many Referrals, one Referral to zero or many Opportunities, and one eligible Opportunity to one Referral Fee. The unique Fee Key prevents the same Opportunity event from creating multiple fee records.

Google Sheets structure

The workbook contains protected tabs named Form_Responses, Referral_Tracker, Opportunity_Events, Fee_Tracker, Automation_Errors, and Control. Only Make and designated revenue operations administrators can edit system columns.

Referral_Tracker uses one row per Referral. Opportunity_Events uses one row per Opportunity. Fee_Tracker uses one row per Referral Fee. This avoids placing several opportunity or fee identifiers in one cell.

Workflow Statuses and Ownership

Referral workflow statuses and control rules
Status Meaning and owner Entry and exit condition Reminder and escalation
Submitted New intake owned by revenue operations. Created from a valid new form event. Exits after initial review. Reminder after one business day; partner manager copied after two.
Needs Review Incomplete, unmatched, or possibly duplicated record owned by revenue operations. Entered by validation or a reviewer. Exits after correction, merge decision, decline, or acceptance. Daily reminder; escalation after three business days.
Accepted Valid referral with assigned sales owner. Human approval and complete partner data. Exits when a Lead is created or linked. Integration exception after 15 minutes without a Lead ID.
Attributed Linked to a Lead but not yet an active Opportunity. Lead ID stored. Exits when an Opportunity is linked, referral is declined, or sales disqualifies it. Owner reminder when no meaningful activity exists for five business days.
Open Opportunity At least one linked Opportunity is active. Opportunity is not Closed Won or Closed Lost. Exits when all linked Opportunities are closed. Reminder when Next Action Date is missing or overdue.
Closed Won, Fee Review Deal won and proposed fee requires review. Opportunity becomes Closed Won. Exits when the fee is approved, cancelled, or disputed. Finance reminder after two business days; finance manager escalation after four.
Fee Approved Fee has all required approvals but is not recorded as paid. Finance approval complete. Exits after payment or cancellation. Weekly finance reminder based on agreed payment timing.
Fee Paid Payment reference and paid date recorded. Authorized finance user confirms payment evidence. No reminder. Record is closed but retained.
Closed Lost All attributed Opportunities are lost. Sales closes the Opportunity as lost. Partner update reminder if no closure update has been logged.
Declined Referral was not accepted. Human enters a controlled decline reason. No operational reminder; partner communication remains human-reviewed.
On Hold Processing paused for a documented reason. Authorized user supplies hold reason and review date. Reminder on the review date; escalation if the date passes.

A record can move backward from Accepted or Attributed to Needs Review when a conflict appears. Rejection requires a controlled reason and reviewer identity. Closure requires a terminal sales outcome or completed fee process.

Automation can move a record into Needs Review, Attributed, Open Opportunity, or Closed Won, Fee Review. Automation cannot approve attribution, approve a fee, mark a fee Paid, or issue a final partner communication.

Step-by-Step Implementation

Step 1: Prepare the Accounts and Permissions

  1. Confirm that the Salesforce organization supports the custom objects, fields, API access, OAuth connections, reports, and history features required by the design. Availability depends on the organization’s Salesforce configuration and licensing.
  2. Create a dedicated Salesforce integration user or another approved non-personal integration identity. Do not connect Make using a salesperson’s account.
  3. Grant the integration identity read and write access only to Partner Profile, Referral, Lead, Opportunity referral fields, Referral Fee, Task, Event, and the fields used by the scenarios.
  4. Allow the integration identity to create Leads, Referral Fees, and Tasks. Do not grant permission to approve fees or mark them Paid.
  5. Create a Google Workspace shared drive or controlled folder for the form, response workbook, implementation documentation, and non-sensitive operational exports.
  6. Use a Google integration account or approved shared automation connection with access only to the selected form and workbook.
  7. Create a restricted Slack channel such as referral-operations. Add revenue operations, the partner manager, and the finance coordinator. Sales owners can receive direct messages or channel mentions according to internal policy.
  8. Create a Make organization or team space with separate development and production folders. Restrict scenario editing and connection management to automation administrators.
  9. Connect Salesforce to Make through OAuth. Connect Google Sheets and Slack through their approved OAuth connections. Store all credentials in Make connections rather than variables, Sheets, or scenario notes.
  10. Create test users for revenue operations, sales, partner management, and finance. Test with non-production names and domains.
  11. Where a Salesforce sandbox is available, configure and test the CRM elements there. Create a separate test form and spreadsheet rather than pointing development automation at the production response sheet.

Permission boundaries are important. Sales users can update qualification and activity fields. Revenue operations can resolve attribution. Finance can edit fee basis and payment evidence. Only designated approvers can populate approval fields. The Make integration user can propose and synchronize records but cannot perform final approvals.

Step 2: Build the Intake

Create a Google Form titled Partner Referral Submission. Configure it to write responses to the protected Form_Responses tab.

Google Form intake fields
Field Type and values Required Validation
Partner code Short answer Yes Four to 20 uppercase letters, numbers, or hyphens.
Your name Short answer Yes Two to 100 characters.
Your business email Email Yes Email format plus Salesforce partner-profile validation.
Prospect organization Short answer Yes Two to 150 characters.
Prospect website Short answer Recommended URL or domain format. Make normalizes it.
Prospect contact name Short answer Conditional Required when contact details are supplied.
Prospect contact email Email Conditional Valid email and permission confirmation.
Service interest Dropdown Yes Operations, Data and Analytics, Technology Enablement, Other.
Referral context Paragraph Yes Maximum length set to the form’s practical supported limit; instruction asks for concise business context.
Expected timing Multiple choice Yes Within 30 days, 31 to 90 days, More than 90 days, Unknown.
Permission to share Checkbox Yes Partner confirms permission to share the supplied business contact data.
Additional link Short answer No Optional secure document or context link.

Do not enable public file uploads for this implementation. Google Forms file-upload behavior can require account authentication, and unrestricted attachments introduce malware, access, and retention concerns. Supporting documents can be requested after the referral is accepted and stored in Salesforce Files.

The form confirmation message should state that submission does not guarantee acceptance or a referral fee, that a representative will review the information, and that sensitive personal, financial, health, authentication, or confidential client data must not be entered.

The partner code is an identifier, not a password. Make validates it against the active Salesforce Partner Profile and checks whether the submitting email matches an authorized domain or contact. A mismatch creates manual review rather than disclosing whether another partner exists.

Google Forms handles basic required-field validation. Make performs business validation. Incomplete or suspicious submissions are preserved but are not automatically assigned to sales.

Step 3: Create the System of Record

  1. Create the Partner Profile custom object. Use a text Name field for the partner name and make Partner Code a unique field.
  2. Create the Referral custom object with an auto-number Name such as REF-{000000}. Enable activities so Tasks and Events can be related to a Referral.
  3. Create the Referral Fee custom object with an auto-number Name such as FEE-{000000}.
  4. Add a Partner Profile lookup to Referral and lookups from Referral Fee to Partner Profile, Referral, and Opportunity.
  5. Add a Referral lookup and Referral Key text field to Opportunity.
  6. Add Referral Key to Lead and configure Salesforce Lead field mapping so it moves to the corresponding Opportunity field during conversion.
  7. Create Fee Key and Submission Key as unique external ID text fields. These enforce idempotency even if Make receives the same event twice.
  8. Add the controlled status, exception, approval, and automation fields described in the data model.
  9. Enable field history tracking for Referral Status, Partner, Owner, Approval Status, Exception Type, Opportunity Referral lookup, Fee Status, Fee Basis Amount, Fee Rate Snapshot, Calculated Fee, approvers, and payment evidence.
  10. Create filtered Salesforce list views for new submissions, review exceptions, referrals without activity, Closed Won fee review, approved unpaid fees, and automation failures.

Use clear API naming conventions such as Partner_Profile__c, Referral__c, Referral_Fee__c, Partner_Code__c, Submission_Key__c, Referral_Key__c, Fee_Key__c, Automation_Status__c, and Last_Automation_Run__c.

In Google Sheets, create headers before connecting Make. Protect the Form_Responses answer columns and allow Make to write only processing fields such as Submission Key, Salesforce Referral ID, Referral Number, Processing Status, Processed At, and Error Summary.

Create the following Control tab columns: Scenario Name, Last Successful Timestamp, Last Run ID, Last Record ID, Status, and Last Error. This tab supports reconciliation and recovery. It is not a substitute for Make execution history.

Step 4: Connect the Tools

Connection and field-mapping plan
Source to destination Trigger and authentication Important mapping Returned identifier and failure behavior
Google Forms to Google Sheets Native form-response write under Google Workspace permissions. Timestamp and submitted answers to Form_Responses. Sheet row number. Missing writes are reviewed from form responses.
Google Sheets to Salesforce Make watches new rows using Google OAuth, then uses Salesforce OAuth. Partner code, requester, prospect, normalized domain, service interest, context, submission key. Salesforce Referral ID and number are written back to the row. Errors go to Automation_Errors.
Salesforce Referral to Lead Make watches accepted Referral changes through the Salesforce connection. Company, contact, email, owner, service interest, Referral Key. Lead ID is stored on Referral. Duplicate or validation errors create an exception Task.
Salesforce Opportunity to Referral and Sheets Scheduled Make scenario reads Opportunities changed since its cursor. Referral Key, Opportunity ID, owner, stage, amount, close date, eligible revenue. Opportunity lookup and tracker row are updated. Missing Referral Key routes to attribution review.
Salesforce activities to Referral and Sheets Scheduled Make scenarios read changed Tasks and Events. Related record, completion state, due date, activity time, partner-update indicator. Referral activity dates are updated. Automated activities are excluded.
Salesforce to Slack Make uses an approved Slack OAuth connection. Referral number, status, owner, exception type, due date, Salesforce link. Slack message identifier can be logged if returned. Notification failure does not roll back Salesforce.
Salesforce Fee to Google Sheets Make reads changed Referral Fee records. Fee number, partner, opportunity, basis, rate, calculated fee, status, dates. Fee_Tracker row is inserted or updated using Fee Key.

Make interface labels can vary as connectors are updated. The required operations are a new-row watch, Salesforce record search, create, retrieve, and update operations, Google Sheets row search and update operations, routing filters, variables, error handlers, and Slack message creation.

For every Salesforce create operation, capture the returned Salesforce record ID immediately. Write it to the source Referral or sheet row before sending a non-critical Slack notification. This order prevents a failed notification from leaving the core record unidentifiable.

Step 5: Build the Core Automation

Automation 1: Intake and Referral Creation

  • Trigger: A new row appears in Form_Responses.
  • Conditions: The response has no Salesforce Referral ID and has not been marked permanently rejected.
  • Actions: Create the submission key, normalize values, validate fields, find the partner, check duplicates, create or identify the Referral, update the response row, and notify the reviewer.
  • Fields updated: Submission Key, Referral ID, Referral Number, Processing Status, Processed At, Automation Status, and any exception fields.
  • Notification: Slack sends a limited new-referral or review-needed message.
  • Exception: Invalid partner, possible duplicate, malformed domain, or Salesforce failure enters Automation_Errors and creates a Salesforce review task when a Referral exists.

Configure the modules in this order:

  1. Watch new rows in Form_Responses.
  2. Read the row number and form timestamp.
  3. Build a key such as FORM-20260715T142455Z-R000237.
  4. Normalize the partner code by trimming spaces and converting it to uppercase.
  5. Normalize the domain by converting it to lowercase, removing the protocol, removing a leading www, removing a path, and removing a trailing slash.
  6. Reject unsafe or malformed partner-code input before using it in a Salesforce query.
  7. Search Salesforce Referral by exact Submission Key. If found, write the existing Referral ID to the sheet and stop that route.
  8. Search Partner Profile for one active record with the exact Partner Code.
  9. Search recent Referral records for the normalized prospect domain. Use the partner’s attribution window as a review rule, not an automatic rejection rule.
  10. Create a Referral with Submitted status when validation succeeds. Create it with Needs Review when the partner is unmatched or a possible duplicate requires a human decision.
  11. Capture the returned Salesforce ID and Referral Number.
  12. Update the form-response row.
  13. Upsert the Referral_Tracker row using Referral ID as the key.
  14. Send the Slack notification last.

Automation 2: Accepted Referral to Salesforce Lead

  • Trigger: A Referral changes to Accepted.
  • Conditions: Approval Status is Approved, Partner is present, Lead ID is blank, and Automation Status is not Processing.
  • Actions: Search for an existing Lead or Contact using exact business email and normalized domain, create or link the Lead, assign the owner, and store the Lead ID.
  • Fields updated: Lead ID, Status, Last Automation Run, Automation Status, and Error Message.
  • Notification: The assigned salesperson receives a Slack message with the Referral link and due date.
  • Exception: A possible existing Lead or Contact is routed to manual review instead of being overwritten.

Set Automation Status to Processing before creating the Lead. Search by Referral Key before any create operation. If the Lead already exists, store its ID and mark the operation complete. This makes recovery safe after a timeout.

Automation 3: Opportunity Attribution and Tracker Synchronization

  • Trigger: An Opportunity with a Referral Key changes.
  • Conditions: The change affects Stage, Amount, Close Date, Owner, Fee Eligibility, Eligible Referral Revenue, or Referral Key.
  • Actions: Find the Referral, populate the Opportunity Referral lookup, update Referral status, and upsert Opportunity_Events and Referral_Tracker.
  • Fields updated: Opportunity ID, stage, amount, close date, Referral status, Last Automation Run, and tracker timestamps.
  • Notification: Slack notifies owners for material events such as first attribution, Closed Won, Closed Lost, or an attribution exception.
  • Exception: Missing, invalid, or conflicting Referral Keys create a Salesforce Task assigned to revenue operations.

Do not send a Slack message for every minor field edit. Filter for material stage or attribution changes to avoid notification fatigue.

Automation 4: Activity Event Synchronization

  • Trigger: A qualifying Salesforce Task or Event is created or changed.
  • Conditions: It relates to a Referral or attributed Opportunity and Automation Generated is false.
  • Actions: Resolve the related Referral, update Last Activity At, identify the earliest open next action, and update the tracker.
  • Fields updated: Last Activity At, Next Action Date, Last Partner Update where applicable, and Automation Status.
  • Notification: No message for routine activity. A reminder is generated only if the next action is missing or overdue.
  • Exception: An activity with an invalid relationship is logged without modifying another Referral.

Completed Tasks and past Events can update Last Activity At. Open Tasks provide candidate Next Action Dates. If several open Tasks exist, Make writes the earliest due date. A Task marked Partner Update Activity updates Last Partner Update only after the user records that the communication occurred.

Automation 5: Closed Won and Fee Draft Creation

  • Trigger: An attributed Opportunity changes to Closed Won.
  • Conditions: Fee Eligibility is not No, a Partner and Referral exist, and no Referral Fee exists for the Fee Key.
  • Actions: Build the Fee Key, copy the partner’s agreement terms, create a draft fee, update Referral status, and assign finance review.
  • Fields updated: Fee basis type snapshot, fee rate snapshot, currency, status, approval fields, automation fields, and tracker row.
  • Notification: Finance receives a Slack notification with the Salesforce Fee link.
  • Exception: Missing agreement, rate, currency, or eligible revenue creates an exception Task and places the fee in Awaiting Basis or Disputed.

The Fee Key uses the Referral ID and Opportunity ID. Make searches this exact key before creating a Referral Fee. Changing the Partner Profile’s current rate does not alter an existing fee because the fee stores a snapshot.

Automation 6: Fee Status Synchronization

  • Trigger: A Referral Fee status or approval field changes.
  • Conditions: The record has a valid Fee Key.
  • Actions: Update Fee_Tracker, update the parent Referral where appropriate, and notify the next owner.
  • Fields updated: Fee status, approval dates, paid date, payment reference, and synchronization timestamp.
  • Notification: Attribution reviewer, finance approver, or partner manager is notified according to status.
  • Exception: Paid without evidence, Approved without required approvals, or inconsistent currency is blocked by Salesforce validation and logged by Make.

Step 6: Add Approvals, Reminders, and Escalations

Referral acceptance and fee approval use different controls.

Referral acceptance

  1. Revenue operations validates the partner, submission, duplicate search, and consent.
  2. The partner development manager resolves any commercial attribution conflict.
  3. An authorized reviewer sets Approval Status to Approved and Referral Status to Accepted.
  4. Make creates or links the Lead.

Validation and commercial review can occur in parallel, but the Referral cannot enter Accepted until both are complete. A rejection requires a controlled reason. Return for More Information changes the record to Needs Review and assigns the partner manager a communication task.

Fee approval

  1. Revenue operations confirms that the Opportunity is correctly attributed.
  2. Finance confirms the fee basis amount, basis type, currency, and agreement status.
  3. The finance coordinator approves fees at or below the representative internal threshold of $2,500.
  4. A finance manager provides an additional approval above $2,500.
  5. After payment is executed through the company’s normal financial controls, finance records the payment reference and paid date.

The $2,500 threshold is a representative assumption, not a recommended universal policy. Each business should use its approved financial delegation rules.

Make searches each business day for items awaiting action:

  • Submitted for one business day: remind revenue operations.
  • Needs Review for three business days: escalate to the partner manager.
  • Accepted without a Lead ID for 15 minutes: create an integration exception.
  • Open Opportunity without a next action: notify the sales owner.
  • Next Action Date overdue by one day: remind the owner.
  • Overdue by three business days: notify the owner’s manager or designated backup.
  • Fee awaiting finance review for two business days: remind finance.
  • Fee awaiting finance review for four business days: escalate to the finance manager.

An unavailable approver should have a named delegate recorded in an approved delegation field or internal schedule. Make sends the task to the delegate only during the approved delegation period. It does not infer absence from Slack status.

Before creating an exception Task, Make searches for an open Task with the same Referral and Exception Key. If one exists, it updates the due date or reminder count rather than creating another task.

Step 7: Add Documents and File Management

Partner agreements are stored as Salesforce Files related to the Partner Profile. Referral-specific supporting material is related to the Referral. Documents should not be kept solely as public links in the Google Form response.

  • Folder and relationship model: Partner agreement files belong to the Partner Profile. Deal-specific evidence belongs to the Referral or Opportunity.
  • Naming convention: PartnerCode_DocumentType_EffectiveDate_Version, such as ACCT-014_ReferralAgreement_2026-01-01_v2.pdf.
  • Access: Partner program administrators and authorized finance users can access agreements. Sales users receive only the access required for their role.
  • Version control: Upload a new version rather than replacing evidence without history.
  • Retention: Retain agreements, approvals, and payment evidence according to contractual, financial, privacy, and legal policies.
  • Archiving: Mark expired agreements and remove them from active operating views without deleting required evidence.
  • Missing documents: Agreement Status cannot become Active until required evidence is present and reviewed.
  • Duplicate documents: Check partner code, document type, effective date, and version before upload.
  • File size: Keep files within Salesforce and organizational limits. Large source files should use an approved document repository with controlled access.
  • Failed upload: Record the failure on the Referral or Partner Profile and create a document exception Task.

Make does not need to copy every document into Google Drive. Avoiding duplicate storage reduces access and retention conflicts.

Step 8: Add Reporting and Operational Views

Create authoritative Salesforce reports for:

  • New referrals by partner and month.
  • Submissions awaiting review.
  • Accepted referrals without Leads.
  • Referrals by owner and status.
  • Open Opportunities with partner attribution.
  • Opportunity pipeline and Closed Won amount by partner.
  • Referral conversion from submission to accepted, Opportunity, and Closed Won.
  • Fees awaiting basis, approval, or payment.
  • Paid fees by partner and period.
  • Referrals without recent activity.
  • Attribution conflicts and other exceptions.
  • Automation records in Exception or Retry Scheduled status.

Google Sheets provides an operational view for users who need a cross-system working tracker but do not maintain Salesforce reports. Referral_Tracker filters include New, Awaiting Action, Overdue, Incomplete, Exceptions, Declined, By Owner, Upcoming Deadlines, Recently Completed, and Manual Review.

Opportunity_Events supports pivot tables for volume and value by stage, partner, owner, and month. Fee_Tracker supports counts and amounts by fee status. Automation_Errors reports failures by scenario, system, error category, retry count, and age.

Make updates event-driven rows throughout the day and runs a full reconciliation once daily. The marketing operations analyst owns report definitions. Revenue operations owns source-data quality. Finance owns fee-status accuracy.

Alert thresholds should be operationally meaningful. For this scenario, alerts are raised when more than three records remain in Automation Exception for over one business day, when an active referral has no owner, or when a Closed Won opportunity lacks a fee eligibility decision.

Step 9: Add Security and Governance Controls

  • Use least-privilege Salesforce permission sets rather than broad administrator access.
  • Restrict Google Sheets to revenue operations, selected marketing operations users, and the integration account.
  • Protect system columns and calculated ranges from manual editing.
  • Keep personal contact details and commercial amounts out of broad Slack channels. Slack messages should link to Salesforce rather than reproduce sensitive notes.
  • Store OAuth tokens and API keys only in approved connection or secret-management facilities.
  • Review Salesforce field-level security for fee rates, payment references, partner agreements, and prospect contact data.
  • Disable public sharing for operational Sheets and documents.
  • Remove former employees from Salesforce, Google Workspace, Slack, and Make promptly.
  • Review Make scenario history and Salesforce field history as audit evidence, while recognizing that integration logs do not replace formal financial records.
  • Apply the organization’s privacy notice, retention policy, and lawful-use rules to prospect data supplied by partners.
  • Do not send regulated, privileged, authentication, payment-card, health, or unnecessary personal data to an optional AI service.
  • Require human approval for attribution conflicts, referral rejection, fee approval, payment status, and external partner updates.

The design should be reviewed for applicable contractual, privacy, tax, accounting, anti-bribery, and industry requirements. The automation records process evidence but does not determine legal or tax treatment.

Step 10: Deploy and Test

  1. Build Salesforce objects and fields in a sandbox or controlled development environment.
  2. Create separate development Google Form and Sheets files.
  3. Clone Make scenarios into a development folder and connect only test systems.
  4. Prepare sample partners, referrals, Leads, Opportunities, Tasks, Events, and Fee records.
  5. Run unit tests for each scenario route, including success, duplicate, validation, and connector failure cases.
  6. Run end-to-end tests using test users from sales, partner management, revenue operations, and finance.
  7. Complete user acceptance testing with at least one sample for each fee basis and approval threshold.
  8. Pilot with three internal partner managers or a limited set of partner submissions for two weeks.
  9. Reconcile every pilot Referral against Salesforce, Sheets, and Make execution history.
  10. Document field definitions, ownership, recovery procedures, and approval responsibilities.
  11. Schedule production activation outside a high-volume period.
  12. Pause the old form or label it clearly so partners cannot submit to both forms.
  13. Enable production scenarios in sequence: intake, Referral to Lead, Opportunity sync, activity sync, fee sync, reminders, and reconciliation.
  14. Monitor the first production runs and compare record counts after each stage.
  15. Maintain a rollback plan that pauses Make scenarios, preserves form responses, and returns staff to Salesforce-only manual processing while errors are corrected.

Launch communication should tell staff which system owns each field, how to report an error, what not to edit in Google Sheets, and which decisions still require human approval.

Code and Configuration

No custom script is required for the core implementation. Google Forms, Salesforce, Make, Google Sheets, and Slack provide the necessary native triggers, record operations, routing, and notifications. Avoiding custom code reduces the number of deployment components, but the native configuration still requires testing and maintenance.

Salesforce formulas and validation

Create Calculated Fee as a Salesforce Currency formula field. This version applies when Fee Rate Snapshot is a Percent field and Fee Basis Amount is Currency:

ROUND(Fee_Basis_Amount__c * Fee_Rate_Snapshot__c, 2)

The formula is placed on Referral_Fee__c. It requires no credentials and runs whenever Salesforce evaluates the record. Test it with rates such as 7.5 percent and known basis amounts. If the result is 100 times too large or small, inspect how the percentage field was defined and entered.

Create a validation rule that prevents Approved status without basis and approval evidence:

AND(
  ISPICKVAL(Status__c, "Approved"),
  OR(
    ISBLANK(Fee_Basis_Amount__c),
    ISBLANK(Fee_Rate_Snapshot__c),
    ISBLANK(Finance_Approved_Date__c),
    ISBLANK(Finance_Approver__c)
  )
)

Create another validation rule that prevents Paid status without payment evidence:

AND(
  ISPICKVAL(Status__c, "Paid"),
  OR(
    ISBLANK(Paid_Date__c),
    ISBLANK(Payment_Reference__c)
  )
)

These rules are placed in the Referral Fee object’s validation-rule configuration. They run for user and integration updates. Test valid and invalid status changes using users with the intended permissions. A failed Make update should be captured as a business validation error, not repeatedly retried as a transient outage.

Create Days Since Partner Update as a Number formula on Referral:

IF(
  ISBLANK(Last_Partner_Update__c),
  TODAY() - DATEVALUE(CreatedDate),
  TODAY() - Last_Partner_Update__c
)

This formula has no external dependencies. It supports reports and reminder searches. Confirm that date interpretation matches the Salesforce organization’s timezone and business process.

Google Sheets calculated columns

In Referral_Tracker, assume column A is Referral ID, B is Created Date, H is Referral Status, M is Next Action Date, P is Closed Date, W is Aging Days, and X is Follow-Up Flag.

Place this formula in W2:

=ARRAYFORMULA(IF(A2:A="","",IF(P2:P<>"",P2:P-B2:B,TODAY()-B2:B)))

Place this formula in X2:

=ARRAYFORMULA(
  IF(
    A2:A="",
    "",
    IF(
      (M2:M<>"")*
      (M2:M<TODAY())*
      (H2:H<>"Closed Lost")*
      (H2:H<>"Declined")*
      (H2:H<>"Fee Paid"),
      "OVERDUE",
      ""
    )
  )
)

These formulas run in Google Sheets and require no API credentials. Make must write actual date values or consistently parseable ISO dates. Protect the formula columns. Test with blank dates, future dates, terminal statuses, and dates in the past. Text-formatted dates are the most likely cause of incorrect results.

Make filters and transformations

Core Make route configuration
Route Filter Transformation or action
Valid partner code Trimmed code matches uppercase letters, numbers, and hyphens with length four to 20. Convert to uppercase before Salesforce lookup.
Exact replay Referral exists with the same Submission Key. Write existing Referral ID to the row and stop.
Possible duplicate Matching normalized domain exists inside the applicable attribution window. Create or update a Needs Review record and exception Task.
Accepted Referral Status is Accepted, Approval Status is Approved, and Lead ID is empty. Search Lead by Referral Key before create.
Material Opportunity change Stage, attribution, amount, close date, fee eligibility, or owner changed. Update Salesforce Referral and Sheets tracker.
Fee draft Opportunity is Closed Won, Fee Eligibility is not No, and Fee Key does not exist. Snapshot terms and create Referral Fee.
Transient retry Connector timeout, rate limit, or server error. Record Retry Scheduled and use the controlled recovery route.
Permanent review Invalid value, failed validation rule, missing partner, or attribution conflict. Create an exception, do not retry unchanged data.

The Slack message uses mapped values rather than code. Configure it in the Slack message action and keep it concise:

Referral {{Referral_Number}} requires review.
Status: {{Referral_Status}}
Owner: {{Owner_Name}}
Exception: {{Exception_Type}}
Due date: {{Due_Date}}
Salesforce record: {{Referral_URL}}

The message runs after the Salesforce record and tracker have been updated. It requires the secured Slack connection and permission to post to the selected channel. Test it in a private test channel. If a user mention fails, fall back to the owner’s displayed name and record the notification failure without reversing the CRM update.

Native deployment configuration

  1. Configure each scenario connection using OAuth and a non-personal integration identity.
  2. Set production scenarios to process records sequentially where concurrent writes could create duplicates.
  3. Enable incomplete execution storage where appropriate and permitted.
  4. Add an error route to every module that writes to Salesforce, Google Sheets, or Slack.
  5. Write sanitized errors to Automation_Errors with Scenario, Source Record Key, Destination, HTTP or Connector Category, Retry Count, Next Retry At, and Resolution Status.
  6. Set a maximum of three automated recovery attempts for transient failures. Use representative delays of one, five, and fifteen minutes, subject to platform limits and organizational policy.
  7. Do not retry validation failures until a user corrects the record.
  8. Record the last successful cursor in Control only after all critical writes for the event have succeeded.
  9. Activate scenarios in dependency order and inspect the first executions in Make history.

Failure Handling and Operational Reliability

Failure responses and recovery ownership
Failure Automated response Manual recovery Owner
Missing required form data Mark Needs Review and do not create a Lead. Contact the partner and complete the Salesforce Referral. Partner manager
Duplicate form event Find the existing Submission Key and return its Referral ID. No action unless the source row differs. Revenue operations
Possible duplicate prospect Create an attribution exception Task. Compare dates, domains, contacts, and agreement rules. Partner manager
Invalid partner code Create a Needs Review record without an accepted Partner lookup. Correct the code or decline the submission. Revenue operations
Salesforce validation error Record a permanent business error and stop retries. Correct the missing or invalid value, then request replay. Record owner
Authentication expiry Pause affected writes and log the connector failure. Reauthorize the connection and replay from the error register. Automation administrator
Salesforce or Google API outage Set Retry Scheduled and retry according to policy. Replay unresolved events after service recovery. Automation administrator
Rate limit Delay the bundle, reduce polling, and retry. Review scenario frequency and operation volume. Automation administrator
Partial completion Use stored IDs to resume from the last successful critical step. Compare Salesforce, Sheets, and Make execution history. Revenue operations
Failed tracker update Keep Salesforce as authoritative and add an error entry. Run the reconciliation scenario or upsert the row manually. Revenue operations
Failed Slack notification Do not roll back Salesforce. Mark Notification Failed. Review Slack connection and resend if still relevant. Automation administrator
Invalid email address Block automatic Lead creation when required contact data is unusable. Correct the address or continue without it under policy. Sales owner
Unavailable approver Use a documented active delegate or escalate after the time limit. Reassign approval with an audit note. Department manager
Failed file upload Create a document exception and retain the source reference. Upload through the approved Salesforce interface. Partner manager
Missing fee terms Create Fee in Awaiting Basis or Disputed status. Review the signed agreement and enter approved terms. Finance and partner manager
Timeout with uncertain create result Search the unique key before retrying. Link the existing record if it was created successfully. Automation administrator

Automation_Errors acts as a controlled dead-letter register for events that cannot complete automatically. It stores no credentials and should contain only the minimum data needed for recovery.

Each error row includes the idempotency key, source record, failed destination, sanitized message, retry count, next retry time, owner, and resolution status. A recovery scenario scans only rows marked Retry Requested or Retry Scheduled.

Idempotency is enforced at several levels:

  • Submission Key is unique on Referral.
  • Referral Key is preserved from Lead to Opportunity.
  • Fee Key is unique per Referral and Opportunity.
  • Exception Key is searched before a new Task is created.
  • Tracker rows are updated by Salesforce ID, not by row position.

A daily reconciliation compares accepted Referrals without Lead IDs, Opportunities with Referral Keys but no Referral lookup, Closed Won Opportunities without a fee eligibility decision, Referral Fees missing from Fee_Tracker, and unresolved automation errors. Staff can therefore identify silent partial failures even when no user reports a problem.

A Complete Example

An authorized contact at an accounting partner submits a referral for a regional packaging distributor.

Partner code
ACCT-014
Prospect organization
Regional Packaging Distributor
Prospect domain
regional-packaging.example
Service interest
Technology Enablement
Expected timing
Within 30 days
Submission time
2026-07-15 14:24:55 UTC

Google Forms writes the answers to row 237 of Form_Responses. Make creates Submission Key FORM-20260715T142455Z-R000237.

Make validates ACCT-014 and finds one active Salesforce Partner Profile. The profile has a 90-day attribution window, a fee basis of Eligible Collected Revenue, a 7.5 percent rate, and a default sales owner.

The domain is normalized to regional-packaging.example. No exact Submission Key exists. A search finds no open or recent Referral for that domain, so Make creates Salesforce Referral REF-000418 and receives its Salesforce record ID.

Make writes the Salesforce ID and REF-000418 to the form-response row, creates the Referral_Tracker row, and posts a limited Slack notification to the referral operations channel.

Revenue operations reviews the consent, prospect details, and duplicate result. The partner development manager confirms the referral terms. The Referral becomes Accepted.

Make searches for an existing Lead with the Referral Key. None exists, so it creates a Lead assigned to the partner profile’s default sales owner and stores the returned Lead ID on REF-000418.

The salesperson qualifies and converts the Lead. Salesforce maps the Referral Key to the new Opportunity. The Opportunity-change scenario finds REF-000418, populates the Referral lookup on the Opportunity, changes the Referral to Open Opportunity, and updates Opportunity_Events.

The salesperson logs a completed discovery Task and creates a follow-up Task due in five days. The activity scenario updates Last Activity At and Next Action Date. No exception Task is created.

After the proposal is accepted, the Opportunity becomes Closed Won with a contract value of $48,000. Eligible Collected Revenue is initially blank. Make creates Fee record FEE-000087 with the fee basis and rate snapshots, but places it in Awaiting Basis. It also creates an exception Task for finance.

Finance confirms that $40,000 is eligible collected revenue. The Salesforce formula calculates a proposed fee of $3,000:

Proposed fee: $40,000 × 7.5 percent = $3,000

Revenue operations confirms attribution. Because the fee exceeds the representative $2,500 threshold, both the finance coordinator and finance manager approve it sequentially. Make updates Fee_Tracker after each status change.

Payment occurs through the consultancy’s normal financial process. Finance records a sample payment reference and paid date in Salesforce. Validation confirms that the evidence is present before allowing Paid status. REF-000418 changes to Fee Paid, the tracker is updated, and the partner manager receives a Slack task to send a reviewed partner update.

If the Closed Won event is delivered again, Make finds Fee Key REF-000418 plus the Opportunity ID and updates FEE-000087 rather than creating a second fee.

Implementation Cost

All amounts below are representative planning assumptions, not verified client prices or results. Actual software contracts, internal rates, implementation scope, taxes, currencies, and support needs will vary.

Representative one-time internal implementation labour
Activity Hours Assumed rate Estimated cost
Discovery and workflow design 12 $65 per hour $780
Salesforce configuration 24 $65 per hour $1,560
Google Form and Sheets setup 10 $65 per hour $650
Make scenarios and error routes 30 $65 per hour $1,950
Testing and user acceptance 18 $65 per hour $1,170
Training 4 $65 per hour $260
Documentation and handover 6 $65 per hour $390
Total internal implementation 104 $6,760
Representative recurring and optional cost assumptions
Category Assumption Estimated amount
Existing Salesforce, Google Workspace, and Slack Existing contracts support required features. Their full license costs are excluded from the incremental calculation. $0 incremental assumption
Make automation capacity Budget allowance for required operations and scenarios, subject to actual plan and usage. $90 per month
Monthly maintenance labour Four hours at a loaded operating rate of $48 per hour. $192 per month
Optional AI usage Representative low-volume API consumption allowance. $18 per month
Optional professional implementation Representative alternative to internal implementation, depending on scope and readiness. $12,000 to $18,000 one time

The optional professional implementation range should not be added to the internal labour estimate if an organization is comparing alternative delivery models. A blended project may use part of each.

Estimated Time and Cost Savings

The following model uses conservative representative assumptions:

  • 45 referral submissions per month.
  • 32 minutes of current handling time per referral.
  • 10 minutes of routine handling after core automation.
  • 12 percent exception rate.
  • 12 minutes of manual handling per exception.
  • Four hours of monthly maintenance.
  • $48 loaded hourly labour cost.
  • $90 monthly recurring automation cost.
  • $6,760 one-time internal implementation cost.

Current monthly labour hours: Monthly volume × current minutes per record ÷ 60

45 × 32 ÷ 60 = 24.00 hours

New monthly labour hours: Monthly volume × new minutes per record ÷ 60, plus exception handling and maintenance

Routine work: 45 × 10 ÷ 60 = 7.50 hours

Exception handling: 45 × 12 percent × 12 ÷ 60 = 1.08 hours

Maintenance: 4.00 hours

Total new monthly labour: 7.50 + 1.08 + 4.00 = 12.58 hours

Monthly hours recovered: Current monthly labour hours minus new monthly labour hours

24.00 – 12.58 = 11.42 hours

Estimated monthly labour value: Monthly hours recovered × loaded hourly labour cost

11.42 × $48 = $548.16

Net estimated monthly value: Monthly labour value minus recurring tool costs

$548.16 – $90 = $458.16

Estimated payback period: One-time implementation cost ÷ net estimated monthly value

$6,760 ÷ $458.16 = approximately 14.8 months

Representative savings summary
Measure Estimate
Current monthly labour 24.00 hours
New monthly labour including exceptions and maintenance 12.58 hours
Monthly hours recovered 11.42 hours
Monthly labour value $548.16
Recurring automation cost $90.00
Net estimated monthly value $458.16
Estimated payback 14.8 months

Recovered time does not automatically reduce payroll. It may create additional capacity, shorten response times, reduce overtime, remove repetitive administration, support higher referral volume, and reduce dependency on one employee.

Non-financial benefits include clearer ownership, more consistent partner communication, better attribution evidence, fewer incomplete records, improved reporting, a controlled fee history, and faster identification of integration failures.

Readers should replace the referral volume, current time, new time, exception rate, review time, maintenance time, labour rate, software costs, and implementation cost with their own measured values.

Adding AI to the Automation

AI should be added only after the intake, validation, attribution, synchronization, fee calculation, and exception workflow operate reliably.

Most controls in this system do not require AI. Partner-code validation, required fields, exact Submission Key matching, fee formulas, approval thresholds, status transitions, permission checks, and payment evidence should remain rule-based.

Potential AI uses include summarizing referral context, suggesting a service line from unstructured notes, identifying likely missing context, comparing free-text descriptions for possible duplication, drafting an internal briefing, and preparing a partner-update draft for human review.

The core automation creates the record, moves data between systems, sends reminders, and calculates proposed fees. AI adds value only where staff must interpret unstructured language.

The recommended enhancement is an AI-generated internal referral summary with a suggested service-line classification and missing-information list. It does not accept, reject, prioritize, attribute, or price the referral.

Optional AI automation configuration
Component Configuration
Trigger Salesforce Referral has AI Status Queued, non-empty context, and no prohibited-data flag.
AI input Prospect industry description, selected service interest, expected timing, and sanitized referral context.
Connection Approved AI provider connection in Make. Store YOUR_API_KEY in the secured connection, never in Sheets.
Output Structured JSON matching the defined schema.
Validation Parseable JSON, allowed enum, confidence from zero to one, length limits, and all required keys.
Record update Write suggestions to separate AI fields and set AI Status to Ready for Review.
Human review Sales or revenue operations accepts, edits, or rejects the suggestions.
Low confidence Confidence below 0.70 sets AI Status to Human Review Required.
Failure Leave operational fields unchanged and use the original human review process.

Place the following system instruction in the AI module’s system-instruction field:

You assist a consultancy's revenue operations team with referral intake.

Summarize only the information supplied. Do not invent facts, contacts, needs, budgets, timing, relationships, or commercial terms.

You may suggest a service-line category and identify missing information. You must not accept or reject the referral, determine final attribution, assign final priority, approve a fee, provide legal conclusions, or draft an external commitment.

Return only JSON that matches the provided schema. Use concise business language. If information is uncertain, state that it is unknown and lower the confidence score.

Place the following reusable user prompt in the user-message field and map the placeholders from Salesforce:

Review this referral submission.

Referral ID: {{Referral_Number}}
Selected service interest: {{Service_Interest}}
Prospect industry description: {{Prospect_Industry_Description}}
Expected timing: {{Expected_Timing}}
Referral context: {{Sanitized_Referral_Context}}

Tasks:
1. Write an internal summary of no more than 80 words.
2. Suggest one allowed service-line category.
3. List information that appears necessary but missing.
4. List possible duplicate signals stated in the input, without deciding that a duplicate exists.
5. Return a confidence score from 0 to 1.
6. Set review_required to true in all cases.

Configure structured output against this JSON schema. The AI connector must support schema-constrained output, or Make must parse and validate the returned JSON before any Salesforce update:

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "summary": {
      "type": "string",
      "maxLength": 600
    },
    "suggested_service_line": {
      "type": "string",
      "enum": [
        "Operations",
        "Data and Analytics",
        "Technology Enablement",
        "Other"
      ]
    },
    "missing_information": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 160
      },
      "maxItems": 8
    },
    "possible_duplicate_signals": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 160
      },
      "maxItems": 5
    },
    "confidence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1
    },
    "review_required": {
      "type": "boolean",
      "const": true
    }
  },
  "required": [
    "summary",
    "suggested_service_line",
    "missing_information",
    "possible_duplicate_signals",
    "confidence",
    "review_required"
  ]
}

The prompt and schema are placed in the approved AI module in Make. The module requires a secured provider connection, permission to read the selected sanitized Salesforce fields, and write access only to separate AI suggestion fields.

Test with fictional referrals containing complete details, sparse context, conflicting language, prompt-injection text, and prohibited-data markers. If JSON parsing fails, an enum is invalid, or output exceeds a field limit, set AI Status to Invalid Output and leave the human workflow unchanged.

Do not send payment data, agreement documents, confidential proposal content, authentication data, regulated personal information, or sensitive client records to the model. Log the model identifier, request time, Referral ID, validation result, approximate usage, reviewer, and final disposition. Do not store hidden reasoning or request chain-of-thought output.

Benefits of the AI Enhancement

  • Reduces the time spent reading long referral narratives.
  • Produces a consistent internal summary structure.
  • Suggests a service line when the partner used broad language.
  • Highlights information that may need clarification.
  • Surfaces duplicate indicators contained in unstructured text.
  • Creates fields that can support later theme and service-interest reporting.

These are AI-specific benefits. Record creation, duplicate event prevention, Salesforce attribution, opportunity synchronization, fee calculation, reminders, and audit fields already exist in the core automation without AI.

What Remains Rule-Based or Human-Controlled

  • Required fields: Form and Salesforce validation provide reliable deterministic checks.
  • Exact duplicate events: Unique Submission Keys are more dependable than AI.
  • Partner validity: The active Partner Profile determines eligibility.
  • Final duplicate decision: A person reviews dates, agreements, relationships, and account history.
  • Referral acceptance or rejection: This can affect a partner relationship and must remain human-controlled.
  • Final attribution: Commercial agreements and evidence require accountable review.
  • Opportunity stage and value: The sales owner remains responsible for CRM accuracy.
  • Fee basis and rate: Approved agreement terms and finance evidence determine the calculation.
  • Fee approval and payment release: Financial controls require authorized human approval.
  • Partner communications: A person confirms that the update is accurate and does not disclose restricted information.
  • Legal, tax, or policy exceptions: AI output cannot replace qualified review.

Estimating the Additional Value of AI

The representative comparison uses 45 referrals per month:

Manual, automated, and AI-assisted handling assumptions
Process Average human time per referral Notes
Original manual process 32 minutes Includes copying, checking, follow-up, and tracker work.
Core automation without AI 10 minutes Includes review and exceptions but excludes monthly maintenance.
AI-assisted routine work 7.00 minutes AI prepares the summary and suggestions.
Mandatory AI review 1.20 minutes Every output is reviewed.
Expected correction allowance 0.30 minutes 15 percent correction rate at two minutes per correction.
Expected failure allowance 0.09 minutes 3 percent failure rate at three additional minutes.
Total with AI 8.59 minutes Human involvement remains required.

Additional time recovered: (10.00 – 8.59) × 45 ÷ 60 = 1.06 hours per month

Additional labour value: 1.06 × $48 = $50.88 per month

Less representative AI usage cost: $50.88 – $18 = $32.88 net additional monthly value

The direct financial value is modest at this volume. The enhancement may still be useful for consistent summaries and reporting, but it should not be adopted on the assumption that AI will eliminate review or errors. Its value becomes more material if narrative volume or average reading time increases.

Testing Checklist

Use fictional sample data in the test environment before processing real partner or prospect information.

End-to-end testing checklist
Test Expected result
Normal submission One Referral is created, IDs return to Sheets, tracker updates, and Slack notifies the reviewer.
Missing required field Submission is blocked by the form or enters Needs Review without Lead creation.
Invalid field value Validation records a permanent exception and requests correction.
Duplicate submission Possible duplicate is presented for human attribution review.
Duplicate event The existing Submission Key is found and no second Referral is created.
Failed authentication Scenario logs the connection failure and does not lose the source event.
Expired credential Administrator can reauthorize and safely replay the event.
Failed API request Transient failure follows retry policy; permanent failure enters the error register.
Unavailable approver Approved delegation or escalation applies with audit evidence.
Referral rejection Reason and reviewer are required; no Lead is created.
Reassignment New owner receives the task and tracker reflects the current owner.
Overdue item Follow-Up Flag and Slack reminder appear at the correct time.
Reminder One reminder is sent without creating duplicate Tasks.
Escalation Escalation occurs only after the defined time limit.
Failed file upload Document exception is recorded and the core Referral remains available.
Failed document creation No false Agreement Status is applied; manual upload is requested.
Failed notification Salesforce remains updated and Notification Failed is visible.
Unauthorized user Restricted fee, approval, or document fields cannot be accessed or changed.
Lead creation timeout Recovery searches Referral Key before creating another Lead.
Opportunity without Referral Key It is not attributed automatically and enters the attribution review report where relevant.
Closed Won without eligible revenue Fee enters Awaiting Basis and finance receives an exception Task.
Duplicate Closed Won event Existing Fee Key is found and no second fee is created.
Approval below threshold Required finance approval completes according to policy.
Approval above threshold Additional finance manager approval is required.
Paid without reference Salesforce validation blocks the status change.
Malformed AI output No suggestion fields are updated; AI Status becomes Invalid Output.
Inaccurate AI output Reviewer rejects or edits it without affecting operational status.
AI service failure Core workflow continues using normal human review.
Successful completion Referral, Opportunity, Fee, tracker, approvals, and payment evidence agree.
Correct reporting Salesforce and Sheets totals reconcile for the test period.
Correct audit record History shows status, owner, approval, fee, and payment changes.
Correct retry behavior Transient errors stop after the maximum attempts and remain recoverable.

Ongoing Maintenance

The revenue operations manager is the primary business owner. The marketing operations analyst is the backup operational owner. An automation administrator owns Make connections and technical recovery. Finance owns fee-control definitions.

Representative maintenance schedule
Frequency Activity Owner
Daily Review failed runs, unresolved Automation_Errors, accepted referrals without Leads, and Closed Won fee exceptions. Revenue operations
Weekly Review overdue referrals, unpaid approved fees, duplicate exceptions, and Slack notification failures. Revenue operations and finance
Monthly Reconcile Salesforce, Sheets, Make operation usage, fee totals, and partner attribution reports. Marketing operations and finance
Monthly Sample AI outputs, corrections, confidence scores, failures, and prohibited-data controls if AI is enabled. AI process owner
Quarterly Review user permissions, shared links, integration users, partner contacts, delegates, and inactive accounts. System administrators
Quarterly Retest one normal and one failure path for every production scenario. Automation administrator
Semi-annually Review fee rules, attribution windows, approval thresholds, retention, and document templates. Partner manager and finance
According to policy Rotate credentials, review API changes, test backups, archive old tracker rows, and remove former users. System administrators

Scenario changes should use version notes, peer review, test evidence, and a rollback copy. Documentation must be updated whenever fields, statuses, partner rules, approval thresholds, connectors, or error recovery steps change.

Monitor Salesforce API consumption, Make operations, Google Sheets size, Slack connection health, execution duration, retry volume, AI usage cost, and average exception age. Rising exception rates often indicate a data or process problem rather than a need for more retries.

When to Move to Dedicated Software

This implementation can remain appropriate while the program has manageable volume, straightforward fee rules, internal operating users, and limited partner self-service needs.

Consider dedicated partner relationship management, deal-registration, commission-management, or custom portal software when several of the following appear:

  • Referral volume grows beyond the practical capacity of scheduled synchronization and manual exception review.
  • Hundreds or thousands of partners require authenticated self-service.
  • Partners need to see approved deal status, documents, training, or payment history directly.
  • Multiple business units, regions, or currencies introduce complex attribution rules.
  • One referral can create many products, renewals, tiers, or split fee arrangements.
  • Regulatory or contractual requirements demand more formal approval, segregation of duties, or audit evidence.
  • Google Sheets performance or permissions become difficult to manage.
  • Integration maintenance consumes more time than the process saves.
  • Exception rates remain high despite process improvements.
  • Mobile, offline, or customer-facing portal requirements become important.
  • Advanced partner scoring, enablement, incentive management, tax documentation, or payment integration is required.
  • The organization needs formal vendor support and service commitments for the complete referral process.
  • Security risk increases because too many systems contain duplicated sensitive information.

A dedicated platform is not automatically necessary at a particular record count. The decision should consider process complexity, exception rates, control requirements, integration reliability, administration effort, and partner experience.

Implementation Checklist

  • Confirm referral, attribution, update, and fee-tracking requirements.
  • Document which decisions remain human-controlled.
  • Select the intake, system of record, automation, notification, storage, and reporting tools.
  • Confirm Salesforce, Google Workspace, Make, and Slack account capabilities.
  • Create non-personal integration connections and least-privilege permissions.
  • Define Partner Profile, Referral, Opportunity, Activity, and Referral Fee fields.
  • Create unique Submission Key, Referral Key, and Fee Key controls.
  • Build and validate the Google Form intake.
  • Protect the response sheet and working-tracker columns.
  • Create Salesforce objects, relationships, statuses, formulas, validation, and history tracking.
  • Configure field mapping between Forms, Sheets, Salesforce, and Slack.
  • Build intake, Lead creation, Opportunity, activity, fee, reminder, and reconciliation scenarios.
  • Configure duplicate checks before every create action.
  • Add ownership, reassignment, and fallback rules.
  • Configure approval thresholds, sequential approvals, reminders, and escalations.
  • Define unavailable-approver and delegation handling.
  • Configure document storage, naming, permissions, versioning, retention, and failed-upload handling.
  • Create Salesforce reports and Google Sheets operational views.
  • Add Automation_Errors and controlled manual-recovery procedures.
  • Configure transient retries and permanent-error routing.
  • Restrict sensitive fields, shared links, credentials, and Slack content.
  • Test normal, duplicate, failure, approval, escalation, document, reporting, and audit paths.
  • Run a pilot with fictional or controlled sample data.
  • Document deployment, monitoring, rollback, and user-support procedures.
  • Replace representative implementation and savings assumptions with measured figures.
  • Add AI only after the core automation is reliable.
  • Validate AI prompts, schema, data restrictions, human review, fallback, and cost monitoring.
  • Name a primary maintenance owner and backup owner.
  • Schedule permission, credential, integration, report, and exception reviews.
  • Define the volume, complexity, security, and portal criteria that would justify dedicated software.

You need a similar solution?

Get a FREE
Proof of Concept
& Consultation

No Cost, No Commitment!