🚧 ClickFunnels Ruby SDK (unofficial) - WIP 🚧
A simple, dynamic Ruby SDK for the ClickFunnels API with support for all endpoints and operations mostly generated by Claude Code.
🚧 Before using in prod, this client will need additional fixing and testing. Let the authors know if you would like to use it to accelerate. 🚧
Quick Start Testing
# Or jump straight to IRB with pre-configured environment
bundle exec irb -r ./irb_test.rb
Installation
Add this line to your application's Gemfile:
gem "clickfunnels-ruby-sdk"
And then execute:
$ bundle install
Or install it yourself as:
$ gem install clickfunnels-ruby-sdk
Configuration
Configure the SDK with your ClickFunnels subdomain and API token:
CF.configure do |config|
config.subdomain = "myaccount" # Your ClickFunnels subdomain
config.api_token = "your_bearer_token" # Your API token
config.workspace_id = "ws_123" # Default workspace ID (optional)
config.team_id = "team_456" # Default team ID (optional)
config.debug = true # Enable debug logging (optional)
config.timeout = 60 # Request timeout in seconds (optional)
end
Usage
The SDK provides dynamic access to all ClickFunnels API endpoints following the same structure as documented in the API.
Basic CRUD Operations
# List resources
CF::Orders::Invoice.list
# Get a specific resource
CF::Orders::Invoice.get(123)
# Create a new resource
CF::Orders::Invoice.create(amount: 100, currency: "USD")
# Update a resource
CF::Orders::Invoice.update(123, status: "paid")
# Delete a resource
CF::Orders::Invoice.delete(123)
🆕 Workspace-Nested Resources
# Using default workspace_id from configuration
CF::Workspaces::Contact.list
CF::Workspaces::Contact.get(123)
CF::Workspaces::Contact.create(email: "[email protected]", name: "John Doe")
# Override workspace_id for specific requests
CF::Workspaces::Contact.list(workspace_id: "different_workspace")
CF::Workspaces::Contact.create(
{ email: "[email protected]" },
{ workspace_id: "custom_workspace" }
)
Pagination
Use cursor-based pagination with after
and before
parameters:
# Get invoices after a specific ID
CF::Orders::Invoice.list(after: { id: 123 })
# Get invoices before a specific ID
CF::Orders::Invoice.list(before: { id: 456 })
Filtering
Apply filters to list operations:
# Filter by status
CF::Orders::Invoice.list(filter: { status: "paid" })
# Filter by multiple values
CF::Orders::Invoice.list(filter: { id: [1, 2, 3] })
# Multiple filters
CF::Orders::Invoice.list(filter: { status: "paid", currency: "USD" })
Sorting
Sort results using sort_property
and sort_order
:
CF::Orders::Invoice.list(
sort_property: "created_at",
sort_order: "desc"
)
Debug Logging
Enable debug logging to see all HTTP requests and responses:
CF.configure do |config|
config.debug = true
# Logs will be written to cf_sdk.log by default
end
# Or provide your own logger
CF.configure do |config|
config.debug = true
config.logger = Logger.new(STDOUT)
end
Error Handling
The SDK returns error objects instead of raising exceptions.
Testing
Run Test Suite
bundle exec rake test
Interactive Testing
Default IRB Test Environment (Recommended):
bundle exec irb -r ./irb_test.rb
This loads a pre-configured test environment with:
- ✅ All new features enabled
- ✅ Sample configuration with default workspace/team IDs
- ✅ Resource examples and usage tips
- ✅ Path generation demonstrations
Manual IRB Setup:
bundle exec irb -r ./lib/cf
Then configure manually:
CF.configure do |config|
config.subdomain = "your_subdomain"
config.api_token = "your_token"
config.workspace_id = "your_workspace_id" # Optional default
config.debug = true
end
# Test the new features
CF::Workspaces::Contact.list
CF::Orders::Invoice.list
CF::Users.list
Contributing
Bug reports and pull requests are welcome on GitHub.
License
The gem is available as open source under the terms of the MIT License.