Skip to content

Conversation

@niravcodes
Copy link
Contributor

@niravcodes niravcodes commented Dec 22, 2025

Documentation Update Pull Request

Description

Added 10DLC/TCR webhook description as per https://github.com/signalwire/cloud-product/issues/12594

Type of Change

  • New documentation
  • Update to existing documentation

Documentation Change Details

  • Changes Summary: describe the events status callbacks.

Checklist:

  • My documentation follows the style guidelines of this project
  • I have performed a self-review of my documentation
  • My changes generate no new warnings
  • Builds successfully locally

@netlify
Copy link

netlify bot commented Dec 22, 2025

Deploy Preview for signalwire-docs ready!

Name Link
🔨 Latest commit 3540a43
🔍 Latest deploy log https://app.netlify.com/projects/signalwire-docs/deploys/69529326b8d79400087e27f5
😎 Deploy Preview https://deploy-preview-760--signalwire-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 36 (🔴 down 8 from production)
Accessibility: 91 (no change from production)
Best Practices: 92 (no change from production)
SEO: 89 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@niravcodes
Copy link
Contributor Author

Updated based on notes from Eng (thanks @cassieemb)

Event Categories

EVENT_CATEGORIES = [
  CAMPAIGN_EVENT = "campaign",
  BRAND_EVENT = "brand",
  NUMBER_ASSIGNMENT_EVENT = "number_assignment",
  NUMBER_ASSIGNMENT_ORDER_EVENT = "number_assignment_order",
]

Campaign Events

CAMPAIGN_MESSAGING_PROVIDER_MIGRATED is internal-only and not customer-facing. Customers are not exposed to underlying messaging providers.

CAMPAIGN_EVENT_TYPES = [
  CAMPAIGN_ACTIVATED = "campaign_activated",
  CAMPAIGN_DEACTIVATED = "campaign_deactivated",
  CAMPAIGN_MESSAGING_PROVIDER_MIGRATED = "messaging_provider_migrated",
]

Campaign Activated (pending → active)

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:11:25Z",
  :event_category=>"campaign",
  :event_type=>"campaign_activated",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :campaign_id=>"224ac3bb-9173-43c8-8cee-873c35cf9701",
  :state=>"active"
}

Campaign Deactivated (active → inactive)

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:11:25Z",
  :event_category=>"campaign",
  :event_type=>"campaign_deactivated",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :campaign_id=>"224ac3bb-9273-43c8-8cee-873c35cf9701",
  :state=>"inactive"
}

Brand Events

There are two brand event types:

BRAND_EVENT_TYPES = [
  BRAND_ACTIVATED = "brand_activated",
  BRAND_UNVERIFIED = "brand_unverified",
]

Brand Activated

Represents a transition from pending → active or unverified → active.

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:09:40Z",
  :event_category=>"brand",
  :event_type=>"brand_activated",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :state=>"completed"
}

Brand Unverified

Represents a transition from pending → unverified.

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:09:40Z",
  :event_category=>"brand",
  :event_type=>"brand_unverified",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :state=>"unverified"
}

Number Assignment Order Events

There is one number assignment order event.

Number Assignment Order Processed

Occurs only after all assignments in the order have been processed (either completed or failed).

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:11:49Z",
  :event_category=>"number_assignment_order",
  :event_type=>"number_assignment_order_processed",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :campaign_id=>"224ac3bb-9173-43c8-8cee-873c35cf9701",
  :number_assignment_order_id=>"a4894c34-eace-4561-9a2d-2f2c2bf7856c",
  :state=>"processed"
}

Number Assignment Events

There are four number assignment event types, but ASSIGNMENT_MESSAGING_PROVIDER_MIGRATED is internal-only and not exposed.

NUMBER_ASSIGNMENT_EVENT_TYPES = [
  ASSIGNMENT_PENDING = "number_assignment_pending",
  ASSIGNMENT_FAILED = "number_assignment_failed",
  ASSIGNMENT_ACTIVATED = "number_assignment_activated",
  ASSIGNMENT_MESSAGING_PROVIDER_MIGRATED = "messaging_provider_migrated",
]

Number Assignment Pending

Only occurs when a failed assignment is changed back to pending due to internal resubmission.

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:11:49Z",
  :event_category=>"number_assignment",
  :event_type=>"number_assignment_pending",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :campaign_id=>"224ac3bb-9173-43c8-8cee-873c35cf9701",
  :number_assignment_order_id=>"a4894c34-eace-4561-9a2d-2f2c2bf7856c",
  :number_assignment_id=>"0fc3189d-2008-472f-af7e-1bdc316d718a",
  :phone_number_id=>"cfa3a91e-a584-42ca-b0b5-612a971e873d",
  :phone_number=>"+15550101234",
  :state=>"pending"
}

Number Assignment Failed (pending → failed)

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:11:49Z",
  :event_category=>"number_assignment",
  :event_type=>"number_assignment_failed",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :campaign_id=>"224ac3bb-9173-43c8-8cee-873c35cf9701",
  :number_assignment_order_id=>"a4894c34-eace-4561-9a2d-2f2c2bf7856c",
  :number_assignment_id=>"0fc3189d-2008-472f-af7e-1bdc316d718a",
  :phone_number_id=>"cfa3a91e-a584-42ca-b0b5-612a971e873d",
  :phone_number=>"+15550101234",
  :state=>"failed"
}

Number Assignment Activated (pending → active)

{
  :project_id=>"014f540d-d524-4739-b7ad-35af0372b7f3",
  :event_at=>"2024-06-27T19:11:49Z",
  :event_category=>"number_assignment",
  :event_type=>"number_assignment_activated",
  :brand_id=>"cf2b56f7-b143-4ad5-b80c-152e6779b981",
  :campaign_id=>"224ac3bb-9173-43c8-8cee-873c35cf9701",
  :number_assignment_order_id=>"a4894c34-eace-4561-9a2d-2f2c2bf7856c",
  :number_assignment_id=>"0fc3189d-2008-472f-af7e-1bdc316d718a",
  :phone_number_id=>"cfa3a91e-a584-42ca-b0b5-612a971e873d",
  :phone_number=>"+15550101234",
  :state=>"completed"
}

Notes

  • Number assignments cannot be created individually; they are always created as part of a number assignment order.
  • As a result, assignment URLs are inherited from the order they belong to.
  • Subscribing to number assignment order events allows you to receive:
    • Status updates for each assignment in the order
    • A final event for the order itself once processing is complete

@niravcodes niravcodes merged commit 852151d into main Dec 29, 2025
5 checks passed
@niravcodes niravcodes deleted the nko/callback branch December 29, 2025 15:03
hey-august added a commit that referenced this pull request Jan 5, 2026
Co-authored-by: August <112662403+hey-august@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants