Follow Up Boss API Client
A comprehensive Python client library for the Follow Up Boss API, providing easy access to all Follow Up Boss endpoints with full type safety and thorough documentation.
Features
- Complete API Coverage: Support for all Follow Up Boss API endpoints
- Type Safety: Full type hints throughout the library
- Easy to Use: Simple, intuitive interface
- Well Documented: Comprehensive docstrings and examples
- Async Support: Built with modern Python async/await patterns
- Error Handling: Robust error handling and validation
- Extensible: Easy to extend for custom use cases
Installation
pip install follow-up-boss
Quick Start
from follow_up_boss import FollowUpBossApiClient
client = FollowUpBossApiClient(
api_key="your_api_key",
x_system="Your-System-Name",
x_system_key="your_system_key"
)
people = client.people.get_all()
new_person = client.people.create({
"name": "John Doe",
"email": "john@example.com",
"phone": "555-123-4567"
})
updated_person = client.people.update(person_id, {
"name": "John Smith"
})
client.people.delete(person_id)
Environment Variables
You can also configure the client using environment variables:
FOLLOW_UP_BOSS_API_KEY=your_api_key
X_SYSTEM=Your-System-Name
X_SYSTEM_KEY=your_system_key
from follow_up_boss import FollowUpBossApiClient
client = FollowUpBossApiClient()
API Resources
The client provides access to all Follow Up Boss API resources:
Core Resources
- People: Manage contacts and leads
- Deals: Track real estate transactions (Commission Field Guide)
- Events: Handle activities and interactions
- Tasks: Manage todo items and follow-ups
- Notes: Add and retrieve notes
- Appointments: Schedule and manage appointments
Communication
- Text Messages: Send and receive SMS
- Email Templates: Manage email templates
- Text Message Templates: Manage SMS templates
- Webhooks: Configure webhook endpoints
- Reactions: Handle message reactions
Organization
- Teams: Manage team structures
- Users: Handle user accounts
- Groups: Organize contacts into groups
- Pipelines: Manage sales pipelines
- Stages: Configure pipeline stages
- Smart Lists: Dynamic contact lists
Configuration
- Custom Fields: Define custom data fields
- Action Plans: Automated workflow templates
- Appointment Types: Configure appointment categories
- Appointment Outcomes: Track appointment results
Attachments & Files
- Person Attachments: File attachments for contacts
- Deal Attachments: File attachments for deals
Deals API - Commission Fields
The Deals API includes special handling for commission fields. Important: Commission fields must be passed as top-level parameters, not in custom_fields
.
from follow_up_boss import Deals, DealsValidationError
deals_api = Deals(client)
deal = deals_api.create_deal(
name="123 Main Street",
stage_id=26,
price=450000,
commissionValue=13500.0,
agentCommission=9450.0,
teamCommission=4050.0
)
try:
deal = deals_api.create_deal(
name="Deal Name",
stage_id=26,
custom_fields={'commissionValue': 13500}
)
except DealsValidationError as e:
print(f"Validation error: {e}")
Commission Helper Methods
commission_data = {
'total': 15000.0,
'agent': 10500.0,
'team': 4500.0
}
updated_deal = deals_api.set_deal_commission(deal_id, commission_data)
For complete commission field documentation, see the Commission Field Guide.
Advanced Usage
Error Handling
from follow_up_boss import FollowUpBossApiClient
from follow_up_boss.exceptions import ApiError, AuthenticationError
try:
client = FollowUpBossApiClient(api_key="invalid_key")
people = client.people.get_all()
except AuthenticationError:
print("Invalid API credentials")
except ApiError as e:
print(f"API Error: {e}")
all_people = []
page = 1
while True:
response = client.people.get_all(page=page, limit=100)
people = response.get('people', [])
if not people:
break
all_people.extend(people)
page += 1
client = FollowUpBossApiClient(
api_key="your_key",
custom_headers={
"X-Custom-Header": "custom_value"
}
)
Development
Setup
git clone https://github.com/theperrygroup/follow-up-boss.git
cd follow-up-boss
pip install -e ".[dev]"
Running Tests
pytest
Code Formatting
black follow_up_boss tests
isort follow_up_boss tests
Type Checking
mypy follow_up_boss
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
)
- Make your changes
- Add tests for your changes
- Ensure all tests pass (
pytest
)
- Format your code (
black
and isort
)
- Commit your changes (
git commit -m 'Add amazing feature'
)
- Push to the branch (
git push origin feature/amazing-feature
)
- Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For questions, issues, or feature requests, please:
Changelog
Version 0.2.0
- Major Commission Field Improvements: Added comprehensive commission field handling with validation
- Enhanced Error Messages: Context-specific error guidance for common mistakes
- New Validation System:
DealsValidationError
for deals-specific validation
- Commission Helper Methods:
set_deal_commission()
for easier commission management
- Field Name Normalization: Consistent field naming between requests and responses
- Comprehensive Documentation: New commission field guide with examples and troubleshooting
- Enhanced Testing: Complete test coverage for all commission field scenarios
- Improved Developer Experience: Better error messages, helper properties, and validation
Version 0.1.2
- Removed appointment test log file logging
Version 0.1.1
Version 0.1.0
- Initial release
- Complete API coverage for all Follow Up Boss endpoints
- Full type safety with comprehensive type hints
- Comprehensive test suite
- Documentation and examples
Related Projects
Made with ❤️ by The Perry Group