Setup guide

Make.com setup guide

# The Loyalty Tax Engine - Make.com setup guide

About twenty-five minutes for a native CRM. Longer if you are wiring HTTP for an API CRM. Zapier users: stop here and open `ZAPIER-Setup-Guide.md`. Zapier cannot import these files.

Australian English. Existing clients only. Default: the engine emails you, not the client.

## What you will have at the end

Two Make scenarios running on a weekday morning (or a weekly schedule if you prefer a quieter desk):

1. A **watch** that reads your CRM (or the Google Sheet) and posts a canonical payload.
2. An **outreach** scenario that runs the same middle for every CRM: consent gate, gap gate, OpenAI draft, broker email, CRM note, stamp.

Only the first and last steps touch the CRM. Do not rebuild the middle for each system.

## Before you open Make

1. Create or map the fields in `05-templates/CRM-Field-Map.csv`. At minimum you need current rate, new-money rate, gap bps, loyalty state and last loyalty touch.
2. Fill rates and compute gap: `(current − new-money) × 100`. Default gate is >= 25 bps.
3. Open crm/CRM-INDEX.html in a browser and read the HTML file for your CRM (fields, watch file, last-step swap). CRM-SCENARIOS.md is a short pointer only.
4. Add yourself as a test client with a gap at or above the threshold. Mark yourself an existing client. State `due` or `queued`.
5. Have an OpenAI API key and a real mailbox at your business domain.

If the fields are missing, the imported modules show as invalid. Create them first.

## Pick your watch file

| Your CRM | File | Connection type |
|---|---|---|
| HubSpot | `02-make-blueprints/01-TBT-Loyalty-Tax-Watch-HubSpot.blueprint.json` | Native sign-in |
| Salesforce | `01b-TBT-Loyalty-Tax-Watch-Salesforce.blueprint.json` | Native sign-in |
| Pipedrive | `01c-TBT-Loyalty-Tax-Watch-Pipedrive.blueprint.json` | Native sign-in |
| Zoho CRM | `01d-TBT-Loyalty-Tax-Watch-Zoho.blueprint.json` | Native sign-in |
| ActivePipe | `01e-TBT-Loyalty-Tax-Watch-GoogleSheets-Bridge.blueprint.json` | Sheet export |
| BrokerEngine | `01e` (same file) | Sheet export |
| AFG Suite360 | `01e` (same file) | Sheet export |
| Salestrekker | No watch file. HTTP + `02-notes.md`, or `01e` until the aggregator grants access. | API |
| Connective | Same as Salestrekker | API |
| LMG MyCRM | Same as Salestrekker | API |
| Effi | Same as Salestrekker | API |
| Finsure Infynity | Same as Salestrekker | API |

Everyone also imports `02-TBT-Loyalty-Tax-Outreach.blueprint.json`.

## Step 1. Import the outreach scenario first

You need its webhook URL before the watch can post.

1. In Make, click **Create a new scenario**.
2. Click the three dots (bottom centre) → **Import Blueprint**.
3. Choose `02-TBT-Loyalty-Tax-Outreach.blueprint.json`.
4. The canvas should show nine modules: webhook, OpenAI (with the consent + gap filter), JSON parse, router, broker Gmail, client Gmail (off), then three HTTP modules labelled SWAP.
5. Click module 1 (the webhook). Click **Create a webhook** or **Add**. Copy the URL. It looks like `https://hook.make.com/...`.
6. Leave `auto_email_client` alone. The watch sends `false`. Module 6 will not run.

Save. Do not turn it on yet.

## Step 2. Connect OpenAI and Gmail on the outreach scenario

1. Click module 2. **Add** an OpenAI connection. Paste your API key. The model is `gpt-4o-mini`. Leave it unless you have a reason to change it.
2. Click module 5. **Add** a Gmail (or Google Email) connection for the mailbox that should receive broker drafts. This must be a mailbox you read.
3. Module 6 uses the same Gmail connection. You can connect it now so it is ready. The filter still holds it off.
4. Replace `[YOUR FIRST NAME]`, `[YOUR BUSINESS NAME]` and `[YOUR BROKER EMAIL]` later, in the watch payload. The outreach scenario reads them from the webhook.

