CRM 10 · ActivePipe · Bridge

ActivePipe. The Sheet is the CRM.

Import the Google Sheets bridge watch as scenario 01, plus the outreach blueprint. Do not import the HubSpot watch and try to point it at ActivePipe. ActivePipe is a marketing list — a newsletter subscriber is not a loyalty-tax client.

Bridgev1.0Five TBT fieldsGap default 25 bps$99 AUD once

← All 12 CRMs · Make guide · Zapier guide

Connection type: Sheets bridge. Export settled clients that have a current rate and a new-money / retention reference. Keep column headers exact.

Copy 05-templates/Google-Sheet-Bridge-template.csv into a new Google Sheet. Keep the header row. Name the first tab Loyalty tax (that is what the watch looks for — rename the tab or change the module to match).

  1. Paste settled clients only. Map onto the canonical headers. existing_client must be TRUE. source_crm = activepipe.
  2. Fill tbt_current_rate, tbt_new_money_rate, tbt_loyalty_gap_bps (current − new-money) × 100. Seed tbt_loyalty_state as due.
  3. Map ActivePipe’s own unsubscribe list onto email_optout before the first run.
  4. Share the Sheet with the Google account you will connect to Make / Zapier.
Column headers are the API

If you rename tbt_loyalty_gap_bps to Gap, module 1 finds nobody. The TEST-YOU row is the one you run first.

Fields for this CRM

Create the ones marked YES. Map the ones you already store. Do not invent a second current-rate field.

PurposeCanonicalThis CRMRequiredCreate?
Contact IDcontact_idcontact_idYesNo
First namefirst_namefirst_nameYesNo
Last namelast_namelast_nameNoNo
EmailemailemailYesNo
MobilemobilemobileRecommendedNo
Current ratetbt_current_ratetbt_current_rateYesMap or create
New-money ratetbt_new_money_ratetbt_new_money_rateYesYES - create or maintain
Loyalty gap (bps)tbt_loyalty_gap_bpstbt_loyalty_gap_bpsYesYES - create / compute
LenderlenderlenderRecommendedNo
Product nameproduct_nameproduct_nameRecommendedNo
Existing client flagexisting_clientexisting_clientYesMap
Email opt-outemail_optoutemail_optoutYesNo
Loyalty statetbt_loyalty_statetbt_loyalty_stateYesYES - create this
Last loyalty touchtbt_last_loyalty_touchtbt_last_loyalty_touchYesYES - create this
Broker ownerbroker_ownerbroker_ownerRecommendedNo
Broker emailbroker_emailbroker_emailYesSet in the watch

Full translation and notes: 05-templates/CRM-Field-Map.csv. Gap is in basis points. Example: current 6.40 and new-money 5.90 is a 50 bps gap. Default watch threshold is 25 bps.

Make — watch file to import

Import 02-make-blueprints/01e-TBT-Loyalty-Tax-Watch-GoogleSheets-Bridge.blueprint.json.

Import this file — not the HubSpot watch. Connect Google Sheets. Pick the spreadsheet. Sheet name defaults to Loyalty tax. Paste the outreach webhook URL. Replace broker placeholders. Leave auto_email_client false.

Everyone also imports 02-make-blueprints/02-TBT-Loyalty-Tax-Outreach.blueprint.json. Import outreach first so you have the webhook URL. Walkthrough: MAKE-Setup-Guide.html.

Make — last-step swap

On the outreach scenario, modules 7, 8 and 9 are HTTP placeholders labelled SWAP. Replace them. The middle (consent, gap gate ≥ 25 bps, OpenAI, broker Gmail) does not change.

Outreach moduleSwap for
7 · Create the broker task — SWAPThere is no ActivePipe task module in this pack. Keep the broker Gmail (already in blueprint 02) as the task. Optionally append a row to a Write-back tab: contact_id, title, stamp.
8 · Write the CRM note — SWAPOptional: Google Sheets → Add a row on a Write-back tab with {{3.crm_note}}. Re-import into ActivePipe only if you need the marketing list annotated. Honouring opt_out on the Sheet is not optional.
9 · Stamp loyalty touch — SWAPGoogle Sheets → Update a row on the Loyalty tax tab. Set tbt_loyalty_state = touched and tbt_last_loyalty_touch = today. Match on contact_id. Do not skip.

Stamp body (use this CRM’s field names from the table):

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

Zapier — first module and last three

Zapier cannot import a Make blueprint. Build two Zaps by hand. Full click-path: ZAPIER-Setup-Guide.html. This page is the CRM-specific first and last steps only.

WhereWhat
Zap A · first moduleSchedule by Zapier (daily 09:00) + Google Sheets Lookup Spreadsheet Rows (or New Spreadsheet Row if you append). Filter existing_client TRUE, gap ≥ 25, state not opt_out / touched. Then Webhooks → POST canonical keys to Zap B. Set crm from source_crm or activepipe.
Zap B stepModule
B6 TaskSkip a native ActivePipe task. The broker Gmail in Zap B is the task. Optional: Google Sheets Create Spreadsheet Row on a Write-back tab.
B7 NoteOptional Sheets write-back of crm_note. Add a CRM note in ActivePipe by hand that week if you need it on the file.
B8 StampGoogle Sheets → Update Spreadsheet Row. tbt_loyalty_state = touched, tbt_last_loyalty_touch = today. Lookup key = contact_id.

Zap A then POSTs the canonical keys (see the field-map Canonical column) to Zap B’s Catch Hook. Leave auto_email_client as false. Replace [YOUR BROKER EMAIL], [YOUR FIRST NAME], [YOUR BUSINESS NAME].

Fallback — Google Sheets bridge (01e)

This bridge is the path. If you later get a different CRM with native access, swap to that watch. Until then, stay on 01e.

T Test on yourself before any live send

  1. Create yourself as a settled existing-client test record with a real email you read, a current variable rate, a new-money / retention reference, and tbt_loyalty_gap_bps at or above 25. State due or queued. Last touch empty.
  2. Run the watch (Make scenario 01, or Zap A) with a limit of 1, filtered to only this record.
  3. Confirm the broker email arrives. Confirm you did not get a client email. auto_email_client stays false.
  4. Confirm the broker task, the CRM note (or sheet write-back), and the stamp: state touched, last touch = today.
  5. Run again the same day. The engine must not draft you a second time. Then set state to opt_out and run again — must not draft.

If the stamp fails, stop. Fix it before anyone else is in the set. After the loop is proven on you, you may flip auto_email_client — not before. Read 04-compliance first.