Skip to main content

CallTrackingCampaign Model

The CallTrackingCampaign model represents a marketing campaign that attributes inbound calls to sources, mediums, and individual tracking numbers. Campaigns can route calls to an external forward number or to existing OPBX destinations.

Table: call_tracking_campaigns
Model: App\Models\CallTrackingCampaign
Resource: App\Http\Resources\CallTrackingCampaignResource

Database Schema

ColumnTypeNullableDefaultDescription
idbigint unsignedNoautoPrimary key
organization_idbigint unsignedNo-Foreign key to organizations
namevarchar(255)No-Campaign name (unique per organization)
sourcevarchar(100)YesnullMarketing source (e.g. utm_source)
mediumvarchar(100)YesnullMarketing medium (e.g. utm_medium)
descriptiontextYesnullCampaign description
statusvarchar(20)NoactiveCampaign status enum
destination_typevarchar(50)NoforwardDestination type enum
destination_configjsonNo-Destination-specific configuration
conversion_rulejsonYesnullConversion rule configuration
google_ads_upload_enabledbooleanNofalseEnable Google Ads conversion upload
meta_upload_enabledbooleanNofalseEnable Meta conversion upload
created_attimestampYesnullCreation timestamp
updated_attimestampYesnullLast update timestamp

Destination Configuration

The required key inside destination_config depends on destination_type:

destination_typeRequired KeyExample Value
forwardforward_to+14155551212
extensionextension_id5
ring_groupring_group_id3
business_hoursbusiness_hours_schedule_id2
conference_roomconference_room_id4
ivr_menuivr_menu_id6
ai_assistantai_assistant_id7
ai_load_balancerai_load_balancer_id8

Conversion Rule

conversion_rule is a JSON object that defines when a session counts as converted:

FieldTypeDescription
min_answered_duration_secondsintegerMinimum answered duration for conversion
requires_answered_dispositionbooleanWhether the call must be answered
conversion_valuenumberMonetary value of a conversion

Relationships

Belongs To

campaign.organization() → Organization

Has Many

campaign.trackingNumbers() → CallTrackingNumber[]
campaign.sessions() → CallTrackingSession[]
campaign.notificationSettings() → CallTrackingNotificationSettings
campaign.notificationLogs() → CallTrackingNotificationLog[]

Enums

CallTrackingCampaignStatus

CaseValue
ACTIVEactive
INACTIVEinactive

CallTrackingDestinationType

CaseValue
FORWARDforward
EXTENSIONextension
RING_GROUPring_group
BUSINESS_HOURSbusiness_hours
CONFERENCE_ROOMconference_room
IVR_MENUivr_menu
AI_ASSISTANTai_assistant
AI_LOAD_BALANCERai_load_balancer

Methods

Scopes

CallTrackingCampaign::forOrganization($orgId)
CallTrackingCampaign::active()
CallTrackingCampaign::inactive()

Business Logic

$campaign->isActive(): bool