## Step 3. Import the watch for your CRM

### Native: HubSpot, Salesforce, Pipedrive, Zoho CRM

1. Create a second scenario. Import the matching watch file.
2. Click module 1. Sign in.
- **HubSpot:** pick the portal that holds settled clients. Create the five properties before this sign-in if you have not.
- **Salesforce:** pick the org. Confirm the SOQL object is the one that has the rates (Contact by default). Create the `__c` fields first.
- **Pipedrive:** pick the company. Open Settings → Data fields, copy the hash for each custom field, and replace every `YOUR_*_HASH` in module 1 and module 2.
- **Zoho CRM:** pick the org. Module is Contacts. Change it if you store rates on Deals or a custom module.
3. Click module 2. Paste the outreach webhook URL into the URL field, replacing `https://hook.make.com/YOUR_OUTREACH_WEBHOOK`.
4. In the JSON body, replace:
- `[YOUR BROKER EMAIL]`
- `[YOUR FIRST NAME]`
- `[YOUR BUSINESS NAME]`
5. Leave `"auto_email_client": "false"`.

### Google Sheets bridge (ActivePipe / BrokerEngine / AFG Suite360 / fallback)

1. Copy `05-templates/Google-Sheet-Bridge-template.csv` into a Google Sheet. Keep the header row.
2. Export settled clients with current rate, new-money rate and gap into that sheet.
3. Import `01e-TBT-Loyalty-Tax-Watch-GoogleSheets-Bridge.blueprint.json`.
4. Sign in to Google Sheets. Pick the spreadsheet. Sheet name defaults to `Loyalty tax` — rename the tab or change the module to match.
5. Paste the outreach webhook URL. Replace broker placeholders.

### API CRMs

Follow `02-make-blueprints/02-notes.md`. Or use the sheet bridge until access is granted. Do not scrape a login.

## Step 4. Swap the last three modules on the outreach scenario

Modules 7, 8 and 9 are HTTP placeholders labelled SWAP. Replace them with your CRM's native Create Task, Create Note, and Update Record (stamp) modules — or keep HTTP if you are on an API CRM.

Stamp body:

```json
{
"tbt_loyalty_state": "touched",
"tbt_last_loyalty_touch": "{{formatDate(now; \"YYYY-MM-DD\")}}"
}
```

Do not skip the stamp. Without it the same gap window can fire again the next morning.

## Step 5. Test on yourself

1. Turn the outreach scenario on (instant).
2. Run the watch once with limit 1 against your own test record.
3. You should receive a broker email, a task and a note. You should not receive a client email.
4. Confirm the record is stamped `touched` with today's date.
5. Run again. You should not be drafted a second time inside seven days.
6. Set state to `opt_out`. Run again. Confirm the gate holds.

If step 5 fails, stop. Fix the stamp before anyone else is in the set.

## Step 6. Schedule and launch

1. Watch schedule: daily at 09:00 local, or weekly if you want a quieter desk. Limit 25.
2. Read `04-compliance`. All of it.
3. Read the first week of drafts end to end. Broker judgement stays human.

## Desk context (broker only)

Late August 2026: 35 lenders have cut new-money variables since 1 June; 52 offer at least one variable below 6%. That is desk context for you. It does not go into client copy as invented proof.

## Troubleshooting

| Symptom | Likely cause |
|---|---|
| Red modules after import | Fields not created yet, or wrong internal names |
| No contacts pulled | Gap below threshold, missing rates, or not marked existing client |
| Drafted twice the same week | Stamp module not writing `tbt_last_loyalty_touch` / state |
| Client got an email | You flipped `auto_email_client` to true — set it back to false |
| Invented rate in a draft | Delete it. Do not send. Check the prompt was not edited. |

## Important

This is an implementation toolkit. It is not financial, legal or compliance advice. The AI drafts. You decide.

Implementation toolkit. Not financial, legal or compliance advice. $99 AUD one-time. No strikethrough.