Skip to content

feat(follow-up-boss): add Follow Up Boss integration - #247

Open
RishadAlam wants to merge 4 commits into
mainfrom
feat/follow-up-boss-integration
Open

RishadAlam wants to merge 4 commits into
mainfrom
feat/follow-up-boss-integration

Conversation

@RishadAlam

Copy link
Copy Markdown
Member

Pull Request

Description

Adds Follow Up Boss as a Bit Integrations action with 62 write actions. The free plugin owns the connection, the dropdown lists and the screens. The actions run in Pro: https://github.com/bit-apps-pro/bit-integrations-pro/pull/167

Motivation & Context

Follow Up Boss is a real-estate CRM. This ports the Bit Flows Follow Up Boss integration (bit-apps-pro/bit-pi#887). Only write actions are ported (create, update, delete, log, apply, add, remove). Get, list, find and merge actions only return data, so they are left out. Bit Flows has no Follow Up Boss triggers: webhooks need a registered Follow Up Boss system key.

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 💥 Breaking change
  • 📚 Documentation update
  • ⚡ Improvement
  • 🔄 Code refactor

Key Changes

Backend (backend/Actions/FollowUpBoss)

  • Added FollowUpBossController.
    • $authConfig is basic auth: the API key is the username, and the password stays empty.
    • The API client uses https://api.followupboss.com/v1.
    • Thirteen dropdown routes: users, stage names, stages, ponds, timeframes, action plans, appointment types, appointment outcomes, pipeline stages, email campaigns, teams, groups and person custom fields. Each follows the next link for up to 500 records.
    • Missing record keys are skipped, so one odd record cannot break the dropdown response.
  • Added RecordApiHelper: one switch case per action fires its own follow_up_boss_* hook, then calls LogHandler::save. Each hook receives the dropdown settings only when the action has dropdowns or utilities.

Frontend (AllIntegrations/FollowUpBoss)

  • Added the connection form. It uses the shared basic-auth Authorization with allowEmptyPassword and checks the key on /identity.
  • Added staticData.js, generated from the Bit Flows machines.
    • Field maps hold the person ID and the ID of the record an action changes, plus free text.
    • Users, stages, ponds, timeframes, action plans, appointment types and outcomes, pipeline stages, campaigns, teams and groups are fetched dropdowns.
    • Enums are fixed selects, and yes/no options are Utilities.
    • Dropdown keys never use framework keys such as type or status (event_type, task_type, field_type, group_type, plan_status).
    • Person custom fields can be added as field-map rows, with a refresh button.
  • Added notes that explain list fields, date formats, update behaviour and the actions that need an owner or admin key.
  • Added registration in NewInteg (with the "Follow Up Boss" title), EditInteg, IntegInfo, SelectAction and tutorialLinks, plus a 128px logo.

Testing

  • Connected through the UI with a real Follow Up Boss API key and an empty password.
  • All 13 dropdown routes returned live data. The email campaign list needed two pages (106 records).
  • Tested as a user would: built a Contact Form 7 → Follow Up Boss flow in the wizard, then reconfigured it in the edit screen for each action (action, dropdowns, field map, custom values, utilities, Update). Each action ran from a real Contact Form 7 submission, and I checked every flow log.
    • All 42 create, update, log, apply and add actions succeeded live. IDs were chained from earlier actions into later ones.
    • Person custom fields were set through the field map.
  • Checked the results in the Follow Up Boss dashboard: person, relationship, tags, stage, timeframe, note and call with reaction, event, tasks, appointment, deal, action plan.
  • The 20 delete and remove actions were not run live, because the test account must keep its records. They ran through the real Free → Pro path with the HTTP requests captured, and they send the right method, path and reassignment parameters.
  • eslint is clean. Prettier is clean on the new files. PHP lint and the PHP 7.4 compatibility check pass.

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Tests added/updated
  • Documentation updated if needed
  • README updated if needed

Changelog

  • New Actions (62):
    • Follow Up Boss (62)

Controller with basic auth (API key as username), dropdown routes that follow the
next page link, and a RecordApiHelper that fires one Pro hook per write action.
62 Pro write actions. Record IDs and free text are mapped fields, fixed lists
and fetched records are dropdowns, yes/no options are utilities, and person
custom fields can be added to the field map.
- Show Follow Up Boss as the wizard title
- Add a refresh button for person custom fields in the field map
- Require a campaign name, and explain applied action plan IDs, the stage
  for action plans and the owner or admin key that some actions need
- Say that update checkboxes keep the current value when left clear
- Guard dropdown labels against missing keys
Copilot AI balanced review requested due to automatic review settings October 29, 2026 05:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@github-actions

Copy link
Copy Markdown

🔍 WordPress Plugin Check Report

⚠️ Status: Passed with warnings

📊 Report

🎯 Total Issues ❌ Errors ⚠️ Warnings
1 0 1

⚠️ Warnings (1)

📁 readme.txt (1 warning)
📍 Line 🔖 Check 💬 Message
0 mismatched_plugin_name Plugin name "Bit integrations - Form Integration, Webhook, Spreadsheets, CRM, LMS & Email Automation" is different from the name declared in plugin header "Bit Integrations".

🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

The Assigned Lender select listed every user, so picking a Broker failed with
"this user is not a lender". A new follow_up_boss_get_lenders route fetches
/users?role=Lender for Create Person and Update Person.

The person notes now say to select either Assigned User or Assigned Pond,
because Follow Up Boss rejects both together.
Copilot AI balanced review requested due to automatic review settings November 5, 2026 06:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants