A PHP library for WordPress that provides a clean wrapper around the LeadDocket REST API v1. Covers all available endpoints across every resource group, with built-in transient caching and a consistent response object.
- PHP 7.4+
- WordPress 5.0+
- A LeadDocket account with an API key (Admin → Settings → API Key)
Drop wp-leaddocket-api.php into your plugin or theme and include it:
require_once plugin_dir_path( __FILE__ ) . 'wp-leaddocket-api.php';$ld = new WP_LeadDocket_API(
'https://yourfirm.leaddocket.com',
'YOUR_API_KEY'
);
$res = $ld->get_lead( 123 );
if ( $res->ok() ) {
$lead = $res->data();
} else {
error_log( $res->error_message() );
}Every method returns a WP_LeadDocket_Response with four methods:
| Method | Returns | Description |
|---|---|---|
ok() |
bool |
true if HTTP 2xx and no connection error |
data() |
array|string|null |
Decoded JSON response body |
status() |
int |
HTTP status code (0 on connection error) |
error_message() |
string|null |
Error description, or null on success |
is_cached() |
bool |
true if response was served from cache |
GET requests are cached using WordPress transients. The default TTL is 5 minutes.
// Change the TTL (in seconds)
$ld->cache_ttl = 60;
// Disable caching entirely
$ld->cache_ttl = 0;
// Bypass cache for a single call
$res = $ld->get_statuses( true );
$res = $ld->get_lead( 123, true );
// Clear all cached responses
$ld->flush_cache();$ld->get_leads( $params, $bypass_cache )
$ld->get_lead( $id, $bypass_cache )
$ld->get_lead_basic( $id, $bypass_cache )
$ld->get_lead_detailed( $id, $params, $bypass_cache )
$ld->update_lead( $id, $data )
$ld->get_lead_by_code( $params, $bypass_cache )
$ld->get_lead_by_opportunity_id( $params, $bypass_cache )
$ld->get_leads_pending_export_ids( $params, $bypass_cache )
$ld->get_leads_last_status_change_since( $params, $bypass_cache )
$ld->get_leads_last_updated_since( $params, $bypass_cache )
$ld->update_lead_code( $data )
$ld->update_lead_custom_field( $data )
$ld->get_lead_custom_field( $params, $bypass_cache )
$ld->update_lead_custom_fields( $data )
$ld->mark_lead_as_processed( $data )
$ld->add_lead_related_contact( $data )
$ld->update_lead_role_user( $data )$ld->change_lead_status( $id, $data )
$ld->advance_lead_substatus( $id, $data )$ld->add_lead_note( $id, $data )
$ld->update_lead_note( $id, $note_id, $data )
$ld->delete_lead_note( $id, $note_id )$ld->schedule_lead_appointment( $id, $data )$ld->upload_lead_file( $id, $data )
$ld->get_lead_file_upload_url( $id, $data )
$ld->finalize_lead_file_upload( $id, $file_id, $data )
$ld->associate_lead_file_with_field( $id, $file_id, $field_id, $data )
$ld->download_lead_file( $id, $bypass_cache )$ld->get_lead_forms( $params, $bypass_cache )
$ld->create_lead_form( $data )
$ld->get_lead_form( $id, $bypass_cache )
$ld->update_lead_form( $id, $data )
$ld->delete_lead_form( $id )
$ld->add_lead_form_field( $id, $data )
$ld->update_lead_form_field( $id, $field_id, $data )
$ld->delete_lead_form_field( $id, $field_id )
$ld->delete_lead_form_fields( $id, $params )
$ld->get_lead_form_invitations( $lead_id, $bypass_cache )
$ld->create_lead_form_invitation( $lead_id, $data )$ld->get_lead_collection_sections( $lead_id, $bypass_cache )
$ld->add_lead_collection_section_entry( $lead_id, $section_id, $data )
$ld->update_lead_collection_section_entry( $lead_id, $section_id, $data )
$ld->delete_lead_collection_section_entry( $lead_id, $section_id, $data )$ld->create_contact( $data )
$ld->get_contact( $id, $bypass_cache )
$ld->update_contact( $id, $data )
$ld->get_contact_by_code( $params, $bypass_cache )
$ld->search_contacts( $params, $bypass_cache )
$ld->update_contact_code( $data )
$ld->update_contact_custom_fields( $data )
$ld->check_contact_recent_by_phone( $params, $bypass_cache )
$ld->get_contacts_last_updated_since( $params, $bypass_cache )
$ld->add_contact_tag( $id, $tag_id )
$ld->delete_contact_tag( $id, $contact_tag_id )
$ld->get_contact_custom_fields( $bypass_cache )$ld->get_opportunity( $id, $bypass_cache )
$ld->get_opportunities_created_since( $params, $bypass_cache )
$ld->get_opportunities_last_updated_since( $params, $bypass_cache )
$ld->get_opportunities_unprocessed( $params, $bypass_cache )
$ld->append_opportunity_note( $data )
$ld->clear_opportunity_note( $data )
$ld->disregard_opportunity( $data )
$ld->lock_opportunity( $data )
$ld->unlock_opportunity( $data )$ld->create_referral( $data )
$ld->get_referral( $id, $bypass_cache )
$ld->update_referral( $id, $data )
$ld->delete_referral( $id )
$ld->get_referral_by_external_code( $params, $bypass_cache )
$ld->get_referrals( $params, $bypass_cache )
$ld->update_referral_code( $data )
$ld->update_referral_external_code( $data )
$ld->get_referral_groups( $bypass_cache )
$ld->get_referral_practice_areas( $bypass_cache )$ld->create_settlement( $data )
$ld->get_settlement( $id, $bypass_cache )
$ld->get_settlements_by_lead( $lead_id, $bypass_cache )$ld->create_task( $data )
$ld->get_task( $id, $bypass_cache )
$ld->update_task( $data )
$ld->delete_task( $id )
$ld->get_lead_tasks( $lead_id, $bypass_cache )
$ld->complete_task( $id )$ld->get_statuses( $bypass_cache )
$ld->create_status( $data )
$ld->get_status( $id, $bypass_cache )
$ld->update_status( $id, $data )
$ld->create_substatus( $status_id, $data )
$ld->update_substatus( $status_id, $substatus_id, $data )
$ld->delete_substatus( $status_id, $substatus_id )$ld->create_message( $data )
$ld->send_text_message( $data )
$ld->send_email_message( $data )$ld->create_expense( $data )
$ld->get_expense( $id, $bypass_cache )
$ld->get_expenses( $params, $bypass_cache )
$ld->delete_expense( $id )$ld->start_external_call( $data )
$ld->end_external_call( $data )
$ld->get_external_call( $id, $bypass_cache )
$ld->get_external_call_recording( $id, $bypass_cache )
$ld->get_external_call_transcription( $id, $bypass_cache )$ld->get_lead_roles( $bypass_cache )
$ld->delete_lead_role( $id )$ld->get_lead_sources( $bypass_cache )$ld->get_custom_fields( $bypass_cache )$ld->get_lookup_types( $bypass_cache )
$ld->get_lookups( $params, $bypass_cache )$ld->get_users( $params, $bypass_cache )
$ld->get_user( $id, $bypass_cache )
$ld->get_users_by_role( $params, $bypass_cache )
$ld->get_user_by_code( $code, $bypass_cache )
$ld->get_user_by_filevine_id( $id, $bypass_cache )$ld->get_settings_options( $bypass_cache )// For third-party form integrations — uses webhook URL, not the API key
$ld->push_lead_webhook( $webhook_url, $data )You can call any endpoint directly via request() if you need something not covered by a named method:
$res = $ld->request( 'GET', '/api/leads', [ 'statusId' => 2 ] );
$res = $ld->request( 'POST', '/api/leads/456/notes', [], [ 'note' => 'Called client.' ] );MIT